40 lines
1.0 KiB
Go
40 lines
1.0 KiB
Go
package session
|
|
|
|
import (
|
|
"fmt"
|
|
"lishwist/core/internal/db"
|
|
|
|
"github.com/Teajey/sqlstore"
|
|
)
|
|
|
|
func NewStore(keyPairs ...[]byte) (*sqlstore.Store, error) {
|
|
deleteStmt, err := db.Connection.Prepare("DELETE FROM session WHERE id = ?;")
|
|
if err != nil {
|
|
return nil, fmt.Errorf("Failed to prepare delete statement: %w", err)
|
|
}
|
|
|
|
insertStmt, err := db.Connection.Prepare("INSERT INTO session (value) VALUES (?);")
|
|
if err != nil {
|
|
return nil, fmt.Errorf("Failed to prepare insert statement: %w", err)
|
|
}
|
|
|
|
selectStmt, err := db.Connection.Prepare("SELECT value FROM session WHERE id = ?;")
|
|
if err != nil {
|
|
return nil, fmt.Errorf("Failed to prepare select statement: %w", err)
|
|
}
|
|
|
|
updateStmt, err := db.Connection.Prepare("UPDATE session SET value = ?2 WHERE id = ?1;")
|
|
if err != nil {
|
|
return nil, fmt.Errorf("Failed to prepare update statement: %w", err)
|
|
}
|
|
|
|
s := sqlstore.NewSqlStore(db.Connection, sqlstore.Statements{
|
|
Delete: deleteStmt,
|
|
Insert: insertStmt,
|
|
Select: selectStmt,
|
|
Update: updateStmt,
|
|
}, keyPairs...)
|
|
|
|
return s, nil
|
|
}
|