chore: add sqlx files

This commit is contained in:
Zack Fu Zi Xiang 2024-03-06 11:29:21 +08:00
parent 9b28edb5bc
commit dca443affc
No known key found for this signature in database
5 changed files with 171 additions and 0 deletions

View file

@ -0,0 +1,17 @@
{
"db_name": "PostgreSQL",
"query": "\n INSERT INTO public.af_workspace_invitation (\n workspace_id,\n inviter,\n invitee_email,\n role_id\n )\n VALUES (\n $1,\n (SELECT uid FROM public.af_user WHERE uuid = $2),\n $3,\n $4\n )\n ",
"describe": {
"columns": [],
"parameters": {
"Left": [
"Uuid",
"Uuid",
"Text",
"Int4"
]
},
"nullable": []
},
"hash": "060018c2bfdfcfb4b06186b6bc29b06b810745569363613d6779444ead6a3cd7"
}

View file

@ -0,0 +1,59 @@
{
"db_name": "PostgreSQL",
"query": "\n SELECT\n id AS invite_id,\n workspace_id,\n (SELECT workspace_name FROM public.af_workspace WHERE workspace_id = af_workspace_invitation.workspace_id),\n (SELECT email FROM public.af_user WHERE uid = af_workspace_invitation.inviter) AS inviter_email,\n (SELECT name FROM public.af_user WHERE uid = af_workspace_invitation.inviter) AS inviter_name,\n status,\n updated_at\n FROM\n public.af_workspace_invitation\n WHERE af_workspace_invitation.invitee_email = (SELECT email FROM public.af_user WHERE uuid = $1)\n AND ($2::SMALLINT IS NULL OR status = $2)\n ",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "invite_id",
"type_info": "Uuid"
},
{
"ordinal": 1,
"name": "workspace_id",
"type_info": "Uuid"
},
{
"ordinal": 2,
"name": "workspace_name",
"type_info": "Text"
},
{
"ordinal": 3,
"name": "inviter_email",
"type_info": "Text"
},
{
"ordinal": 4,
"name": "inviter_name",
"type_info": "Text"
},
{
"ordinal": 5,
"name": "status",
"type_info": "Int2"
},
{
"ordinal": 6,
"name": "updated_at",
"type_info": "Timestamptz"
}
],
"parameters": {
"Left": [
"Uuid",
"Int2"
]
},
"nullable": [
false,
false,
null,
null,
null,
false,
false
]
},
"hash": "2c1152b8867bebcb63b637820eb44ac932ee88c6326ecaf9b4b4c7f690eff41c"
}

View file

@ -0,0 +1,15 @@
{
"db_name": "PostgreSQL",
"query": "\n UPDATE public.af_workspace_invitation\n SET status = 1\n WHERE invitee_email = (SELECT email FROM public.af_user WHERE uuid = $1)\n AND id = $2\n ",
"describe": {
"columns": [],
"parameters": {
"Left": [
"Uuid",
"Uuid"
]
},
"nullable": []
},
"hash": "3b3dd104bf9e1fb9cf6d413e0e59db0cdbb009c92dce1c1e67900c44efdb8db4"
}

View file

@ -0,0 +1,46 @@
{
"db_name": "PostgreSQL",
"query": "\n SELECT\n workspace_id,\n inviter AS inviter_uid,\n (SELECT uid FROM public.af_user WHERE email = invitee_email) AS invitee_uid,\n status,\n role_id AS role\n FROM\n public.af_workspace_invitation\n WHERE id = $1\n ",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "workspace_id",
"type_info": "Uuid"
},
{
"ordinal": 1,
"name": "inviter_uid",
"type_info": "Int8"
},
{
"ordinal": 2,
"name": "invitee_uid",
"type_info": "Int8"
},
{
"ordinal": 3,
"name": "status",
"type_info": "Int2"
},
{
"ordinal": 4,
"name": "role",
"type_info": "Int4"
}
],
"parameters": {
"Left": [
"Uuid"
]
},
"nullable": [
false,
false,
null,
false,
false
]
},
"hash": "7244adcf92c93f0cb7b3311f348617e442145affb56c90e12a81563232b284b4"
}

View file

@ -0,0 +1,34 @@
ALTER TABLE af_workspace_invitation ADD COLUMN invitee_email TEXT NOT NULL;
-- Auto add to af_workspace_member upon invitation accepted
CREATE OR REPLACE FUNCTION add_to_af_workspace_member()
RETURNS TRIGGER AS $$
BEGIN
IF NEW.status = 1 THEN
-- workspace permission
INSERT INTO af_workspace_member (workspace_id, uid, role_id)
VALUES (
NEW.workspace_id,
(SELECT uid FROM af_user WHERE email = NEW.invitee_email),
NEW.role_id
)
ON CONFLICT (workspace_id, uid) DO NOTHING;
-- collab permission
INSERT INTO af_collab_member (uid, oid, permission_id)
VALUES (
(SELECT uid FROM af_user WHERE email = NEW.invitee_email),
NEW.workspace_id,
(SELECT permission_id
FROM public.af_role_permissions
WHERE public.af_role_permissions.role_id = NEW.role_id)
)
ON CONFLICT (uid, oid)
DO UPDATE
SET permission_id = excluded.permission_id;
END IF;
RETURN NEW;
END;
$$ LANGUAGE plpgsql;
ALTER TABLE af_workspace_invitation DROP COLUMN invitee;