84 lines
2.1 KiB
PL/PgSQL
84 lines
2.1 KiB
PL/PgSQL
-- create database test;
|
|
-- create user test with encrypted password 'test';
|
|
-- grant all privileges on database test to test;
|
|
-- ALTER SCHEMA public owner to test;
|
|
|
|
drop schema IF EXISTS public cascade;
|
|
create schema if not exists public;
|
|
|
|
create table if not exists test
|
|
(
|
|
id serial not null
|
|
constraint test_pk
|
|
primary key,
|
|
name text
|
|
);
|
|
|
|
create table if not exists test2
|
|
(
|
|
id serial not null,
|
|
title text,
|
|
test_id integer
|
|
constraint test2_test_id_fk
|
|
references test
|
|
);
|
|
|
|
INSERT INTO test (id, name) VALUES (1, 'plop') ON CONFLICT DO NOTHING;
|
|
INSERT INTO test2 (id, title, test_id) VALUES (1, 'plop', 1) ON CONFLICT DO NOTHING;
|
|
INSERT INTO test2 (id, title, test_id) VALUES (2, 'plip', 1) ON CONFLICT DO NOTHING;
|
|
INSERT INTO test2 (id, title, test_id) VALUES (3, 'ttt', null) ON CONFLICT DO NOTHING;
|
|
|
|
CREATE OR REPLACE FUNCTION test_function (name text default 'plop', IN hi text default 'hello', out result json)
|
|
LANGUAGE plpgsql
|
|
AS
|
|
$$
|
|
BEGIN
|
|
result = json_build_object('id', 3, 'name', name);
|
|
END;
|
|
$$;
|
|
|
|
|
|
CREATE OR REPLACE FUNCTION test_function_multiple (name text default 'plop', IN hi text default 'hello', out result json)
|
|
LANGUAGE plpgsql
|
|
AS
|
|
$$
|
|
BEGIN
|
|
result = json_build_array(
|
|
json_build_object('id', 3, 'name', name),
|
|
json_build_object('id', 4, 'name', hi)
|
|
);
|
|
END;
|
|
$$;
|
|
|
|
CREATE OR REPLACE FUNCTION test_function_paginated (name text default 'plop', IN "limit" int default 10, IN "offset" int default 0, out result json, out total int)
|
|
LANGUAGE plpgsql
|
|
AS
|
|
$$
|
|
BEGIN
|
|
SELECT json_build_array(
|
|
json_build_object('id', 3, 'name', name::text),
|
|
json_build_object('id', 4, 'name', name::text || '-2')
|
|
),
|
|
10
|
|
INTO result, total
|
|
LIMIT "limit" OFFSET "offset";
|
|
END;
|
|
$$;
|
|
|
|
CREATE OR REPLACE FUNCTION test_function_object (inout resource json)
|
|
LANGUAGE plpgsql
|
|
AS
|
|
$$
|
|
BEGIN
|
|
resource = json_build_object('id', 1, 'name', 'changedName');
|
|
END;
|
|
$$;
|
|
|
|
CREATE OR REPLACE FUNCTION function_void (name text default 'plop') returns void
|
|
LANGUAGE plpgsql
|
|
AS
|
|
$$
|
|
BEGIN
|
|
PERFORM 1;
|
|
END;
|
|
$$ |