package sqlitedb import ( "database/sql" "fmt" "os" "path/filepath" _ "modernc.org/sqlite" ) const ( driverName = "sqlite" ) func OpenDb(dbPath string) (*sql.DB, error) { dir := filepath.Dir(dbPath) if _, err := os.Stat(dir); os.IsNotExist(err) { err = os.MkdirAll(dir, 0755) if err != nil { return nil, fmt.Errorf("failed to create directory: %v", err) } } db, err := sql.Open(driverName, dbPath) if err != nil { return nil, fmt.Errorf("failed to open db: %w", err) } db.SetMaxOpenConns(1) // prevent concurrent writes return db, nil } func extendArray[T any](arr []T, position int) []T { if arr == nil { return make([]T, position+1) } if len(arr) <= position { return append(arr, make([]T, position-len(arr)+1)...) } return arr }