Storage aggregator, managing multiple files from various storage provider
- Transport layer
- rest
- Database
- mysql
- Config
- system environment
- file (config/*.toml and .env)
- Unit test
This particular command should test individual component and run really fast without the need of involving 3rd party dependencies such as database, disk, etc.
$ make test-unit
$ make test-watch-unit
- Integration test
This particular command should test the integration between component, might run slowly and sometimes need to involving 3rd party dependencies such as database, disk, etc.
$ make test-integration
$ make test-watch-integration
- Coverage test
This command should run all the test available on this project.
$ make test
$ make test-coverage
- REST App
$ make run-restapp
$ make build-restapp
TBA
-
Copy
.env.example
to.env
-
Create docker compose
$ docker-compose up -d
- MySQL Migration
$ make migrate-mysql-create [args] # args e.g: migrate-mysql-create file-table
$ make migrate-mysql [args] # args e.g: migrate-mysql up
- Run setup
$ ./development/mysql/replication.sh
- Devs: Observability
- prometheus (metric exporter)
- Devs: Monitoring
- grafana data visualization
- Devs: Tracing
- open telemetry (https://opentelemetry.io/)
- Admin: Backup File
- Devs: Goseidon SDK (golang, js, php)
- Devs: Middleware (mux, fiber, echo, gin)
- Devs: Repository provider (mongo, postgres)
- Client: Retrieve image
- Image manipulation capability (width, height, compression)
- Client: Upload rule (size, extension, mimetype)
- scrape mimetypes & extension from: https://mimetype.io/all-types
- rule is required
- rule may have no attribute (free rule)
- rule may have multiple attribute
- if rule have multiple attribute than it's mean we're matching at least one rule (or clause)
- Client: Upload Rule (resolution)
- Devs: Caching support
- Devs: Add dead letter exchange & queue for
proceed_file_replication
queue - Unit test: storage multipart test
- Unit test: app NewDefaultConfig
- Gorm not inserting has many association, issue since [email protected] ref. Current solution is to use [email protected], [email protected], [email protected]
- Make sure X-Correlation-Id is in a string data type and not greater than 128 char length