Extended database and refactored to enable export
This commit is contained in:
+32
-6
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user