diff --git a/sqlite.go b/sqlite.go index 908b387..f71ac6a 100644 --- a/sqlite.go +++ b/sqlite.go @@ -3,7 +3,6 @@ package lite import ( "context" "database/sql" - "errors" "fmt" "os" @@ -12,10 +11,6 @@ import ( _ "github.com/ncruces/go-sqlite3/embed" ) -var ( - ErrNotConnected = errors.New("the connect method must be called before any queries can be executed") -) - type database struct { file string path string @@ -23,11 +18,10 @@ type database struct { } type Database interface { - Connect() error Close() error Exec(ctx context.Context, query string, args ...any) (sql.Result, error) Query(ctx context.Context, query string, args ...any) (*sqlx.Rows, error) - QueryRow(ctx context.Context, query string, args ...any) (*sqlx.Row, error) + QueryRow(ctx context.Context, query string, args ...any) *sqlx.Row QueryIn(ctx context.Context, query string, args ...any) (*sqlx.Rows, error) } @@ -48,19 +42,13 @@ func New(opts ...Option) (Database, error) { opt(db) } - return db, nil -} - -// connects to database file -func (d *database) Connect() error { - db, err := sqlx.Open("sqlite3", fmt.Sprintf("file:%s/%s", d.path, d.file)) + slite, err := sqlx.Open("sqlite3", fmt.Sprintf("file:%s/%s", db.path, db.file)) if err != nil { - return err + return nil, err } + db.sqlite = slite - d.sqlite = db - - return nil + return db, nil } // closes database file connection @@ -70,33 +58,21 @@ func (d *database) Close() error { // runs any updates, inserts, or any other queries that do not return rows func (d *database) Exec(ctx context.Context, query string, args ...any) (sql.Result, error) { - if d.sqlite == nil { - return nil, ErrNotConnected - } return d.sqlite.ExecContext(ctx, query, args...) } // runs basic data queries func (d *database) Query(ctx context.Context, query string, args ...any) (*sqlx.Rows, error) { - if d.sqlite == nil { - return nil, ErrNotConnected - } return d.sqlite.QueryxContext(ctx, query, args...) } // retrieves a single row from database -func (d *database) QueryRow(ctx context.Context, query string, args ...any) (*sqlx.Row, error) { - if d.sqlite == nil { - return nil, ErrNotConnected - } - return d.sqlite.QueryRowxContext(ctx, query, args...), nil +func (d *database) QueryRow(ctx context.Context, query string, args ...any) *sqlx.Row { + return d.sqlite.QueryRowxContext(ctx, query, args...) } // runs queries that require parameters in an IN clause func (d *database) QueryIn(ctx context.Context, query string, args ...any) (*sqlx.Rows, error) { - if d.sqlite == nil { - return nil, ErrNotConnected - } q, ar, err := sqlx.In(query, args...) if err != nil { return nil, err