package links import ( "context" "database/sql" "fmt" "git.wntrmute.dev/kyle/goutils/config" _ "modernc.org/sqlite" ) const ( kDBPath = "DB_PATH" defaultPath = "kls.db" ) const createTable = `CREATE TABLE IF NOT EXISTS urls ( id TEXT PRIMARY KEY, url TEXT NOT NULL, nurl TEXT NOT NULL, short TEXT NOT NULL UNIQUE, created_at TEXT NOT NULL )` // Connect opens the SQLite database and ensures the schema exists. func Connect(ctx context.Context) (*sql.DB, error) { path := config.GetDefault(kDBPath, defaultPath) db, err := sql.Open("sqlite", path) if err != nil { return nil, fmt.Errorf("database: %w", err) } if _, err := db.ExecContext(ctx, createTable); err != nil { db.Close() return nil, fmt.Errorf("database: schema init: %w", err) } return db, nil }