123 lines
3.1 KiB
PL/PgSQL
123 lines
3.1 KiB
PL/PgSQL
--
|
|
-- PostgreSQL database dump
|
|
--
|
|
|
|
-- Dumped from database version 17.6
|
|
-- Dumped by pg_dump version 17.6
|
|
|
|
-- Enable built-in pgcrypto extension to use gen_random_bytes function
|
|
CREATE EXTENSION IF NOT EXISTS "pgcrypto";
|
|
|
|
-- Adding "nocase" collation to be compatible with SQLite's default "nocase" collation
|
|
CREATE COLLATION IF NOT EXISTS "nocase" (
|
|
provider = icu, -- Specify ICU as the provider
|
|
locale = 'und-u-ks-level2', -- Undetermined locale, Unicode extension (-u-), collation strength (ks) level 2 (level2)
|
|
deterministic = false -- Case-insensitive collations are typically non-deterministic
|
|
);
|
|
|
|
-- Alias [hex] to encode(..., 'hex')
|
|
CREATE OR REPLACE FUNCTION hex(data bytea)
|
|
RETURNS text
|
|
LANGUAGE SQL
|
|
IMMUTABLE
|
|
AS $$
|
|
SELECT encode(data, 'hex')
|
|
$$;
|
|
|
|
-- Alias [randomblob] to gen_random_bytes(...)
|
|
CREATE OR REPLACE FUNCTION randomblob(length integer)
|
|
RETURNS bytea
|
|
LANGUAGE SQL
|
|
IMMUTABLE
|
|
AS $$
|
|
SELECT gen_random_bytes(length)
|
|
$$;
|
|
|
|
-- Create the uuid_generate_v7 function
|
|
create or replace function uuid_generate_v7()
|
|
returns uuid
|
|
as $$
|
|
begin
|
|
-- use random v4 uuid as starting point (which has the same variant we need)
|
|
-- then overlay timestamp
|
|
-- then set version 7 by flipping the 2 and 1 bit in the version 4 string
|
|
return encode(
|
|
set_bit(
|
|
set_bit(
|
|
overlay(uuid_send(gen_random_uuid())
|
|
placing substring(int8send(floor(extract(epoch from clock_timestamp()) * 1000)::bigint) from 3)
|
|
from 1 for 6
|
|
),
|
|
52, 1
|
|
),
|
|
53, 1
|
|
),
|
|
'hex')::uuid;
|
|
end
|
|
$$
|
|
language plpgsql
|
|
volatile;
|
|
|
|
-- Create json_valid function
|
|
CREATE OR REPLACE FUNCTION json_valid(text) RETURNS boolean AS $$
|
|
BEGIN
|
|
PERFORM $1::jsonb;
|
|
RETURN TRUE;
|
|
EXCEPTION WHEN others THEN
|
|
RETURN FALSE;
|
|
END;
|
|
$$ LANGUAGE plpgsql IMMUTABLE;
|
|
|
|
--
|
|
-- Name: _logs; Type: TABLE; Schema: public; Owner: user
|
|
--
|
|
|
|
CREATE TABLE public._logs (
|
|
id UUID PRIMARY KEY DEFAULT uuid_generate_v7() NOT NULL,
|
|
level bigint DEFAULT '0'::bigint,
|
|
message text DEFAULT '""'::text,
|
|
data json DEFAULT '"{}"'::json,
|
|
created TIMESTAMP DEFAULT NOW() NOT NULL,
|
|
updated TIMESTAMP DEFAULT NOW() NOT NULL
|
|
);
|
|
|
|
|
|
ALTER TABLE public._logs OWNER TO "user";
|
|
|
|
--
|
|
-- Name: _migrations; Type: TABLE; Schema: public; Owner: user
|
|
--
|
|
|
|
CREATE TABLE public._migrations (
|
|
file text,
|
|
applied bigint
|
|
);
|
|
|
|
|
|
ALTER TABLE public._migrations OWNER TO "user";
|
|
|
|
--
|
|
-- Data for Name: _logs; Type: TABLE DATA; Schema: public; Owner: user
|
|
--
|
|
|
|
COPY public._logs (id, level, message, data, created, updated) FROM stdin;
|
|
\.
|
|
|
|
|
|
--
|
|
-- Data for Name: _migrations; Type: TABLE DATA; Schema: public; Owner: user
|
|
--
|
|
|
|
COPY public._migrations (file, applied) FROM stdin;
|
|
1640988000_init.go 1679427415788852
|
|
1660821103_add_user_ip_column.go 1679427415792425
|
|
1677760279_uppsercase_method.go 1679427415792706
|
|
1699187560_logs_generalization.go 1700504854831333
|
|
\.
|
|
|
|
|
|
--
|
|
-- PostgreSQL database dump complete
|
|
--
|
|
|