Skip to content

Commit

Permalink
generate create table columns dynamically
Browse files Browse the repository at this point in the history
  • Loading branch information
facundoolano committed Jul 29, 2024
1 parent 3e02b45 commit ab4ac1d
Showing 1 changed file with 12 additions and 22 deletions.
34 changes: 12 additions & 22 deletions db.go
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ type dbSession struct {
const DB_DATE_LAYOUT = "2006-01-02 15:04:05-07:00"

// Open or create the database at the given path.
func InitDB(dbPath string, dbColumns []*LogField) (*dbSession, error) {
func InitDB(dbPath string, fields []*LogField) (*dbSession, error) {
db, err := sql.Open("sqlite3", dbPath)
if err != nil {
return nil, err
Expand All @@ -38,29 +38,19 @@ func InitDB(dbPath string, dbColumns []*LogField) (*dbSession, error) {
}

// TODO consider adding indexes according to expected queries
// FIXME build this dynamically based on the log format columns
sqlStmt := `

var columns string
for _, field := range fields {
columns += fmt.Sprintf("%s %s,\n", field.ColumnName, field.ColumnName)
}

sqlStmt := fmt.Sprintf(`
CREATE TABLE IF NOT EXISTS access_logs (
id INTEGER NOT NULL PRIMARY KEY,
created TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
ip TEXT,
time TIMESTAMP NOT NULL,
request_raw TEXT NOT NULL,
user_agent_raw TEXT,
status INTEGER,
referer TEXT COLLATE NOCASE,
method TEXT COLLATE NOCASE,
path TEXT,
user_agent TEXT COLLATE NOCASE,
os TEXT COLLATE NOCASE,
device TEXT COLLATE NOCASE,
ua_url TEXT,
ua_type TEXT COLLATE NOCASE
);
`
%s
created TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);`, columns)

_, err = db.Exec(sqlStmt)
return &dbSession{db: db}, err
}
Expand Down

0 comments on commit ab4ac1d

Please sign in to comment.