Extended database and refactored to enable export

This commit is contained in:
2023-01-14 00:19:43 -07:00
parent cf910aed64
commit 1acd9ae025
+32 -6
View File
@@ -14,6 +14,10 @@ import (
var log = logging.MustGetLogger("cursorius-server")
type Database struct {
Conn *pgx.Conn
}
func LaunchDB(conf config.DBConfig) error {
dbURL := fmt.Sprintf(
@@ -33,13 +37,13 @@ func LaunchDB(conf config.DBConfig) error {
conf.Name,
)
var conn *pgx.Conn
db := Database{}
var err error
for i := 0; i < 10; i++ {
log.Infof("Connecting to database with URL \"%v\" (attempt %v)", dbURLNoPasswd, i)
conn, err = pgx.Connect(context.Background(), dbURL)
db.Conn, err = pgx.Connect(context.Background(), dbURL)
if err == nil {
defer conn.Close(context.Background())
break
}
time.Sleep(2 * time.Second)
@@ -58,7 +62,7 @@ SELECT EXISTS (
);`
var versionTableExists bool
err = conn.QueryRow(context.Background(), versionTableExistsQuery).Scan(&versionTableExists)
err = db.Conn.QueryRow(context.Background(), versionTableExistsQuery).Scan(&versionTableExists)
if err != nil {
return fmt.Errorf("Could not check if database was initalized: %w", err)
}
@@ -67,7 +71,7 @@ SELECT EXISTS (
// TODO: migrations
} else {
log.Info("New database found, initializing....")
err = initDB(conn)
err = initDB(db.Conn)
if err != nil {
return fmt.Errorf("Could not initalize database: %w", err)
}
@@ -104,7 +108,29 @@ CREATE TABLE runners (
id SERIAL PRIMARY KEY,
name TEXT,
secret TEXT
);`
);
CREATE TABLE runs (
id SERIAL PRIMARY KEY
);
CREATE TABLE command_executions (
id SERIAL PRIMARY KEY,
run_id SERIAL,
command TEXT,
return_code TEXT,
stdout TEXT,
stderr TEXT,
start_time TIMESTAMP,
end_time TIMESTAMP,
CONSTRAINT fk_run_id
FOREIGN KEY(run_id)
REFERENCES runs(id)
);
`
_, err := conn.Exec(context.Background(), createTablesQuery)
if err != nil {