mirror of
https://github.com/idanoo/autobrr
synced 2025-07-23 00:39:13 +00:00
refactor(database): clean-up queries (#569)
* fix(database): build WHERE using squirrel * flip LIKEs * change sql.LevelReadCommitted * feat(db): add missing commits * implement single query for releases * cleanup * feat(releases): properly handle limit for Find * feat(releases): make dynamic ILike helper * feat(releases): check for empty ReleaseActionStatus * add values as sql.NullX * check if ID is non 0 * feat(releases): improve find
This commit is contained in:
parent
e6c48a5228
commit
19b3899a5c
12 changed files with 206 additions and 168 deletions
|
@ -14,6 +14,8 @@ import (
|
|||
"github.com/rs/zerolog"
|
||||
)
|
||||
|
||||
var databaseDriver = "sqlite"
|
||||
|
||||
type DB struct {
|
||||
log zerolog.Logger
|
||||
handler *sql.DB
|
||||
|
@ -37,6 +39,7 @@ func NewDB(cfg *domain.Config, log logger.Logger) (*DB, error) {
|
|||
|
||||
switch cfg.DatabaseType {
|
||||
case "sqlite":
|
||||
databaseDriver = "sqlite"
|
||||
db.Driver = "sqlite"
|
||||
db.DSN = dataSourceName(cfg.ConfigPath, "autobrr.db")
|
||||
case "postgres":
|
||||
|
@ -45,6 +48,7 @@ func NewDB(cfg *domain.Config, log logger.Logger) (*DB, error) {
|
|||
}
|
||||
db.DSN = fmt.Sprintf("postgres://%v:%v@%v:%d/%v?sslmode=disable", cfg.PostgresUser, cfg.PostgresPass, cfg.PostgresHost, cfg.PostgresPort, cfg.PostgresDatabase)
|
||||
db.Driver = "postgres"
|
||||
databaseDriver = "postgres"
|
||||
default:
|
||||
return nil, errors.New("unsupported database: %v", cfg.DatabaseType)
|
||||
}
|
||||
|
@ -106,3 +110,17 @@ type Tx struct {
|
|||
*sql.Tx
|
||||
handler *DB
|
||||
}
|
||||
|
||||
type ILikeDynamic interface {
|
||||
ToSql() (sql string, args []interface{}, err error)
|
||||
}
|
||||
|
||||
// ILike is a wrapper for sq.Like and sq.ILike
|
||||
// SQLite does not support ILike but postgres does so this checks what database is being used
|
||||
func ILike(col string, val string) ILikeDynamic {
|
||||
if databaseDriver == "sqlite" {
|
||||
return sq.Like{col: val}
|
||||
}
|
||||
|
||||
return sq.ILike{col: val}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue