Session persistence
This commit is contained in:
@@ -1,11 +1,7 @@
|
||||
CREATE OR REPLACE FUNCTION set_updated_timestamp()
|
||||
RETURNS TRIGGER AS $$
|
||||
BEGIN
|
||||
IF row(NEW.*) IS DISTINCT FROM row(OLD.*) THEN
|
||||
NEW.updated_at = now();
|
||||
RETURN NEW;
|
||||
ELSE
|
||||
RETURN OLD;
|
||||
END IF;
|
||||
NEW.updated_at = now();
|
||||
RETURN NEW;
|
||||
END;
|
||||
$$ language 'plpgsql';
|
||||
|
||||
1
sql/migrations/patches/20191008190200-sessions/down.sql
Normal file
1
sql/migrations/patches/20191008190200-sessions/down.sql
Normal file
@@ -0,0 +1 @@
|
||||
DROP TABLE "sessions";
|
||||
10
sql/migrations/patches/20191008190200-sessions/up.sql
Normal file
10
sql/migrations/patches/20191008190200-sessions/up.sql
Normal file
@@ -0,0 +1,10 @@
|
||||
CREATE TABLE "sessions" (
|
||||
"sid" text NOT NULL COLLATE "default",
|
||||
"session" json NOT NULL,
|
||||
"expires_at" timestamptz NOT NULL,
|
||||
"created_at" timestamptz NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updated_at" timestamptz NOT NULL DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
||||
|
||||
ALTER TABLE "sessions" ADD CONSTRAINT "session_pkey" PRIMARY KEY ("sid") NOT DEFERRABLE INITIALLY IMMEDIATE;
|
||||
CREATE TRIGGER "set_sessions_updated" BEFORE UPDATE ON "sessions" FOR EACH ROW EXECUTE PROCEDURE set_updated_timestamp();
|
||||
1
sql/sessions/all.sql
Normal file
1
sql/sessions/all.sql
Normal file
@@ -0,0 +1 @@
|
||||
SELECT "sid", "session" FROM "sessions";
|
||||
1
sql/sessions/clear.sql
Normal file
1
sql/sessions/clear.sql
Normal file
@@ -0,0 +1 @@
|
||||
TRUNCATE "sessions";
|
||||
1
sql/sessions/destroy.sql
Normal file
1
sql/sessions/destroy.sql
Normal file
@@ -0,0 +1 @@
|
||||
DELETE FROM "sessions" WHERE "sid" = $1;
|
||||
1
sql/sessions/get.sql
Normal file
1
sql/sessions/get.sql
Normal file
@@ -0,0 +1 @@
|
||||
SELECT "session" FROM "sessions" WHERE "sid"=$1 AND CURRENT_TIMESTAMP < "expires_at";
|
||||
1
sql/sessions/length.sql
Normal file
1
sql/sessions/length.sql
Normal file
@@ -0,0 +1 @@
|
||||
SELECT COUNT(*) as length FROM "sessions";
|
||||
3
sql/sessions/set.sql
Normal file
3
sql/sessions/set.sql
Normal file
@@ -0,0 +1,3 @@
|
||||
INSERT INTO "sessions" AS s ("sid", "session", "expires_at") VALUES ($1, $2, $3)
|
||||
ON CONFLICT ON CONSTRAINT "session_pkey"
|
||||
DO UPDATE SET "session"=$2, "expires_at"=$3 WHERE "s"."sid"=$1;
|
||||
1
sql/sessions/touch.sql
Normal file
1
sql/sessions/touch.sql
Normal file
@@ -0,0 +1 @@
|
||||
UPDATE "sessions" SET "expires_at"=$2 WHERE "sid"=$1;
|
||||
Reference in New Issue
Block a user