diff --git a/Dockerfile b/Dockerfile index a44e239..ea6e9a3 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM golang:1.23.1 as build +FROM golang:1.21.4 as build LABEL author="vlbeaudoin" @@ -11,10 +11,9 @@ 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 . +RUN CGO_ENABLED=0 go build -a -installsuffix cgo -o bottin-agenda . # Alpine diff --git a/README.md b/README.md index 657eca4..9df143d 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_DB_DATABASE=bottin-agenda -BOTTINAGENDA_DB_PASSWORD=bottin-agenda -BOTTINAGENDA_DB_USER=bottin-agenda +BOTTINAGENDA_POSTGRES_DATABASE=bottin-agenda +BOTTINAGENDA_POSTGRES_PASSWORD=bottin-agenda +BOTTINAGENDA_POSTGRES_USER=bottin-agenda ``` Déployer avec docker-compose: diff --git a/data/dataclient.go b/data/dataclient.go index c4be53e..92c1de0 100644 --- a/data/dataclient.go +++ b/data/dataclient.go @@ -5,7 +5,6 @@ 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" @@ -60,7 +59,7 @@ func NewDataClient(connection PostgresConnection) (*DataClient, error) { } func (d *DataClient) Seed() (int64, error) { - result, err := d.DB.Exec(sql.Schema()) + result, err := d.DB.Exec(models.Schema) if err != nil { return 0, err } @@ -90,24 +89,7 @@ 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 } @@ -134,16 +116,8 @@ RETURNING func (d *DataClient) GetTransaction(membreID string, is_perpetual bool) (models.Transaction, error) { var transaction models.Transaction - err := d.DB.Get(&transaction, ` -SELECT - * -FROM - transactions -WHERE - membre_id = $1 AND - is_perpetual = $2 -LIMIT 1; -`, membreID, is_perpetual) + //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) if err != nil { return transaction, err } @@ -157,13 +131,7 @@ LIMIT 1; 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 } diff --git a/docker-compose.yaml b/docker-compose.yaml index ad4380e..f1f7c4f 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_DB_DATABASE:?}" - POSTGRES_PASSWORD: "${BOTTINAGENDA_DB_PASSWORD:?}" - POSTGRES_USER: "${BOTTINAGENDA_DB_USER:?}" + POSTGRES_DATABASE: "${BOTTINAGENDA_POSTGRES_DATABASE}" + POSTGRES_PASSWORD: "${BOTTINAGENDA_POSTGRES_PASSWORD}" + POSTGRES_USER: "${BOTTINAGENDA_POSTGRES_USER}" volumes: - 'db-data:/var/lib/postgresql/data' restart: 'unless-stopped' @@ -14,7 +14,6 @@ services: depends_on: - db build: . - env_file: '.env' image: 'git.agecem.com/agecem/bottin-agenda:latest' ports: - '1313:1313' @@ -27,7 +26,6 @@ services: depends_on: - api build: . - env_file: '.env' image: 'git.agecem.com/agecem/bottin-agenda:latest' ports: - '2313:2313' diff --git a/models/models.go b/models/models.go index 96f5ca3..f3e6858 100644 --- a/models/models.go +++ b/models/models.go @@ -2,6 +2,15 @@ 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 deleted file mode 100644 index 9cf1a31..0000000 --- a/sql/schema.sql +++ /dev/null @@ -1,7 +0,0 @@ --- 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 deleted file mode 100644 index c38ad80..0000000 --- a/sql/sql.go +++ /dev/null @@ -1,10 +0,0 @@ -package sql - -import _ "embed" - -//go:embed schema.sql -var schema string - -func Schema() string { - return schema -}