CoreStore: A standard library for e-commerce | WIP (Work in Progress)
based on an optimized Magento 2 database structure.
Magento is a trademark of MAGENTO, INC..
Min. Go Version: 1.11
Usage
To properly use the CoreStore packages, some environment variables must be set
before running go generate
. (TODO)
Required settings
CS_DSN
the environment variable for the MySQL connection.
$ export CS_DSN='username:pa55w0rd@tcp(localhost:3306)/databaseName?parseTime=true&loc=UTC&collation=utf8mb4_unicode_ci'
$ go get github.com/corestoreio/pkg
$ export CS_DSN='see previous'
$ cd $GOPATH/src/github.com/corestoreio/pkg
$ xgo run xcodegen/tableToStruct/*.go
Testing
Setup database for Magento 2 and fill them with the provided testdata.
Create a DSN env var CS_DSN
and point it to Magento 2 database. Run the tests.
TODO
If you find an entry in the source like TODO(CS)
that means you can ask CS
to get more information about how to implement and what to fix if the context of
the todo description isn't understandable.
- Create Magento 2 modules to setup test database and test Magento system.
Details
-
single repo. CoreStore is a single repo. That means things can be changed and rearranged globally atomically with ease and confidence.
-
no backwards compatibility. CoreStore makes no backwards compatibility promises. If you want to use CoreStore, vendor it. And next time you update your vendor tree, update to the latest API if things in CoreStore changed. The plan is to eventually provide tools to make this easier.
-
forward progress because we have no backwards compatibility, it's always okay to change things to make things better. That also means the bar for contributions is lower. We don't have to get the API 100% correct in the first commit.
-
no Go version policy CoreStore packages are usually built and tested with the latest Go stable version. However, CoreStore has no overarching version policy; each package can declare its own set of supported Go versions.
-
code review contributions must be code-reviewed.
-
CLA compliant contributors must agree to the CLA.
-
docs, tests, portability all code should be documented in the normal Go style, have tests, and be portable to different operating systems and architectures. We'll try to get builders in place to help run the tests on different OS/arches. For now we have Travis at least.
Contributing
Please have a look at the contribution guidelines That document is an idea.
Acknowledgements
Some packages have been fully refactored but the initial idea has been extracted from the geniuses listed below:
Name | Package | License |
---|---|---|
Steve Francia | util/conv | MIT Copyright (c) 2014 |
Martin Angers and Contributors. | ctxthrottled | The MIT License (MIT) 2014 |
Dave Cheney | util/errors | The MIT License (MIT) 2015 |
Jad Dittmar | finance aka. money | Copyright (c) 2011 |
Google Inc | youtube/vitess\sqlparser | Copyright 2012 BSD Style |
Olivier Poitrey | ctxmw.WithAccessLog & CORS | Copyright (c) 2014-2015 MIT License |
Dave Grijalva | csjwt | Copyright (c) 2012 MIT License |
Uber Technologies, Inc. | log | Copyright (c) 2016 MIT License |
2013 The Go Authors | singleflight | Copyright (c) 2013 BSD Style |
Carl Jackson ([email protected]) (Goji) | net/responseproxy | Copyright (c) 2014, 2015, 2016 |
Greg Roseberry, 2014; Patrick O'Brien, 2016 | util/null | BSD Copyright (c) 2014, 2015, 2016 |
The Go-MySQL-Driver Authors | storage/null/time_mysql.go | Mozilla Public License, v. 2.0, Copyright 2012 |
siddontang | storage/binlogsync | MIT Copyright (c) 2014 |
siddontang | storage/myreplicator | MIT Copyright (c) 2014 |
Tace De Wolf | util/byteconv | MIT Copyright (c) 2015 |
Copyright 2013 The Camlistore Authors | util/byteconv | Apache 2.0 |
Copyright 2013 Google Inc. | storage/lru | Apache 2.0 |
Alex Saskevich | util/validation | MIT Copyright (c) 2014 |
Mat Ryer and Tyler Bunnell | util/assert or github.com/stretchr/testify | Copyright (c) 2012 - 2013 |
Google Youtube | storage/lru | Apache License, Version 2.0 |
Iman Tumorang | util/pseudo | Copyright (c) 2017 Iman Tumorang |
Dmitry Afanasyev | util/pseudo | Copyright (c) 2014 Dmitry Afanasyev |
Michal Witkowski | net/csgrpc/auth | Copyright (c) 2016 Michal Witkowski, Apache 2 |
go-pg/pg Authors | sql/urlvalues | Copyright (c) 2013 MIT |
Licensing
CoreStore is licensed under the Apache License, Version 2.0. See LICENSE for the full license text.