summaryrefslogtreecommitdiff
path: root/golang/pkg/database
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--golang/pkg/database/db.go19
-rw-r--r--golang/pkg/database/migrations.go16
-rw-r--r--golang/pkg/database/sql/000_init.sql6
-rw-r--r--golang/pkg/database/tokens.go7
4 files changed, 35 insertions, 13 deletions
diff --git a/golang/pkg/database/db.go b/golang/pkg/database/db.go
new file mode 100644
index 0000000..3e07db3
--- /dev/null
+++ b/golang/pkg/database/db.go
@@ -0,0 +1,19 @@
+package database
+
+import (
+ "context"
+ "database/sql"
+)
+
+type DB struct {
+ ctx context.Context
+ db *sql.DB
+}
+
+func (db *DB) Exec(query string, args ...any) (sql.Result, error) {
+ return db.db.ExecContext(db.ctx, query, args...)
+}
+
+func (db *DB) QueryRow(query string, args ...any) *sql.Row {
+ return db.db.QueryRowContext(db.ctx, query, args...)
+}
diff --git a/golang/pkg/database/migrations.go b/golang/pkg/database/migrations.go
index 94207a5..b167087 100644
--- a/golang/pkg/database/migrations.go
+++ b/golang/pkg/database/migrations.go
@@ -9,11 +9,6 @@ import (
_ "github.com/mattn/go-sqlite3"
)
-type DB struct {
- ctx context.Context
- db *sql.DB
-}
-
//go:embed sql/*.sql
var schemaFiles embed.FS
@@ -61,15 +56,22 @@ func DBInit(ctx context.Context, url string) (myDB *DB, err error) {
return nil, err
}
+ tx, err := db.Begin()
+ if err != nil {
+ return nil, err
+ }
for version < len(statements) {
- if _, err = db.ExecContext(ctx, statements[version]); err != nil {
+ if _, err = tx.ExecContext(ctx, statements[version]); err != nil {
+ tx.Rollback()
return nil, err
}
version++
}
- if _, err = db.ExecContext(ctx, `DELETE FROM schema_version; INSERT INTO schema_version (version) VALUES (?);`, version); err != nil {
+ if _, err = tx.ExecContext(ctx, `DELETE FROM schema_version; INSERT INTO schema_version (version) VALUES (?);`, version); err != nil {
+ tx.Rollback()
return nil, err
}
+ tx.Commit()
return &DB{ctx: ctx, db: db}, nil
}
diff --git a/golang/pkg/database/sql/000_init.sql b/golang/pkg/database/sql/000_init.sql
index c06d2d3..bd92821 100644
--- a/golang/pkg/database/sql/000_init.sql
+++ b/golang/pkg/database/sql/000_init.sql
@@ -1,7 +1,7 @@
CREATE TABLE schema_version (
- version INTEGER NOT NULL
+ version INTEGER NOT NULL
);
CREATE TABLE tokens (
- id INTEGER PRIMARY KEY,
- data TEXT NOT NULL
+ id INTEGER PRIMARY KEY,
+ data TEXT NOT NULL
);
diff --git a/golang/pkg/database/tokens.go b/golang/pkg/database/tokens.go
index 0787b5c..0356cb2 100644
--- a/golang/pkg/database/tokens.go
+++ b/golang/pkg/database/tokens.go
@@ -1,11 +1,12 @@
package database
func (db *DB) AddToken(token string) error {
- _, err := db.db.ExecContext(db.ctx, `INSERT INTO tokens(data) VALUES (?);`, token)
+ _, err := db.Exec(`INSERT INTO tokens(data) VALUES (?);`, token)
return err
}
-func (db *DB) GetToken() (token string, err error) {
- err = db.db.QueryRowContext(db.ctx, `SELECT data FROM tokens;`).Scan(&token)
+func (db *DB) GetToken() (string, error) {
+ var token string
+ err := db.QueryRow(`SELECT data FROM tokens;`).Scan(&token)
return token, err
}