modulepackage
0.0.0-20240205084850-eb78a6b2d9fb
Repository: https://github.com/codewithed/go-bank-v2.git
Documentation: pkg.go.dev
# README
Simple bank service
This backend service is a simple bank. It provides APIs for the frontend to do following things:
- Create and manage bank accounts, which are composed of owner’s name, balance, and currency.
- Record all balance changes to each of the account. So every time some money is added to or subtracted from the account, an account entry record will be created.
- Perform a money transfer between 2 accounts. This should happen within a transaction, so that either both accounts’ balance are updated successfully or none of them are.
Database Schema ⚙️
Setup local development
Install tools
-
brew install golang-migrate
-
brew install sqlc
-
go install github.com/golang/mock/[email protected]
Setup infrastructure
-
Start postgres container:
make postgres
-
Create simple_bank database:
make createdb
-
Run db migration up all versions:
make migrateup
-
Run db migration up 1 version:
make migrateup1
-
Run db migration down all versions:
make migratedown
-
Run db migration down 1 version:
make migratedown1
How to generate code
-
Generate SQL CRUD with sqlc:
make sqlc
-
Generate DB mock with gomock:
make mock
-
Create a new db migration:
make new_migration name=<migration_name>
How to run
-
Run server:
make server
-
Run test:
make test