From b2e9bab55db847888d461d8377150452e49eafb1 Mon Sep 17 00:00:00 2001 From: Teajey <21069848+Teajey@users.noreply.github.com> Date: Sun, 22 Jun 2025 22:18:21 +0900 Subject: [PATCH] feat: session store --- core/session/store.go | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 core/session/store.go 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 +}