changed app to use json config for pipeline steps
readme command line usage - to specify pipeline file name readme updated to include reasoning behind the project use native golang sqlite RunScriptCommand named in functionMap removed unused functions removed unused functions run script and pipeline example renamed functions to drop the word script and add pipeline verb
This commit is contained in:
parent
bd7cee720a
commit
924954d0ff
49 changed files with 2059 additions and 101 deletions
74
database/database.go
Normal file
74
database/database.go
Normal file
|
|
@ -0,0 +1,74 @@
|
|||
package database
|
||||
|
||||
import (
|
||||
"database/sql"
|
||||
"log"
|
||||
"log/slog"
|
||||
"os"
|
||||
|
||||
_ "modernc.org/sqlite"
|
||||
)
|
||||
|
||||
func NewDatabase(dbPath string) (*sql.DB, error) {
|
||||
|
||||
// Check if the application is running in a test environment
|
||||
if os.Getenv("TEST_ENV") == "true" {
|
||||
dbPath = ":memory:" // Use in-memory database for tests
|
||||
slog.Info("🧪 Running in test environment, using in-memory database")
|
||||
log.Fatal("🧪 Running in test environment, using in-memory database ")
|
||||
}
|
||||
|
||||
db, err := sql.Open("sqlite", dbPath)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
createTableSQL := `
|
||||
CREATE TABLE IF NOT EXISTS project_name (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
project_name TEXT NOT NULL,
|
||||
port INTEGER NOT NULL,
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
||||
|
||||
);`
|
||||
_, err = db.Exec(createTableSQL)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return db, nil
|
||||
}
|
||||
|
||||
func CheckProjectName(db *sql.DB, projectName string) (bool, error) {
|
||||
var exists bool
|
||||
query := `SELECT EXISTS(SELECT 1 FROM project_name WHERE project_name = ? LIMIT 1);`
|
||||
err := db.QueryRow(query, projectName).Scan(&exists)
|
||||
if err != nil && err != sql.ErrNoRows {
|
||||
return false, err
|
||||
}
|
||||
return !exists, nil
|
||||
}
|
||||
|
||||
func AddProjectName(db *sql.DB, projectName string, port int) error {
|
||||
query := `INSERT INTO project_name (project_name, port) VALUES (?, ?);`
|
||||
_, err := db.Exec(query, projectName, port)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func GetNextPortNumber(db *sql.DB) (int, error) {
|
||||
var maxPortNumber sql.NullInt64
|
||||
query := `SELECT MAX(port) FROM project_name;`
|
||||
err := db.QueryRow(query).Scan(&maxPortNumber)
|
||||
if err != nil && err != sql.ErrNoRows {
|
||||
return 0, err
|
||||
}
|
||||
|
||||
if !maxPortNumber.Valid {
|
||||
// No rows in the table, return a default port number
|
||||
return 10000, nil
|
||||
}
|
||||
return int(maxPortNumber.Int64 + 1), nil
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue