diff --git a/core/session/store.go b/core/session/store.go new file mode 100644 index 0000000..3045fc3 --- /dev/null +++ b/core/session/store.go @@ -0,0 +1,39 @@ +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 +}