├── .github └── workflows │ ├── lint-tests.yml │ └── release-please.yml ├── .gitignore ├── .golangci.yaml ├── CHANGELOG.md ├── LICENSE ├── README.md ├── api ├── context │ └── context.go ├── handler │ ├── handler.go │ ├── ride.go │ └── ride_test.go ├── middleware │ ├── error.go │ ├── idemkey.go │ ├── idemkey_test.go │ ├── originip.go │ ├── user.go │ └── user_test.go └── module.go ├── app.env.sample ├── app.http ├── cmd └── api │ ├── main.go │ └── main_test.go ├── datastore ├── audit_record.go ├── audit_record_test.go ├── idempotency_key.go ├── idempotency_key_test.go ├── ride.go ├── ride_test.go ├── staged_job.go ├── staged_job_test.go ├── uow │ ├── uow.go │ └── uow_test.go ├── user.go └── user_test.go ├── db ├── README.md ├── fixtures │ ├── idempotency_keys │ │ └── idempotency_keys.yaml │ ├── local │ │ └── users.yaml │ ├── rides │ │ └── rides.yaml │ └── users │ │ └── users.yaml └── migrations │ ├── 000001_idempotency_keys.up.sql │ ├── 000002_users.up.sql │ ├── 000003_audit.up.sql │ ├── 000004_rides.up.sql │ └── 000005_jobs.up.sql ├── docker-compose.yaml ├── entity ├── audit │ └── audit.go ├── audit_record.go ├── errors.go ├── idempotency │ └── idempotency.go ├── idempotency_key.go ├── originip │ └── origin_ip.go ├── ride.go ├── staged_job.go ├── stagedjob │ └── staged_job.go └── user.go ├── go.mod ├── go.sum ├── mocks ├── datastore │ ├── AuditRecord.go │ ├── IdempotencyKey.go │ ├── Ride.go │ ├── StagedJob.go │ ├── UnitOfWork.go │ ├── UnitOfWorkBlock.go │ ├── UnitOfWorkStore.go │ └── User.go └── usecase │ └── Ride.go ├── pkg ├── config │ └── config.go ├── data │ ├── crud.go │ └── crud_test.go ├── db │ └── postgres.go ├── httpserver │ ├── fx.go │ └── server.go ├── migrate │ └── postgresql.go ├── stripemock │ └── stripe.go ├── testcontainer │ └── postgresql.go └── testfixtures │ └── postgresql.go ├── taskfile.yml ├── taskfile_db.yml ├── taskfile_test.yml └── usecase ├── ride.go └── ride_test.go /.github/workflows/lint-tests.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafael-piovesan/go-rocket-ride/HEAD/.github/workflows/lint-tests.yml -------------------------------------------------------------------------------- /.github/workflows/release-please.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafael-piovesan/go-rocket-ride/HEAD/.github/workflows/release-please.yml -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafael-piovesan/go-rocket-ride/HEAD/.gitignore -------------------------------------------------------------------------------- /.golangci.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafael-piovesan/go-rocket-ride/HEAD/.golangci.yaml -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafael-piovesan/go-rocket-ride/HEAD/CHANGELOG.md -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafael-piovesan/go-rocket-ride/HEAD/LICENSE -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafael-piovesan/go-rocket-ride/HEAD/README.md -------------------------------------------------------------------------------- /api/context/context.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafael-piovesan/go-rocket-ride/HEAD/api/context/context.go -------------------------------------------------------------------------------- /api/handler/handler.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafael-piovesan/go-rocket-ride/HEAD/api/handler/handler.go -------------------------------------------------------------------------------- /api/handler/ride.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafael-piovesan/go-rocket-ride/HEAD/api/handler/ride.go -------------------------------------------------------------------------------- /api/handler/ride_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafael-piovesan/go-rocket-ride/HEAD/api/handler/ride_test.go -------------------------------------------------------------------------------- /api/middleware/error.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafael-piovesan/go-rocket-ride/HEAD/api/middleware/error.go -------------------------------------------------------------------------------- /api/middleware/idemkey.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafael-piovesan/go-rocket-ride/HEAD/api/middleware/idemkey.go -------------------------------------------------------------------------------- /api/middleware/idemkey_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafael-piovesan/go-rocket-ride/HEAD/api/middleware/idemkey_test.go -------------------------------------------------------------------------------- /api/middleware/originip.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafael-piovesan/go-rocket-ride/HEAD/api/middleware/originip.go -------------------------------------------------------------------------------- /api/middleware/user.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafael-piovesan/go-rocket-ride/HEAD/api/middleware/user.go -------------------------------------------------------------------------------- /api/middleware/user_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafael-piovesan/go-rocket-ride/HEAD/api/middleware/user_test.go -------------------------------------------------------------------------------- /api/module.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafael-piovesan/go-rocket-ride/HEAD/api/module.go -------------------------------------------------------------------------------- /app.env.sample: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafael-piovesan/go-rocket-ride/HEAD/app.env.sample -------------------------------------------------------------------------------- /app.http: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafael-piovesan/go-rocket-ride/HEAD/app.http -------------------------------------------------------------------------------- /cmd/api/main.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafael-piovesan/go-rocket-ride/HEAD/cmd/api/main.go -------------------------------------------------------------------------------- /cmd/api/main_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafael-piovesan/go-rocket-ride/HEAD/cmd/api/main_test.go -------------------------------------------------------------------------------- /datastore/audit_record.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafael-piovesan/go-rocket-ride/HEAD/datastore/audit_record.go -------------------------------------------------------------------------------- /datastore/audit_record_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafael-piovesan/go-rocket-ride/HEAD/datastore/audit_record_test.go -------------------------------------------------------------------------------- /datastore/idempotency_key.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafael-piovesan/go-rocket-ride/HEAD/datastore/idempotency_key.go -------------------------------------------------------------------------------- /datastore/idempotency_key_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafael-piovesan/go-rocket-ride/HEAD/datastore/idempotency_key_test.go -------------------------------------------------------------------------------- /datastore/ride.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafael-piovesan/go-rocket-ride/HEAD/datastore/ride.go -------------------------------------------------------------------------------- /datastore/ride_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafael-piovesan/go-rocket-ride/HEAD/datastore/ride_test.go -------------------------------------------------------------------------------- /datastore/staged_job.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafael-piovesan/go-rocket-ride/HEAD/datastore/staged_job.go -------------------------------------------------------------------------------- /datastore/staged_job_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafael-piovesan/go-rocket-ride/HEAD/datastore/staged_job_test.go -------------------------------------------------------------------------------- /datastore/uow/uow.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafael-piovesan/go-rocket-ride/HEAD/datastore/uow/uow.go -------------------------------------------------------------------------------- /datastore/uow/uow_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafael-piovesan/go-rocket-ride/HEAD/datastore/uow/uow_test.go -------------------------------------------------------------------------------- /datastore/user.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafael-piovesan/go-rocket-ride/HEAD/datastore/user.go -------------------------------------------------------------------------------- /datastore/user_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafael-piovesan/go-rocket-ride/HEAD/datastore/user_test.go -------------------------------------------------------------------------------- /db/README.md: -------------------------------------------------------------------------------- 1 | All SQL schemas were extracted from: https://brandur.org/idempotency-keys -------------------------------------------------------------------------------- /db/fixtures/idempotency_keys/idempotency_keys.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafael-piovesan/go-rocket-ride/HEAD/db/fixtures/idempotency_keys/idempotency_keys.yaml -------------------------------------------------------------------------------- /db/fixtures/local/users.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafael-piovesan/go-rocket-ride/HEAD/db/fixtures/local/users.yaml -------------------------------------------------------------------------------- /db/fixtures/rides/rides.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafael-piovesan/go-rocket-ride/HEAD/db/fixtures/rides/rides.yaml -------------------------------------------------------------------------------- /db/fixtures/users/users.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafael-piovesan/go-rocket-ride/HEAD/db/fixtures/users/users.yaml -------------------------------------------------------------------------------- /db/migrations/000001_idempotency_keys.up.sql: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafael-piovesan/go-rocket-ride/HEAD/db/migrations/000001_idempotency_keys.up.sql -------------------------------------------------------------------------------- /db/migrations/000002_users.up.sql: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafael-piovesan/go-rocket-ride/HEAD/db/migrations/000002_users.up.sql -------------------------------------------------------------------------------- /db/migrations/000003_audit.up.sql: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafael-piovesan/go-rocket-ride/HEAD/db/migrations/000003_audit.up.sql -------------------------------------------------------------------------------- /db/migrations/000004_rides.up.sql: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafael-piovesan/go-rocket-ride/HEAD/db/migrations/000004_rides.up.sql -------------------------------------------------------------------------------- /db/migrations/000005_jobs.up.sql: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafael-piovesan/go-rocket-ride/HEAD/db/migrations/000005_jobs.up.sql -------------------------------------------------------------------------------- /docker-compose.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafael-piovesan/go-rocket-ride/HEAD/docker-compose.yaml -------------------------------------------------------------------------------- /entity/audit/audit.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafael-piovesan/go-rocket-ride/HEAD/entity/audit/audit.go -------------------------------------------------------------------------------- /entity/audit_record.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafael-piovesan/go-rocket-ride/HEAD/entity/audit_record.go -------------------------------------------------------------------------------- /entity/errors.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafael-piovesan/go-rocket-ride/HEAD/entity/errors.go -------------------------------------------------------------------------------- /entity/idempotency/idempotency.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafael-piovesan/go-rocket-ride/HEAD/entity/idempotency/idempotency.go -------------------------------------------------------------------------------- /entity/idempotency_key.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafael-piovesan/go-rocket-ride/HEAD/entity/idempotency_key.go -------------------------------------------------------------------------------- /entity/originip/origin_ip.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafael-piovesan/go-rocket-ride/HEAD/entity/originip/origin_ip.go -------------------------------------------------------------------------------- /entity/ride.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafael-piovesan/go-rocket-ride/HEAD/entity/ride.go -------------------------------------------------------------------------------- /entity/staged_job.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafael-piovesan/go-rocket-ride/HEAD/entity/staged_job.go -------------------------------------------------------------------------------- /entity/stagedjob/staged_job.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafael-piovesan/go-rocket-ride/HEAD/entity/stagedjob/staged_job.go -------------------------------------------------------------------------------- /entity/user.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafael-piovesan/go-rocket-ride/HEAD/entity/user.go -------------------------------------------------------------------------------- /go.mod: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafael-piovesan/go-rocket-ride/HEAD/go.mod -------------------------------------------------------------------------------- /go.sum: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafael-piovesan/go-rocket-ride/HEAD/go.sum -------------------------------------------------------------------------------- /mocks/datastore/AuditRecord.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafael-piovesan/go-rocket-ride/HEAD/mocks/datastore/AuditRecord.go -------------------------------------------------------------------------------- /mocks/datastore/IdempotencyKey.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafael-piovesan/go-rocket-ride/HEAD/mocks/datastore/IdempotencyKey.go -------------------------------------------------------------------------------- /mocks/datastore/Ride.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafael-piovesan/go-rocket-ride/HEAD/mocks/datastore/Ride.go -------------------------------------------------------------------------------- /mocks/datastore/StagedJob.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafael-piovesan/go-rocket-ride/HEAD/mocks/datastore/StagedJob.go -------------------------------------------------------------------------------- /mocks/datastore/UnitOfWork.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafael-piovesan/go-rocket-ride/HEAD/mocks/datastore/UnitOfWork.go -------------------------------------------------------------------------------- /mocks/datastore/UnitOfWorkBlock.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafael-piovesan/go-rocket-ride/HEAD/mocks/datastore/UnitOfWorkBlock.go -------------------------------------------------------------------------------- /mocks/datastore/UnitOfWorkStore.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafael-piovesan/go-rocket-ride/HEAD/mocks/datastore/UnitOfWorkStore.go -------------------------------------------------------------------------------- /mocks/datastore/User.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafael-piovesan/go-rocket-ride/HEAD/mocks/datastore/User.go -------------------------------------------------------------------------------- /mocks/usecase/Ride.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafael-piovesan/go-rocket-ride/HEAD/mocks/usecase/Ride.go -------------------------------------------------------------------------------- /pkg/config/config.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafael-piovesan/go-rocket-ride/HEAD/pkg/config/config.go -------------------------------------------------------------------------------- /pkg/data/crud.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafael-piovesan/go-rocket-ride/HEAD/pkg/data/crud.go -------------------------------------------------------------------------------- /pkg/data/crud_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafael-piovesan/go-rocket-ride/HEAD/pkg/data/crud_test.go -------------------------------------------------------------------------------- /pkg/db/postgres.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafael-piovesan/go-rocket-ride/HEAD/pkg/db/postgres.go -------------------------------------------------------------------------------- /pkg/httpserver/fx.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafael-piovesan/go-rocket-ride/HEAD/pkg/httpserver/fx.go -------------------------------------------------------------------------------- /pkg/httpserver/server.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafael-piovesan/go-rocket-ride/HEAD/pkg/httpserver/server.go -------------------------------------------------------------------------------- /pkg/migrate/postgresql.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafael-piovesan/go-rocket-ride/HEAD/pkg/migrate/postgresql.go -------------------------------------------------------------------------------- /pkg/stripemock/stripe.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafael-piovesan/go-rocket-ride/HEAD/pkg/stripemock/stripe.go -------------------------------------------------------------------------------- /pkg/testcontainer/postgresql.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafael-piovesan/go-rocket-ride/HEAD/pkg/testcontainer/postgresql.go -------------------------------------------------------------------------------- /pkg/testfixtures/postgresql.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafael-piovesan/go-rocket-ride/HEAD/pkg/testfixtures/postgresql.go -------------------------------------------------------------------------------- /taskfile.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafael-piovesan/go-rocket-ride/HEAD/taskfile.yml -------------------------------------------------------------------------------- /taskfile_db.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafael-piovesan/go-rocket-ride/HEAD/taskfile_db.yml -------------------------------------------------------------------------------- /taskfile_test.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafael-piovesan/go-rocket-ride/HEAD/taskfile_test.yml -------------------------------------------------------------------------------- /usecase/ride.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafael-piovesan/go-rocket-ride/HEAD/usecase/ride.go -------------------------------------------------------------------------------- /usecase/ride_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rafael-piovesan/go-rocket-ride/HEAD/usecase/ride_test.go --------------------------------------------------------------------------------