diff options
-rw-r--r-- | src/gracha.go | 25 |
1 files changed, 19 insertions, 6 deletions
diff --git a/src/gracha.go b/src/gracha.go index 8800ee6..471f7e7 100644 --- a/src/gracha.go +++ b/src/gracha.go @@ -12,6 +12,7 @@ import ( "sync" "time" + "golite" "guuid" "q" "scrypt" @@ -104,8 +105,9 @@ type consumerT struct{ } type authT struct{ - queries queriesT queue q.IQueue + db *sql.DB + queries queriesT hasher func(scrypt.HashInput) ([]byte, error) close func() } @@ -1158,7 +1160,17 @@ func unwrapResult[A any, B any](fn func(A) resultT[B]) func(A) (B, error) { } } -func NewWithPrefix(db *sql.DB, queue q.IQueue, prefix string) (IAuth, error) { +func NewWithPrefix(databasePath string, prefix string) (IAuth, error) { + queue, err := q.New(databasePath) + if err != nil { + return authT{}, err + } + + db, err := sql.Open(golite.DriverName, databasePath) + if err != nil { + return authT{}, err + } + queries, err := initDB(db, prefix) if err != nil { return authT{}, err @@ -1173,8 +1185,9 @@ func NewWithPrefix(db *sql.DB, queue q.IQueue, prefix string) (IAuth, error) { } auth := authT{ - queries: queries, queue: queue, + db: db, + queries: queries, hasher: unwrapResult(hasher), close: closeFn, } @@ -1188,8 +1201,8 @@ func NewWithPrefix(db *sql.DB, queue q.IQueue, prefix string) (IAuth, error) { return auth, nil } -func New(db *sql.DB, queue q.IQueue) (IAuth, error) { - return NewWithPrefix(db, queue, defaultPrefix) +func New(databasePath string) (IAuth, error) { + return NewWithPrefix(databasePath, defaultPrefix) } func newUserPayload(email string, salt []byte, pwhash []byte) ([]byte, error) { @@ -1564,7 +1577,7 @@ func (auth authT) LogoutAll(session Session) error { } func (auth authT) Close() error { - return auth.queries.close() + return g.WrapErrors(auth.queries.close(), auth.db.Close()) } |