mirror of
https://github.com/tiennm99/postgresql-keepalive.git
synced 2026-05-16 22:59:14 +00:00
41 lines
1.0 KiB
SQL
41 lines
1.0 KiB
SQL
-- Drop and recreate the database
|
|
DROP DATABASE IF EXISTS keepalive;
|
|
CREATE DATABASE keepalive;
|
|
|
|
-- Create user if not exists
|
|
DO
|
|
$do$
|
|
BEGIN
|
|
IF NOT EXISTS (
|
|
SELECT FROM pg_catalog.pg_roles WHERE rolname = 'keepalive'
|
|
) THEN
|
|
CREATE ROLE keepalive LOGIN PASSWORD 'keepalive';
|
|
END IF;
|
|
END
|
|
$do$;
|
|
|
|
-- Grant privileges on the database
|
|
GRANT ALL PRIVILEGES ON DATABASE keepalive TO keepalive;
|
|
|
|
-- Connect to the database
|
|
\c keepalive
|
|
|
|
-- Ensure the user can use the public schema
|
|
GRANT USAGE ON SCHEMA public TO keepalive;
|
|
GRANT CREATE ON SCHEMA public TO keepalive;
|
|
|
|
-- Create the table for key/value counters
|
|
CREATE TABLE IF NOT EXISTS keepalive (
|
|
key VARCHAR(255) PRIMARY KEY,
|
|
value BIGINT NOT NULL
|
|
);
|
|
|
|
-- Grant all privileges on the table to the user
|
|
GRANT ALL PRIVILEGES ON TABLE keepalive TO keepalive;
|
|
|
|
-- Initialize key/value
|
|
INSERT INTO keepalive (key, value)
|
|
VALUES ('counter', 0)
|
|
ON CONFLICT (key) DO UPDATE
|
|
SET value = EXCLUDED.value;
|