Added a migration script containing useful functions/procedures
This commit is contained in:
parent
5a75e6f9a0
commit
8875ae4a4c
1 changed files with 62 additions and 0 deletions
62
server/migrations/0004_procedures.sql
Normal file
62
server/migrations/0004_procedures.sql
Normal file
|
@ -0,0 +1,62 @@
|
||||||
|
-- Description: This file creates the procedures and functions for adding users, posts, and comments.
|
||||||
|
-- Functions are commonly used for SELECT queries, while procedures are used for INSERT, UPDATE, and DELETE queries.
|
||||||
|
-- None of these seem to play very nice with sqlx for now, but they will surely be useful in the future.
|
||||||
|
|
||||||
|
-- Procedure for adding a user
|
||||||
|
CREATE OR REPLACE PROCEDURE add_user(
|
||||||
|
IN username_param TEXT,
|
||||||
|
IN password_param TEXT
|
||||||
|
)
|
||||||
|
LANGUAGE plpgsql
|
||||||
|
AS $$
|
||||||
|
BEGIN
|
||||||
|
INSERT INTO users (username, password)
|
||||||
|
VALUES (username_param, password_param);
|
||||||
|
END;
|
||||||
|
$$;
|
||||||
|
|
||||||
|
-- Procedure for adding a post
|
||||||
|
CREATE OR REPLACE PROCEDURE add_post(
|
||||||
|
IN user_id_param BIGINT,
|
||||||
|
IN content_param TEXT
|
||||||
|
)
|
||||||
|
LANGUAGE plpgsql
|
||||||
|
AS $$
|
||||||
|
BEGIN
|
||||||
|
INSERT INTO posts (user_id, content)
|
||||||
|
VALUES (user_id_param, content_param);
|
||||||
|
END;
|
||||||
|
$$;
|
||||||
|
|
||||||
|
-- Procedure for adding a comment
|
||||||
|
CREATE OR REPLACE PROCEDURE add_comment(
|
||||||
|
IN parent_post_id_param BIGINT,
|
||||||
|
-- IN parent_comment_id_param BIGINT,
|
||||||
|
IN author_user_id_param BIGINT,
|
||||||
|
IN content_param TEXT
|
||||||
|
)
|
||||||
|
LANGUAGE plpgsql
|
||||||
|
AS $$
|
||||||
|
BEGIN
|
||||||
|
INSERT INTO comments (parent_post_id, author_user_id, content)
|
||||||
|
VALUES (parent_post_id_param, author_user_id_param, content_param);
|
||||||
|
END;
|
||||||
|
$$;
|
||||||
|
|
||||||
|
-- Function for getting comments
|
||||||
|
CREATE OR REPLACE FUNCTION get_comments(
|
||||||
|
IN parent_post_id_param BIGINT,
|
||||||
|
IN limit_param BIGINT,
|
||||||
|
IN offset_param BIGINT
|
||||||
|
)
|
||||||
|
RETURNS SETOF comments AS $$
|
||||||
|
BEGIN
|
||||||
|
RETURN QUERY
|
||||||
|
SELECT *
|
||||||
|
FROM comments
|
||||||
|
WHERE parent_post_id = parent_post_id_param
|
||||||
|
ORDER BY created_at DESC
|
||||||
|
LIMIT limit_param
|
||||||
|
OFFSET offset_param;
|
||||||
|
END;
|
||||||
|
$$ LANGUAGE plpgsql;
|
Loading…
Reference in a new issue