diff --git a/.sqlx/query-2c1152b8867bebcb63b637820eb44ac932ee88c6326ecaf9b4b4c7f690eff41c.json b/.sqlx/query-2c1152b8867bebcb63b637820eb44ac932ee88c6326ecaf9b4b4c7f690eff41c.json
deleted file mode 100644
index c62ab8d1..00000000
--- a/.sqlx/query-2c1152b8867bebcb63b637820eb44ac932ee88c6326ecaf9b4b4c7f690eff41c.json
+++ /dev/null
@@ -1,59 +0,0 @@
-{
- "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"
-}
diff --git a/.sqlx/query-2ee385e58e042071290226289646965553938838c83085273f68f687c976767a.json b/.sqlx/query-2ee385e58e042071290226289646965553938838c83085273f68f687c976767a.json
new file mode 100644
index 00000000..c11d4afc
--- /dev/null
+++ b/.sqlx/query-2ee385e58e042071290226289646965553938838c83085273f68f687c976767a.json
@@ -0,0 +1,77 @@
+{
+ "db_name": "PostgreSQL",
+ "query": "\n SELECT\n i.id AS invite_id,\n i.workspace_id,\n w.workspace_name,\n u_inviter.email AS inviter_email,\n u_inviter.name AS inviter_name,\n i.status,\n i.updated_at,\n u_inviter.metadata->>'icon_url' AS inviter_icon,\n w.icon AS workspace_icon,\n (SELECT COUNT(*) FROM public.af_workspace_member m WHERE m.workspace_id = i.workspace_id) AS member_count\n FROM\n public.af_workspace_invitation i\n JOIN public.af_workspace w ON i.workspace_id = w.workspace_id\n JOIN public.af_user u_inviter ON i.inviter = u_inviter.uid\n JOIN public.af_user u_invitee ON u_invitee.uuid = $1\n WHERE\n i.invitee_email = u_invitee.email\n AND i.id = $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"
+ },
+ {
+ "ordinal": 7,
+ "name": "inviter_icon",
+ "type_info": "Text"
+ },
+ {
+ "ordinal": 8,
+ "name": "workspace_icon",
+ "type_info": "Text"
+ },
+ {
+ "ordinal": 9,
+ "name": "member_count",
+ "type_info": "Int8"
+ }
+ ],
+ "parameters": {
+ "Left": [
+ "Uuid",
+ "Uuid"
+ ]
+ },
+ "nullable": [
+ false,
+ false,
+ true,
+ false,
+ false,
+ false,
+ false,
+ null,
+ false,
+ null
+ ]
+ },
+ "hash": "2ee385e58e042071290226289646965553938838c83085273f68f687c976767a"
+}
diff --git a/.sqlx/query-6dd7f6db2d364cc37b1b46c611fe111d06e327edd9f3a98a4b0636bfe8fd6319.json b/.sqlx/query-6dd7f6db2d364cc37b1b46c611fe111d06e327edd9f3a98a4b0636bfe8fd6319.json
deleted file mode 100644
index 6c269e95..00000000
--- a/.sqlx/query-6dd7f6db2d364cc37b1b46c611fe111d06e327edd9f3a98a4b0636bfe8fd6319.json
+++ /dev/null
@@ -1,59 +0,0 @@
-{
- "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 public.af_workspace_invitation\n WHERE af_workspace_invitation.invitee_email = (SELECT email FROM public.af_user WHERE uuid = $1)\n AND id = $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",
- "Uuid"
- ]
- },
- "nullable": [
- false,
- false,
- null,
- null,
- null,
- false,
- false
- ]
- },
- "hash": "6dd7f6db2d364cc37b1b46c611fe111d06e327edd9f3a98a4b0636bfe8fd6319"
-}
diff --git a/.sqlx/query-7c8b84da6d70cb4ae59ae618e6f7aa7bde3dbd6630bd7e7fcafe1606d63651c8.json b/.sqlx/query-7c8b84da6d70cb4ae59ae618e6f7aa7bde3dbd6630bd7e7fcafe1606d63651c8.json
new file mode 100644
index 00000000..f775bb11
--- /dev/null
+++ b/.sqlx/query-7c8b84da6d70cb4ae59ae618e6f7aa7bde3dbd6630bd7e7fcafe1606d63651c8.json
@@ -0,0 +1,23 @@
+{
+ "db_name": "PostgreSQL",
+ "query": "\n SELECT EXISTS(\n SELECT 1\n FROM af_workspace_invitation\n WHERE id = $1 AND invitee_email = (SELECT email FROM af_user WHERE uuid = $2)\n )\n ",
+ "describe": {
+ "columns": [
+ {
+ "ordinal": 0,
+ "name": "exists",
+ "type_info": "Bool"
+ }
+ ],
+ "parameters": {
+ "Left": [
+ "Uuid",
+ "Uuid"
+ ]
+ },
+ "nullable": [
+ null
+ ]
+ },
+ "hash": "7c8b84da6d70cb4ae59ae618e6f7aa7bde3dbd6630bd7e7fcafe1606d63651c8"
+}
diff --git a/.sqlx/query-de595bd6554d8e1f58c9c4bb94ea14b5ae2fd15b3c5d2b84d5dd5a551954ecde.json b/.sqlx/query-de595bd6554d8e1f58c9c4bb94ea14b5ae2fd15b3c5d2b84d5dd5a551954ecde.json
new file mode 100644
index 00000000..0dc790db
--- /dev/null
+++ b/.sqlx/query-de595bd6554d8e1f58c9c4bb94ea14b5ae2fd15b3c5d2b84d5dd5a551954ecde.json
@@ -0,0 +1,77 @@
+{
+ "db_name": "PostgreSQL",
+ "query": "\n SELECT\n i.id AS invite_id,\n i.workspace_id,\n w.workspace_name,\n u_inviter.email AS inviter_email,\n u_inviter.name AS inviter_name,\n i.status,\n i.updated_at,\n u_inviter.metadata->>'icon_url' AS inviter_icon,\n w.icon AS workspace_icon,\n (SELECT COUNT(*) FROM public.af_workspace_member m WHERE m.workspace_id = i.workspace_id) AS member_count\n FROM\n public.af_workspace_invitation i\n JOIN public.af_workspace w ON i.workspace_id = w.workspace_id\n JOIN public.af_user u_inviter ON i.inviter = u_inviter.uid\n JOIN public.af_user u_invitee ON u_invitee.uuid = $1\n WHERE\n i.invitee_email = u_invitee.email\n AND ($2::SMALLINT IS NULL OR i.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"
+ },
+ {
+ "ordinal": 7,
+ "name": "inviter_icon",
+ "type_info": "Text"
+ },
+ {
+ "ordinal": 8,
+ "name": "workspace_icon",
+ "type_info": "Text"
+ },
+ {
+ "ordinal": 9,
+ "name": "member_count",
+ "type_info": "Int8"
+ }
+ ],
+ "parameters": {
+ "Left": [
+ "Uuid",
+ "Int2"
+ ]
+ },
+ "nullable": [
+ false,
+ false,
+ true,
+ false,
+ false,
+ false,
+ false,
+ null,
+ false,
+ null
+ ]
+ },
+ "hash": "de595bd6554d8e1f58c9c4bb94ea14b5ae2fd15b3c5d2b84d5dd5a551954ecde"
+}
diff --git a/admin_frontend/templates/components/invite.html b/admin_frontend/templates/components/invite.html
index 1cf55635..dce7f619 100644
--- a/admin_frontend/templates/components/invite.html
+++ b/admin_frontend/templates/components/invite.html
@@ -66,7 +66,7 @@
-