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")
|
var log = logging.MustGetLogger("cursorius-server")
|
||||||
|
|
||||||
|
type Database struct {
|
||||||
|
Conn *pgx.Conn
|
||||||
|
}
|
||||||
|
|
||||||
func LaunchDB(conf config.DBConfig) error {
|
func LaunchDB(conf config.DBConfig) error {
|
||||||
|
|
||||||
dbURL := fmt.Sprintf(
|
dbURL := fmt.Sprintf(
|
||||||
@@ -33,13 +37,13 @@ func LaunchDB(conf config.DBConfig) error {
|
|||||||
conf.Name,
|
conf.Name,
|
||||||
)
|
)
|
||||||
|
|
||||||
var conn *pgx.Conn
|
db := Database{}
|
||||||
|
|
||||||
var err error
|
var err error
|
||||||
for i := 0; i < 10; i++ {
|
for i := 0; i < 10; i++ {
|
||||||
log.Infof("Connecting to database with URL \"%v\" (attempt %v)", dbURLNoPasswd, 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 {
|
if err == nil {
|
||||||
defer conn.Close(context.Background())
|
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
time.Sleep(2 * time.Second)
|
time.Sleep(2 * time.Second)
|
||||||
@@ -58,7 +62,7 @@ SELECT EXISTS (
|
|||||||
);`
|
);`
|
||||||
|
|
||||||
var versionTableExists bool
|
var versionTableExists bool
|
||||||
err = conn.QueryRow(context.Background(), versionTableExistsQuery).Scan(&versionTableExists)
|
err = db.Conn.QueryRow(context.Background(), versionTableExistsQuery).Scan(&versionTableExists)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("Could not check if database was initalized: %w", err)
|
return fmt.Errorf("Could not check if database was initalized: %w", err)
|
||||||
}
|
}
|
||||||
@@ -67,7 +71,7 @@ SELECT EXISTS (
|
|||||||
// TODO: migrations
|
// TODO: migrations
|
||||||
} else {
|
} else {
|
||||||
log.Info("New database found, initializing....")
|
log.Info("New database found, initializing....")
|
||||||
err = initDB(conn)
|
err = initDB(db.Conn)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("Could not initalize database: %w", err)
|
return fmt.Errorf("Could not initalize database: %w", err)
|
||||||
}
|
}
|
||||||
@@ -104,7 +108,29 @@ CREATE TABLE runners (
|
|||||||
id SERIAL PRIMARY KEY,
|
id SERIAL PRIMARY KEY,
|
||||||
name TEXT,
|
name TEXT,
|
||||||
secret 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)
|
_, err := conn.Exec(context.Background(), createTablesQuery)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
Reference in New Issue
Block a user