From 5eda23ed5d2547ed63af7a763d36dff1191747f0 Mon Sep 17 00:00:00 2001 From: Victor Lacasse-Beaudoin Date: Mon, 16 Sep 2024 14:36:51 -0400 Subject: [PATCH 1/5] fix(Dockerfile): retirer prefix cgo --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index ea6e9a3..6a9997a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -13,7 +13,7 @@ ADD models/ models/ ADD responses/ responses/ ADD web/ web/ -RUN CGO_ENABLED=0 go build -a -installsuffix cgo -o bottin-agenda . +RUN CGO_ENABLED=0 go build -a -o bottin-agenda . # Alpine From 40dcd82e542a5802600cc24024b0ae964239ce4a Mon Sep 17 00:00:00 2001 From: Victor Lacasse-Beaudoin Date: Mon, 16 Sep 2024 14:42:32 -0400 Subject: [PATCH 2/5] =?UTF-8?q?refactor:=20d=C3=A9placer=20schema=20vers?= =?UTF-8?q?=20sql/schema.sql=20et=20sql.Schema()?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Dockerfile | 1 + data/dataclient.go | 3 ++- models/models.go | 9 --------- sql/schema.sql | 7 +++++++ sql/sql.go | 10 ++++++++++ 5 files changed, 20 insertions(+), 10 deletions(-) create mode 100644 sql/schema.sql create mode 100644 sql/sql.go diff --git a/Dockerfile b/Dockerfile index 6a9997a..6090d72 100644 --- a/Dockerfile +++ b/Dockerfile @@ -11,6 +11,7 @@ ADD data/ data/ ADD handlers/ handlers/ ADD models/ models/ ADD responses/ responses/ +ADD sql/ sql/ ADD web/ web/ RUN CGO_ENABLED=0 go build -a -o bottin-agenda . diff --git a/data/dataclient.go b/data/dataclient.go index 92c1de0..df6fe32 100644 --- a/data/dataclient.go +++ b/data/dataclient.go @@ -5,6 +5,7 @@ import ( "fmt" "git.agecem.com/agecem/bottin-agenda/models" + "git.agecem.com/agecem/bottin-agenda/sql" _ "github.com/jackc/pgx/stdlib" "github.com/jmoiron/sqlx" "github.com/spf13/viper" @@ -59,7 +60,7 @@ func NewDataClient(connection PostgresConnection) (*DataClient, error) { } func (d *DataClient) Seed() (int64, error) { - result, err := d.DB.Exec(models.Schema) + result, err := d.DB.Exec(sql.Schema()) if err != nil { return 0, err } diff --git a/models/models.go b/models/models.go index f3e6858..96f5ca3 100644 --- a/models/models.go +++ b/models/models.go @@ -2,15 +2,6 @@ package models import "time" -var Schema = ` -CREATE TABLE IF NOT EXISTS transactions ( - id BIGINT PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - membre_id VARCHAR(7), - given_at TIMESTAMP, - is_perpetual BOOLEAN -); -` - type Transaction struct { ID string `db:"id" json:"id"` MembreID string `db:"membre_id" json:"membre_id"` diff --git a/sql/schema.sql b/sql/schema.sql new file mode 100644 index 0000000..9cf1a31 --- /dev/null +++ b/sql/schema.sql @@ -0,0 +1,7 @@ +-- Schema +CREATE TABLE IF NOT EXISTS transactions ( + id BIGINT PRIMARY KEY GENERATED ALWAYS AS IDENTITY, + membre_id VARCHAR(7) NOT NULL, + given_at TIMESTAMP DEFAULT current_timestamp, + is_perpetual BOOLEAN NOT NULL +); diff --git a/sql/sql.go b/sql/sql.go new file mode 100644 index 0000000..c38ad80 --- /dev/null +++ b/sql/sql.go @@ -0,0 +1,10 @@ +package sql + +import _ "embed" + +//go:embed schema.sql +var schema string + +func Schema() string { + return schema +} From 3646ea5aec282481806d80cfae46ac94aa810c26 Mon Sep 17 00:00:00 2001 From: Victor Lacasse-Beaudoin Date: Mon, 16 Sep 2024 14:49:56 -0400 Subject: [PATCH 3/5] =?UTF-8?q?format(db):=20a=C3=A9rer=20et=20standardise?= =?UTF-8?q?r=20requ=C3=AAtes=20SQL=20dans=20DataClient?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- data/dataclient.go | 39 +++++++++++++++++++++++++++++++++++---- 1 file changed, 35 insertions(+), 4 deletions(-) diff --git a/data/dataclient.go b/data/dataclient.go index df6fe32..c4be53e 100644 --- a/data/dataclient.go +++ b/data/dataclient.go @@ -90,7 +90,24 @@ func (d *DataClient) InsertTransactions(transactions []models.Transaction) ([]mo return rowsInserted, errors.New("Impossible d'insérer une transaction sans membre_id") } - rows, err := tx.NamedQuery("INSERT INTO transactions (membre_id, given_at, is_perpetual) VALUES (:membre_id, current_timestamp, :is_perpetual) RETURNING id, membre_id, is_perpetual;", &transaction) + rows, err := tx.NamedQuery(` +INSERT INTO + transactions ( + membre_id, + given_at, + is_perpetual + ) +VALUES + ( + :membre_id, + current_timestamp, + :is_perpetual + ) +RETURNING + id, + membre_id, + is_perpetual; +`, &transaction) if err != nil { return rowsInserted, err } @@ -117,8 +134,16 @@ func (d *DataClient) InsertTransactions(transactions []models.Transaction) ([]mo func (d *DataClient) GetTransaction(membreID string, is_perpetual bool) (models.Transaction, error) { var transaction models.Transaction - //err := d.DB.NamedQuery("SELECT * FROM transactions WHERE membre_id=:membre_id AND is_perpetual=:is_perpetual LIMIT 1;" - err := d.DB.Get(&transaction, "SELECT * FROM transactions WHERE membre_id = $1 AND is_perpetual = $2 LIMIT 1;", membreID, is_perpetual) + err := d.DB.Get(&transaction, ` +SELECT + * +FROM + transactions +WHERE + membre_id = $1 AND + is_perpetual = $2 +LIMIT 1; +`, membreID, is_perpetual) if err != nil { return transaction, err } @@ -132,7 +157,13 @@ func (d *DataClient) GetTransaction(membreID string, is_perpetual bool) (models. func (d *DataClient) ListTransactions() ([]models.Transaction, error) { var transactions []models.Transaction - if err := d.DB.Select(&transactions, "SELECT * FROM transactions LIMIT 20000;"); err != nil { + if err := d.DB.Select(&transactions, ` +SELECT + * +FROM + transactions +LIMIT 20000; +`); err != nil { return transactions, err } From 70b0f4152a2cc62dbecf28f98ea364b8ef66129d Mon Sep 17 00:00:00 2001 From: Victor Lacasse-Beaudoin Date: Mon, 16 Sep 2024 15:01:32 -0400 Subject: [PATCH 4/5] fix: noms de flags pour infos DB et inject .env dans containers --- README.md | 6 +++--- docker-compose.yaml | 8 +++++--- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 9df143d..657eca4 100644 --- a/README.md +++ b/README.md @@ -10,9 +10,9 @@ Nécessite une installation fonctionnelle et accessible de [agecem/bottin](https Remplir .env avec données d'environnement: ``` -BOTTINAGENDA_POSTGRES_DATABASE=bottin-agenda -BOTTINAGENDA_POSTGRES_PASSWORD=bottin-agenda -BOTTINAGENDA_POSTGRES_USER=bottin-agenda +BOTTINAGENDA_DB_DATABASE=bottin-agenda +BOTTINAGENDA_DB_PASSWORD=bottin-agenda +BOTTINAGENDA_DB_USER=bottin-agenda ``` Déployer avec docker-compose: diff --git a/docker-compose.yaml b/docker-compose.yaml index f1f7c4f..ad4380e 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -3,9 +3,9 @@ services: db: image: 'docker.io/library/postgres:16.1' environment: - POSTGRES_DATABASE: "${BOTTINAGENDA_POSTGRES_DATABASE}" - POSTGRES_PASSWORD: "${BOTTINAGENDA_POSTGRES_PASSWORD}" - POSTGRES_USER: "${BOTTINAGENDA_POSTGRES_USER}" + POSTGRES_DATABASE: "${BOTTINAGENDA_DB_DATABASE:?}" + POSTGRES_PASSWORD: "${BOTTINAGENDA_DB_PASSWORD:?}" + POSTGRES_USER: "${BOTTINAGENDA_DB_USER:?}" volumes: - 'db-data:/var/lib/postgresql/data' restart: 'unless-stopped' @@ -14,6 +14,7 @@ services: depends_on: - db build: . + env_file: '.env' image: 'git.agecem.com/agecem/bottin-agenda:latest' ports: - '1313:1313' @@ -26,6 +27,7 @@ services: depends_on: - api build: . + env_file: '.env' image: 'git.agecem.com/agecem/bottin-agenda:latest' ports: - '2313:2313' From fcd2d39ddec6b6a70a6e55b04f189b594cb42e73 Mon Sep 17 00:00:00 2001 From: Victor Lacasse-Beaudoin Date: Mon, 16 Sep 2024 15:23:55 -0400 Subject: [PATCH 5/5] chores(Dockerfile): bump go -> 1.23.1 --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 6090d72..a44e239 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM golang:1.21.4 as build +FROM golang:1.23.1 as build LABEL author="vlbeaudoin"