From 03519908c8a2726478081e66a0afd9354551d744 Mon Sep 17 00:00:00 2001 From: Haelnorr Date: Wed, 19 Feb 2025 21:55:36 +1100 Subject: [PATCH] Added goose for migrations --- config/config.go | 2 +- go.mod | 2 +- go.sum | 4 ++-- migrations/00001_init.sql | 24 ++++++++++++++++++++++++ 4 files changed, 28 insertions(+), 4 deletions(-) create mode 100644 migrations/00001_init.sql diff --git a/config/config.go b/config/config.go index 562907c..3358dfd 100644 --- a/config/config.go +++ b/config/config.go @@ -87,7 +87,7 @@ func GetConfig(args map[string]string) (*Config, error) { ReadHeaderTimeout: GetEnvDur("READ_HEADER_TIMEOUT", 2), WriteTimeout: GetEnvDur("WRITE_TIMEOUT", 10), IdleTimeout: GetEnvDur("IDLE_TIMEOUT", 120), - DBName: "0.1.0", + DBName: "00001", DBLockTimeout: GetEnvDur("DB_LOCK_TIMEOUT", 60), SecretKey: os.Getenv("SECRET_KEY"), AccessTokenExpiry: GetEnvInt64("ACCESS_TOKEN_EXPIRY", 5), diff --git a/go.mod b/go.mod index 0852a78..9b690b1 100644 --- a/go.mod +++ b/go.mod @@ -22,7 +22,7 @@ require ( github.com/ncruces/go-strftime v0.1.9 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec // indirect - golang.org/x/exp v0.0.0-20230315142452-642cacee5cc0 // indirect + golang.org/x/exp v0.0.0-20240325151524-a685a6edb6d8 // indirect golang.org/x/sync v0.11.0 // indirect golang.org/x/sys v0.30.0 // indirect gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect diff --git a/go.sum b/go.sum index 9206c36..a402861 100644 --- a/go.sum +++ b/go.sum @@ -43,8 +43,8 @@ github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOf github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= golang.org/x/crypto v0.33.0 h1:IOBPskki6Lysi0lo9qQvbxiQ+FvsCC/YWOecCHAixus= golang.org/x/crypto v0.33.0/go.mod h1:bVdXmD7IV/4GdElGPozy6U7lWdRXA4qyRVGJV57uQ5M= -golang.org/x/exp v0.0.0-20230315142452-642cacee5cc0 h1:pVgRXcIictcr+lBQIFeiwuwtDIs4eL21OuM9nyAADmo= -golang.org/x/exp v0.0.0-20230315142452-642cacee5cc0/go.mod h1:CxIveKay+FTh1D0yPZemJVgC/95VzuuOLq5Qi4xnoYc= +golang.org/x/exp v0.0.0-20240325151524-a685a6edb6d8 h1:aAcj0Da7eBAtrTp03QXWvm88pSyOt+UgdZw2BFZ+lEw= +golang.org/x/exp v0.0.0-20240325151524-a685a6edb6d8/go.mod h1:CQ1k9gNrJ50XIzaKCRR2hssIjF07kZFEiieALBM/ARQ= golang.org/x/mod v0.20.0 h1:utOm6MM3R3dnawAiJgn0y+xvuYRsm1RKM/4giyfDgV0= golang.org/x/mod v0.20.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/sync v0.11.0 h1:GGz8+XQP4FvTTrjZPzNKTMFtSXH80RAzG+5ghFPgK9w= diff --git a/migrations/00001_init.sql b/migrations/00001_init.sql new file mode 100644 index 0000000..a3bab95 --- /dev/null +++ b/migrations/00001_init.sql @@ -0,0 +1,24 @@ +-- +goose Up +-- +goose StatementBegin +PRAGMA foreign_keys=ON; +CREATE TABLE IF NOT EXISTS jwtblacklist ( +jti TEXT PRIMARY KEY CHECK(jti GLOB '[0-9a-fA-F-]*'), +exp INTEGER NOT NULL +) STRICT; +CREATE TABLE IF NOT EXISTS "users" ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + username TEXT NOT NULL UNIQUE, + password_hash TEXT DEFAULT "", + created_at INTEGER DEFAULT (unixepoch()), + bio TEXT DEFAULT "" +) STRICT; +CREATE TRIGGER cleanup_expired_tokens +AFTER INSERT ON jwtblacklist +BEGIN +DELETE FROM jwtblacklist WHERE exp < strftime('%s', 'now'); +END; +-- +goose StatementEnd + +-- +goose Down +-- +goose StatementBegin +-- +goose StatementEnd