summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/gracha.go25
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())
}