diff --git a/Dockerfile b/Dockerfile index c9c4cbc..0d70044 100644 --- a/Dockerfile +++ b/Dockerfile @@ -24,8 +24,6 @@ COPY ./package.json ./package.json # copy production dependencies and source code into final image FROM base AS release -ENV DATABASE_URL=postgres://admin:iiyama12@192.168.1.166:5432/bgApp -ENV JWT_SECRET_KEY=MySecret COPY --from=install /temp/prod/node_modules node_modules COPY --from=prerelease /usr/src/app/index.ts . COPY --from=prerelease /usr/src/app/utilities/ ./utilities diff --git a/package.json b/package.json index d220521..66053eb 100644 --- a/package.json +++ b/package.json @@ -10,13 +10,17 @@ }, "private": true, "dependencies": { + "@react-email/render": "^2.0.4", "@types/jsonwebtoken": "^9.0.10", "@types/lodash": "^4.17.23", + "@types/react": "^19.2.14", "argon2": "^0.44.0", "hashids": "^2.3.0", "jsonwebtoken": "^9.0.3", "lodash": "^4.17.23", - "reflect-metadata": "^0.2.2" + "react": "^19.2.4", + "reflect-metadata": "^0.2.2", + "resend": "^6.9.2" }, "devDependencies": { "@types/bun": "^1.3.9" diff --git a/scripts/dbCreate.sql b/scripts/dbCreate.sql index f9f0b99..ddac662 100644 --- a/scripts/dbCreate.sql +++ b/scripts/dbCreate.sql @@ -2,10 +2,12 @@ -- PostgreSQL database dump -- +\restrict V5y7Wgbswasgm7UnGlx0qTGOk52yHGHAWgST3HXveDIktl8Dn0CpNmczwHt70e5 + -- Dumped from database version 18.1 (Debian 18.1-1.pgdg13+2) -- Dumped by pg_dump version 18.1 --- Started on 2026-02-18 20:07:03 GMT +-- Started on 2026-02-20 14:19:31 GMT SET statement_timeout = 0; SET lock_timeout = 0; @@ -28,7 +30,7 @@ CREATE EXTENSION IF NOT EXISTS pg_trgm WITH SCHEMA public; -- --- TOC entry 3606 (class 0 OID 0) +-- TOC entry 3624 (class 0 OID 0) -- Dependencies: 2 -- Name: EXTENSION pg_trgm; Type: COMMENT; Schema: -; Owner: -- @@ -53,6 +55,44 @@ CREATE TABLE public.circle_comments ( ALTER TABLE public.circle_comments OWNER TO admin; +-- +-- TOC entry 245 (class 1259 OID 20821) +-- Name: circle_invites; Type: TABLE; Schema: public; Owner: admin +-- + +CREATE TABLE public.circle_invites ( + id bigint NOT NULL, + invited_user_id bigint NOT NULL, + invited_by_user_id bigint NOT NULL +); + + +ALTER TABLE public.circle_invites OWNER TO admin; + +-- +-- TOC entry 244 (class 1259 OID 20820) +-- Name: circle_invites_id_seq; Type: SEQUENCE; Schema: public; Owner: admin +-- + +CREATE SEQUENCE public.circle_invites_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +ALTER SEQUENCE public.circle_invites_id_seq OWNER TO admin; + +-- +-- TOC entry 3658 (class 0 OID 0) +-- Dependencies: 244 +-- Name: circle_invites_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin +-- + +ALTER SEQUENCE public.circle_invites_id_seq OWNED BY public.circle_invites.id; + + -- -- TOC entry 230 (class 1259 OID 19837) -- Name: circles; Type: TABLE; Schema: public; Owner: admin @@ -86,7 +126,7 @@ CREATE SEQUENCE public.circles_id_seq ALTER SEQUENCE public.circles_id_seq OWNER TO admin; -- --- TOC entry 3607 (class 0 OID 0) +-- TOC entry 3661 (class 0 OID 0) -- Dependencies: 229 -- Name: circles_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- @@ -125,7 +165,7 @@ CREATE SEQUENCE public.claims_id_seq ALTER SEQUENCE public.claims_id_seq OWNER TO admin; -- --- TOC entry 3608 (class 0 OID 0) +-- TOC entry 3664 (class 0 OID 0) -- Dependencies: 224 -- Name: claims_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- @@ -176,7 +216,7 @@ CREATE SEQUENCE public.collections_id_seq ALTER SEQUENCE public.collections_id_seq OWNER TO admin; -- --- TOC entry 3609 (class 0 OID 0) +-- TOC entry 3668 (class 0 OID 0) -- Dependencies: 237 -- Name: collections_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- @@ -215,7 +255,7 @@ CREATE SEQUENCE public.comments_id_seq ALTER SEQUENCE public.comments_id_seq OWNER TO admin; -- --- TOC entry 3610 (class 0 OID 0) +-- TOC entry 3671 (class 0 OID 0) -- Dependencies: 240 -- Name: comments_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- @@ -254,7 +294,7 @@ CREATE SEQUENCE public.games_id_seq ALTER SEQUENCE public.games_id_seq OWNER TO admin; -- --- TOC entry 3611 (class 0 OID 0) +-- TOC entry 3674 (class 0 OID 0) -- Dependencies: 231 -- Name: games_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- @@ -320,7 +360,7 @@ CREATE SEQUENCE public.matches_id_seq ALTER SEQUENCE public.matches_id_seq OWNER TO admin; -- --- TOC entry 3612 (class 0 OID 0) +-- TOC entry 3679 (class 0 OID 0) -- Dependencies: 233 -- Name: matches_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- @@ -373,7 +413,7 @@ CREATE SEQUENCE public.players_id_seq ALTER SEQUENCE public.players_id_seq OWNER TO admin; -- --- TOC entry 3613 (class 0 OID 0) +-- TOC entry 3683 (class 0 OID 0) -- Dependencies: 227 -- Name: players_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- @@ -381,6 +421,48 @@ ALTER SEQUENCE public.players_id_seq OWNER TO admin; ALTER SEQUENCE public.players_id_seq OWNED BY public.players.id; +-- +-- TOC entry 247 (class 1259 OID 20841) +-- Name: userInvites; Type: TABLE; Schema: public; Owner: admin +-- + +CREATE TABLE public."userInvites" ( + id bigint NOT NULL, + invite_code character varying(6) NOT NULL, + email text NOT NULL, + player_id bigint NOT NULL, + invited_by_user_id bigint NOT NULL, + was_email_sent boolean DEFAULT false NOT NULL, + created_at timestamp(6) with time zone DEFAULT now() NOT NULL +); + + +ALTER TABLE public."userInvites" OWNER TO admin; + +-- +-- TOC entry 246 (class 1259 OID 20840) +-- Name: userInvites_id_seq; Type: SEQUENCE; Schema: public; Owner: admin +-- + +CREATE SEQUENCE public."userInvites_id_seq" + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +ALTER SEQUENCE public."userInvites_id_seq" OWNER TO admin; + +-- +-- TOC entry 3685 (class 0 OID 0) +-- Dependencies: 246 +-- Name: userInvites_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin +-- + +ALTER SEQUENCE public."userInvites_id_seq" OWNED BY public."userInvites".id; + + -- -- TOC entry 226 (class 1259 OID 16439) -- Name: user_claims; Type: TABLE; Schema: public; Owner: admin @@ -401,7 +483,7 @@ ALTER TABLE public.user_claims OWNER TO admin; CREATE TABLE public.users ( id bigint NOT NULL, - username character varying(20) NOT NULL, + email character varying(100) CONSTRAINT users_username_not_null NOT NULL, pass_hash text NOT NULL, is_active boolean DEFAULT true CONSTRAINT users_active_not_null NOT NULL, is_admin boolean DEFAULT false NOT NULL, @@ -431,7 +513,7 @@ CREATE SEQUENCE public.users_id_seq ALTER SEQUENCE public.users_id_seq OWNER TO admin; -- --- TOC entry 3614 (class 0 OID 0) +-- TOC entry 3688 (class 0 OID 0) -- Dependencies: 220 -- Name: users_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- @@ -455,7 +537,7 @@ CREATE SEQUENCE public.users_pass_hash_seq ALTER SEQUENCE public.users_pass_hash_seq OWNER TO admin; -- --- TOC entry 3615 (class 0 OID 0) +-- TOC entry 3690 (class 0 OID 0) -- Dependencies: 222 -- Name: users_pass_hash_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- @@ -479,16 +561,24 @@ CREATE SEQUENCE public.users_username_seq ALTER SEQUENCE public.users_username_seq OWNER TO admin; -- --- TOC entry 3616 (class 0 OID 0) +-- TOC entry 3692 (class 0 OID 0) -- Dependencies: 221 -- Name: users_username_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- -ALTER SEQUENCE public.users_username_seq OWNED BY public.users.username; +ALTER SEQUENCE public.users_username_seq OWNED BY public.users.email; -- --- TOC entry 3412 (class 2604 OID 19840) +-- TOC entry 3428 (class 2604 OID 20824) +-- Name: circle_invites id; Type: DEFAULT; Schema: public; Owner: admin +-- + +ALTER TABLE ONLY public.circle_invites ALTER COLUMN id SET DEFAULT nextval('public.circle_invites_id_seq'::regclass); + + +-- +-- TOC entry 3420 (class 2604 OID 19840) -- Name: circles id; Type: DEFAULT; Schema: public; Owner: admin -- @@ -496,7 +586,7 @@ ALTER TABLE ONLY public.circles ALTER COLUMN id SET DEFAULT nextval('public.circ -- --- TOC entry 3406 (class 2604 OID 20726) +-- TOC entry 3414 (class 2604 OID 20726) -- Name: claims id; Type: DEFAULT; Schema: public; Owner: admin -- @@ -504,7 +594,7 @@ ALTER TABLE ONLY public.claims ALTER COLUMN id SET DEFAULT nextval('public.claim -- --- TOC entry 3417 (class 2604 OID 19908) +-- TOC entry 3425 (class 2604 OID 19908) -- Name: collections id; Type: DEFAULT; Schema: public; Owner: admin -- @@ -512,7 +602,7 @@ ALTER TABLE ONLY public.collections ALTER COLUMN id SET DEFAULT nextval('public. -- --- TOC entry 3418 (class 2604 OID 19943) +-- TOC entry 3426 (class 2604 OID 19943) -- Name: comments id; Type: DEFAULT; Schema: public; Owner: admin -- @@ -520,7 +610,7 @@ ALTER TABLE ONLY public.comments ALTER COLUMN id SET DEFAULT nextval('public.com -- --- TOC entry 3415 (class 2604 OID 19851) +-- TOC entry 3423 (class 2604 OID 19851) -- Name: games id; Type: DEFAULT; Schema: public; Owner: admin -- @@ -528,7 +618,7 @@ ALTER TABLE ONLY public.games ALTER COLUMN id SET DEFAULT nextval('public.games_ -- --- TOC entry 3416 (class 2604 OID 19862) +-- TOC entry 3424 (class 2604 OID 19862) -- Name: matches id; Type: DEFAULT; Schema: public; Owner: admin -- @@ -536,7 +626,7 @@ ALTER TABLE ONLY public.matches ALTER COLUMN id SET DEFAULT nextval('public.matc -- --- TOC entry 3408 (class 2604 OID 19812) +-- TOC entry 3416 (class 2604 OID 19812) -- Name: players id; Type: DEFAULT; Schema: public; Owner: admin -- @@ -544,7 +634,15 @@ ALTER TABLE ONLY public.players ALTER COLUMN id SET DEFAULT nextval('public.play -- --- TOC entry 3398 (class 2604 OID 16395) +-- TOC entry 3429 (class 2604 OID 20844) +-- Name: userInvites id; Type: DEFAULT; Schema: public; Owner: admin +-- + +ALTER TABLE ONLY public."userInvites" ALTER COLUMN id SET DEFAULT nextval('public."userInvites_id_seq"'::regclass); + + +-- +-- TOC entry 3408 (class 2604 OID 16395) -- Name: users id; Type: DEFAULT; Schema: public; Owner: admin -- @@ -552,23 +650,16 @@ ALTER TABLE ONLY public.users ALTER COLUMN id SET DEFAULT nextval('public.users_ -- --- TOC entry 3399 (class 2604 OID 16405) --- Name: users username; Type: DEFAULT; Schema: public; Owner: admin +-- TOC entry 3449 (class 2606 OID 20829) +-- Name: circle_invites circle_invites_pkey; Type: CONSTRAINT; Schema: public; Owner: admin -- -ALTER TABLE ONLY public.users ALTER COLUMN username SET DEFAULT nextval('public.users_username_seq'::regclass); +ALTER TABLE ONLY public.circle_invites + ADD CONSTRAINT circle_invites_pkey PRIMARY KEY (id); -- --- TOC entry 3400 (class 2604 OID 16411) --- Name: users pass_hash; Type: DEFAULT; Schema: public; Owner: admin --- - -ALTER TABLE ONLY public.users ALTER COLUMN pass_hash SET DEFAULT nextval('public.users_pass_hash_seq'::regclass); - - --- --- TOC entry 3427 (class 2606 OID 19846) +-- TOC entry 3439 (class 2606 OID 19846) -- Name: circles circles_pkey; Type: CONSTRAINT; Schema: public; Owner: admin -- @@ -577,7 +668,7 @@ ALTER TABLE ONLY public.circles -- --- TOC entry 3423 (class 2606 OID 20728) +-- TOC entry 3435 (class 2606 OID 20728) -- Name: claims claims_pkey; Type: CONSTRAINT; Schema: public; Owner: admin -- @@ -586,7 +677,7 @@ ALTER TABLE ONLY public.claims -- --- TOC entry 3433 (class 2606 OID 19913) +-- TOC entry 3445 (class 2606 OID 19913) -- Name: collections collections_pkey; Type: CONSTRAINT; Schema: public; Owner: admin -- @@ -595,7 +686,7 @@ ALTER TABLE ONLY public.collections -- --- TOC entry 3435 (class 2606 OID 19952) +-- TOC entry 3447 (class 2606 OID 19952) -- Name: comments comments_pkey; Type: CONSTRAINT; Schema: public; Owner: admin -- @@ -604,7 +695,7 @@ ALTER TABLE ONLY public.comments -- --- TOC entry 3429 (class 2606 OID 19857) +-- TOC entry 3441 (class 2606 OID 19857) -- Name: games games_pkey; Type: CONSTRAINT; Schema: public; Owner: admin -- @@ -613,7 +704,7 @@ ALTER TABLE ONLY public.games -- --- TOC entry 3431 (class 2606 OID 19866) +-- TOC entry 3443 (class 2606 OID 19866) -- Name: matches matches_pkey; Type: CONSTRAINT; Schema: public; Owner: admin -- @@ -622,7 +713,7 @@ ALTER TABLE ONLY public.matches -- --- TOC entry 3425 (class 2606 OID 19824) +-- TOC entry 3437 (class 2606 OID 19824) -- Name: players players_pkey; Type: CONSTRAINT; Schema: public; Owner: admin -- @@ -631,7 +722,16 @@ ALTER TABLE ONLY public.players -- --- TOC entry 3421 (class 2606 OID 16403) +-- TOC entry 3451 (class 2606 OID 20857) +-- Name: userInvites userInvites_pkey; Type: CONSTRAINT; Schema: public; Owner: admin +-- + +ALTER TABLE ONLY public."userInvites" + ADD CONSTRAINT "userInvites_pkey" PRIMARY KEY (id); + + +-- +-- TOC entry 3433 (class 2606 OID 16403) -- Name: users users_pkey; Type: CONSTRAINT; Schema: public; Owner: admin -- @@ -640,7 +740,7 @@ ALTER TABLE ONLY public.users -- --- TOC entry 3452 (class 2606 OID 19979) +-- TOC entry 3468 (class 2606 OID 19979) -- Name: circle_comments circle_comments_circles_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- @@ -649,7 +749,7 @@ ALTER TABLE ONLY public.circle_comments -- --- TOC entry 3453 (class 2606 OID 19984) +-- TOC entry 3469 (class 2606 OID 19984) -- Name: circle_comments circle_comments_comment_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- @@ -658,7 +758,25 @@ ALTER TABLE ONLY public.circle_comments -- --- TOC entry 3439 (class 2606 OID 20708) +-- TOC entry 3470 (class 2606 OID 20835) +-- Name: circle_invites circle_invites_invited_by_user_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin +-- + +ALTER TABLE ONLY public.circle_invites + ADD CONSTRAINT circle_invites_invited_by_user_fkey FOREIGN KEY (invited_by_user_id) REFERENCES public.users(id); + + +-- +-- TOC entry 3471 (class 2606 OID 20830) +-- Name: circle_invites circle_invites_invited_user_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin +-- + +ALTER TABLE ONLY public.circle_invites + ADD CONSTRAINT circle_invites_invited_user_fkey FOREIGN KEY (invited_user_id) REFERENCES public.users(id); + + +-- +-- TOC entry 3455 (class 2606 OID 20708) -- Name: circles circles_users_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- @@ -667,7 +785,7 @@ ALTER TABLE ONLY public.circles -- --- TOC entry 3447 (class 2606 OID 19924) +-- TOC entry 3463 (class 2606 OID 19924) -- Name: collection_games collection_games_collections_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- @@ -676,7 +794,7 @@ ALTER TABLE ONLY public.collection_games -- --- TOC entry 3448 (class 2606 OID 19929) +-- TOC entry 3464 (class 2606 OID 19929) -- Name: collection_games collection_games_games_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- @@ -685,7 +803,7 @@ ALTER TABLE ONLY public.collection_games -- --- TOC entry 3446 (class 2606 OID 19914) +-- TOC entry 3462 (class 2606 OID 19914) -- Name: collections collections_users_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- @@ -694,7 +812,7 @@ ALTER TABLE ONLY public.collections -- --- TOC entry 3449 (class 2606 OID 19953) +-- TOC entry 3465 (class 2606 OID 19953) -- Name: comments comments_users_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- @@ -703,7 +821,7 @@ ALTER TABLE ONLY public.comments -- --- TOC entry 3450 (class 2606 OID 19969) +-- TOC entry 3466 (class 2606 OID 19969) -- Name: match_comments match_comments_comments_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- @@ -712,7 +830,7 @@ ALTER TABLE ONLY public.match_comments -- --- TOC entry 3451 (class 2606 OID 19964) +-- TOC entry 3467 (class 2606 OID 19964) -- Name: match_comments match_comments_matches_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- @@ -721,7 +839,7 @@ ALTER TABLE ONLY public.match_comments -- --- TOC entry 3442 (class 2606 OID 19884) +-- TOC entry 3458 (class 2606 OID 19884) -- Name: match_players match_players_matches_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- @@ -730,7 +848,7 @@ ALTER TABLE ONLY public.match_players -- --- TOC entry 3443 (class 2606 OID 19879) +-- TOC entry 3459 (class 2606 OID 19879) -- Name: match_players match_players_players_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- @@ -739,7 +857,7 @@ ALTER TABLE ONLY public.match_players -- --- TOC entry 3440 (class 2606 OID 19867) +-- TOC entry 3456 (class 2606 OID 19867) -- Name: matches matches_games_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- @@ -748,7 +866,7 @@ ALTER TABLE ONLY public.matches -- --- TOC entry 3441 (class 2606 OID 20721) +-- TOC entry 3457 (class 2606 OID 20721) -- Name: matches matches_users_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- @@ -757,7 +875,7 @@ ALTER TABLE ONLY public.matches -- --- TOC entry 3444 (class 2606 OID 19899) +-- TOC entry 3460 (class 2606 OID 19899) -- Name: player_circles player_circles_circles_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- @@ -766,7 +884,7 @@ ALTER TABLE ONLY public.player_circles -- --- TOC entry 3445 (class 2606 OID 19894) +-- TOC entry 3461 (class 2606 OID 19894) -- Name: player_circles player_circles_players_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- @@ -775,7 +893,7 @@ ALTER TABLE ONLY public.player_circles -- --- TOC entry 3437 (class 2606 OID 20730) +-- TOC entry 3453 (class 2606 OID 20730) -- Name: user_claims user_claims_claimid_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- @@ -784,7 +902,7 @@ ALTER TABLE ONLY public.user_claims -- --- TOC entry 3438 (class 2606 OID 16442) +-- TOC entry 3454 (class 2606 OID 16442) -- Name: user_claims user_claims_userid_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- @@ -793,7 +911,7 @@ ALTER TABLE ONLY public.user_claims -- --- TOC entry 3436 (class 2606 OID 19830) +-- TOC entry 3452 (class 2606 OID 19830) -- Name: users users_players_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- @@ -801,8 +919,524 @@ ALTER TABLE ONLY public.users ADD CONSTRAINT users_players_fkey FOREIGN KEY (player_id) REFERENCES public.players(id) NOT VALID; --- Completed on 2026-02-18 20:07:03 GMT +-- +-- TOC entry 3625 (class 0 OID 0) +-- Dependencies: 257 +-- Name: FUNCTION gtrgm_in(cstring); Type: ACL; Schema: public; Owner: admin +-- + +GRANT ALL ON FUNCTION public.gtrgm_in(cstring) TO "ApiUser"; + + +-- +-- TOC entry 3626 (class 0 OID 0) +-- Dependencies: 258 +-- Name: FUNCTION gtrgm_out(public.gtrgm); Type: ACL; Schema: public; Owner: admin +-- + +GRANT ALL ON FUNCTION public.gtrgm_out(public.gtrgm) TO "ApiUser"; + + +-- +-- TOC entry 3627 (class 0 OID 0) +-- Dependencies: 249 +-- Name: FUNCTION gin_extract_query_trgm(text, internal, smallint, internal, internal, internal, internal); Type: ACL; Schema: public; Owner: admin +-- + +GRANT ALL ON FUNCTION public.gin_extract_query_trgm(text, internal, smallint, internal, internal, internal, internal) TO "ApiUser"; + + +-- +-- TOC entry 3628 (class 0 OID 0) +-- Dependencies: 250 +-- Name: FUNCTION gin_extract_value_trgm(text, internal); Type: ACL; Schema: public; Owner: admin +-- + +GRANT ALL ON FUNCTION public.gin_extract_value_trgm(text, internal) TO "ApiUser"; + + +-- +-- TOC entry 3629 (class 0 OID 0) +-- Dependencies: 251 +-- Name: FUNCTION gin_trgm_consistent(internal, smallint, text, integer, internal, internal, internal, internal); Type: ACL; Schema: public; Owner: admin +-- + +GRANT ALL ON FUNCTION public.gin_trgm_consistent(internal, smallint, text, integer, internal, internal, internal, internal) TO "ApiUser"; + + +-- +-- TOC entry 3630 (class 0 OID 0) +-- Dependencies: 252 +-- Name: FUNCTION gin_trgm_triconsistent(internal, smallint, text, integer, internal, internal, internal); Type: ACL; Schema: public; Owner: admin +-- + +GRANT ALL ON FUNCTION public.gin_trgm_triconsistent(internal, smallint, text, integer, internal, internal, internal) TO "ApiUser"; + + +-- +-- TOC entry 3631 (class 0 OID 0) +-- Dependencies: 253 +-- Name: FUNCTION gtrgm_compress(internal); Type: ACL; Schema: public; Owner: admin +-- + +GRANT ALL ON FUNCTION public.gtrgm_compress(internal) TO "ApiUser"; + + +-- +-- TOC entry 3632 (class 0 OID 0) +-- Dependencies: 254 +-- Name: FUNCTION gtrgm_consistent(internal, text, smallint, oid, internal); Type: ACL; Schema: public; Owner: admin +-- + +GRANT ALL ON FUNCTION public.gtrgm_consistent(internal, text, smallint, oid, internal) TO "ApiUser"; + + +-- +-- TOC entry 3633 (class 0 OID 0) +-- Dependencies: 255 +-- Name: FUNCTION gtrgm_decompress(internal); Type: ACL; Schema: public; Owner: admin +-- + +GRANT ALL ON FUNCTION public.gtrgm_decompress(internal) TO "ApiUser"; + + +-- +-- TOC entry 3634 (class 0 OID 0) +-- Dependencies: 256 +-- Name: FUNCTION gtrgm_distance(internal, text, smallint, oid, internal); Type: ACL; Schema: public; Owner: admin +-- + +GRANT ALL ON FUNCTION public.gtrgm_distance(internal, text, smallint, oid, internal) TO "ApiUser"; + + +-- +-- TOC entry 3635 (class 0 OID 0) +-- Dependencies: 248 +-- Name: FUNCTION gtrgm_options(internal); Type: ACL; Schema: public; Owner: admin +-- + +GRANT ALL ON FUNCTION public.gtrgm_options(internal) TO "ApiUser"; + + +-- +-- TOC entry 3636 (class 0 OID 0) +-- Dependencies: 259 +-- Name: FUNCTION gtrgm_penalty(internal, internal, internal); Type: ACL; Schema: public; Owner: admin +-- + +GRANT ALL ON FUNCTION public.gtrgm_penalty(internal, internal, internal) TO "ApiUser"; + + +-- +-- TOC entry 3637 (class 0 OID 0) +-- Dependencies: 260 +-- Name: FUNCTION gtrgm_picksplit(internal, internal); Type: ACL; Schema: public; Owner: admin +-- + +GRANT ALL ON FUNCTION public.gtrgm_picksplit(internal, internal) TO "ApiUser"; + + +-- +-- TOC entry 3638 (class 0 OID 0) +-- Dependencies: 261 +-- Name: FUNCTION gtrgm_same(public.gtrgm, public.gtrgm, internal); Type: ACL; Schema: public; Owner: admin +-- + +GRANT ALL ON FUNCTION public.gtrgm_same(public.gtrgm, public.gtrgm, internal) TO "ApiUser"; + + +-- +-- TOC entry 3639 (class 0 OID 0) +-- Dependencies: 262 +-- Name: FUNCTION gtrgm_union(internal, internal); Type: ACL; Schema: public; Owner: admin +-- + +GRANT ALL ON FUNCTION public.gtrgm_union(internal, internal) TO "ApiUser"; + + +-- +-- TOC entry 3640 (class 0 OID 0) +-- Dependencies: 263 +-- Name: FUNCTION set_limit(real); Type: ACL; Schema: public; Owner: admin +-- + +GRANT ALL ON FUNCTION public.set_limit(real) TO "ApiUser"; + + +-- +-- TOC entry 3641 (class 0 OID 0) +-- Dependencies: 264 +-- Name: FUNCTION show_limit(); Type: ACL; Schema: public; Owner: admin +-- + +GRANT ALL ON FUNCTION public.show_limit() TO "ApiUser"; + + +-- +-- TOC entry 3642 (class 0 OID 0) +-- Dependencies: 265 +-- Name: FUNCTION show_trgm(text); Type: ACL; Schema: public; Owner: admin +-- + +GRANT ALL ON FUNCTION public.show_trgm(text) TO "ApiUser"; + + +-- +-- TOC entry 3643 (class 0 OID 0) +-- Dependencies: 266 +-- Name: FUNCTION similarity(text, text); Type: ACL; Schema: public; Owner: admin +-- + +GRANT ALL ON FUNCTION public.similarity(text, text) TO "ApiUser"; + + +-- +-- TOC entry 3644 (class 0 OID 0) +-- Dependencies: 267 +-- Name: FUNCTION similarity_dist(text, text); Type: ACL; Schema: public; Owner: admin +-- + +GRANT ALL ON FUNCTION public.similarity_dist(text, text) TO "ApiUser"; + + +-- +-- TOC entry 3645 (class 0 OID 0) +-- Dependencies: 268 +-- Name: FUNCTION similarity_op(text, text); Type: ACL; Schema: public; Owner: admin +-- + +GRANT ALL ON FUNCTION public.similarity_op(text, text) TO "ApiUser"; + + +-- +-- TOC entry 3646 (class 0 OID 0) +-- Dependencies: 269 +-- Name: FUNCTION strict_word_similarity(text, text); Type: ACL; Schema: public; Owner: admin +-- + +GRANT ALL ON FUNCTION public.strict_word_similarity(text, text) TO "ApiUser"; + + +-- +-- TOC entry 3647 (class 0 OID 0) +-- Dependencies: 270 +-- Name: FUNCTION strict_word_similarity_commutator_op(text, text); Type: ACL; Schema: public; Owner: admin +-- + +GRANT ALL ON FUNCTION public.strict_word_similarity_commutator_op(text, text) TO "ApiUser"; + + +-- +-- TOC entry 3648 (class 0 OID 0) +-- Dependencies: 271 +-- Name: FUNCTION strict_word_similarity_dist_commutator_op(text, text); Type: ACL; Schema: public; Owner: admin +-- + +GRANT ALL ON FUNCTION public.strict_word_similarity_dist_commutator_op(text, text) TO "ApiUser"; + + +-- +-- TOC entry 3649 (class 0 OID 0) +-- Dependencies: 272 +-- Name: FUNCTION strict_word_similarity_dist_op(text, text); Type: ACL; Schema: public; Owner: admin +-- + +GRANT ALL ON FUNCTION public.strict_word_similarity_dist_op(text, text) TO "ApiUser"; + + +-- +-- TOC entry 3650 (class 0 OID 0) +-- Dependencies: 273 +-- Name: FUNCTION strict_word_similarity_op(text, text); Type: ACL; Schema: public; Owner: admin +-- + +GRANT ALL ON FUNCTION public.strict_word_similarity_op(text, text) TO "ApiUser"; + + +-- +-- TOC entry 3651 (class 0 OID 0) +-- Dependencies: 274 +-- Name: FUNCTION word_similarity(text, text); Type: ACL; Schema: public; Owner: admin +-- + +GRANT ALL ON FUNCTION public.word_similarity(text, text) TO "ApiUser"; + + +-- +-- TOC entry 3652 (class 0 OID 0) +-- Dependencies: 275 +-- Name: FUNCTION word_similarity_commutator_op(text, text); Type: ACL; Schema: public; Owner: admin +-- + +GRANT ALL ON FUNCTION public.word_similarity_commutator_op(text, text) TO "ApiUser"; + + +-- +-- TOC entry 3653 (class 0 OID 0) +-- Dependencies: 276 +-- Name: FUNCTION word_similarity_dist_commutator_op(text, text); Type: ACL; Schema: public; Owner: admin +-- + +GRANT ALL ON FUNCTION public.word_similarity_dist_commutator_op(text, text) TO "ApiUser"; + + +-- +-- TOC entry 3654 (class 0 OID 0) +-- Dependencies: 277 +-- Name: FUNCTION word_similarity_dist_op(text, text); Type: ACL; Schema: public; Owner: admin +-- + +GRANT ALL ON FUNCTION public.word_similarity_dist_op(text, text) TO "ApiUser"; + + +-- +-- TOC entry 3655 (class 0 OID 0) +-- Dependencies: 278 +-- Name: FUNCTION word_similarity_op(text, text); Type: ACL; Schema: public; Owner: admin +-- + +GRANT ALL ON FUNCTION public.word_similarity_op(text, text) TO "ApiUser"; + + +-- +-- TOC entry 3656 (class 0 OID 0) +-- Dependencies: 243 +-- Name: TABLE circle_comments; Type: ACL; Schema: public; Owner: admin +-- + +GRANT SELECT,INSERT,DELETE,TRIGGER,UPDATE ON TABLE public.circle_comments TO "ApiUser"; + + +-- +-- TOC entry 3657 (class 0 OID 0) +-- Dependencies: 245 +-- Name: TABLE circle_invites; Type: ACL; Schema: public; Owner: admin +-- + +GRANT SELECT,INSERT,DELETE,TRIGGER,UPDATE ON TABLE public.circle_invites TO "ApiUser"; + + +-- +-- TOC entry 3659 (class 0 OID 0) +-- Dependencies: 244 +-- Name: SEQUENCE circle_invites_id_seq; Type: ACL; Schema: public; Owner: admin +-- + +GRANT ALL ON SEQUENCE public.circle_invites_id_seq TO "ApiUser"; + + +-- +-- TOC entry 3660 (class 0 OID 0) +-- Dependencies: 230 +-- Name: TABLE circles; Type: ACL; Schema: public; Owner: admin +-- + +GRANT SELECT,INSERT,DELETE,TRIGGER,UPDATE ON TABLE public.circles TO "ApiUser"; + + +-- +-- TOC entry 3662 (class 0 OID 0) +-- Dependencies: 229 +-- Name: SEQUENCE circles_id_seq; Type: ACL; Schema: public; Owner: admin +-- + +GRANT ALL ON SEQUENCE public.circles_id_seq TO "ApiUser"; + + +-- +-- TOC entry 3663 (class 0 OID 0) +-- Dependencies: 225 +-- Name: TABLE claims; Type: ACL; Schema: public; Owner: admin +-- + +GRANT SELECT,INSERT,DELETE,TRIGGER,UPDATE ON TABLE public.claims TO "ApiUser"; + + +-- +-- TOC entry 3665 (class 0 OID 0) +-- Dependencies: 224 +-- Name: SEQUENCE claims_id_seq; Type: ACL; Schema: public; Owner: admin +-- + +GRANT ALL ON SEQUENCE public.claims_id_seq TO "ApiUser"; + + +-- +-- TOC entry 3666 (class 0 OID 0) +-- Dependencies: 239 +-- Name: TABLE collection_games; Type: ACL; Schema: public; Owner: admin +-- + +GRANT SELECT,INSERT,DELETE,TRIGGER,UPDATE ON TABLE public.collection_games TO "ApiUser"; + + +-- +-- TOC entry 3667 (class 0 OID 0) +-- Dependencies: 238 +-- Name: TABLE collections; Type: ACL; Schema: public; Owner: admin +-- + +GRANT SELECT,INSERT,DELETE,TRIGGER,UPDATE ON TABLE public.collections TO "ApiUser"; + + +-- +-- TOC entry 3669 (class 0 OID 0) +-- Dependencies: 237 +-- Name: SEQUENCE collections_id_seq; Type: ACL; Schema: public; Owner: admin +-- + +GRANT ALL ON SEQUENCE public.collections_id_seq TO "ApiUser"; + + +-- +-- TOC entry 3670 (class 0 OID 0) +-- Dependencies: 241 +-- Name: TABLE comments; Type: ACL; Schema: public; Owner: admin +-- + +GRANT SELECT,INSERT,DELETE,TRIGGER,UPDATE ON TABLE public.comments TO "ApiUser"; + + +-- +-- TOC entry 3672 (class 0 OID 0) +-- Dependencies: 240 +-- Name: SEQUENCE comments_id_seq; Type: ACL; Schema: public; Owner: admin +-- + +GRANT ALL ON SEQUENCE public.comments_id_seq TO "ApiUser"; + + +-- +-- TOC entry 3673 (class 0 OID 0) +-- Dependencies: 232 +-- Name: TABLE games; Type: ACL; Schema: public; Owner: admin +-- + +GRANT SELECT,INSERT,DELETE,TRIGGER,UPDATE ON TABLE public.games TO "ApiUser"; + + +-- +-- TOC entry 3675 (class 0 OID 0) +-- Dependencies: 231 +-- Name: SEQUENCE games_id_seq; Type: ACL; Schema: public; Owner: admin +-- + +GRANT ALL ON SEQUENCE public.games_id_seq TO "ApiUser"; + + +-- +-- TOC entry 3676 (class 0 OID 0) +-- Dependencies: 242 +-- Name: TABLE match_comments; Type: ACL; Schema: public; Owner: admin +-- + +GRANT SELECT,INSERT,DELETE,TRIGGER,UPDATE ON TABLE public.match_comments TO "ApiUser"; + + +-- +-- TOC entry 3677 (class 0 OID 0) +-- Dependencies: 235 +-- Name: TABLE match_players; Type: ACL; Schema: public; Owner: admin +-- + +GRANT SELECT,INSERT,DELETE,TRIGGER,UPDATE ON TABLE public.match_players TO "ApiUser"; + + +-- +-- TOC entry 3678 (class 0 OID 0) +-- Dependencies: 234 +-- Name: TABLE matches; Type: ACL; Schema: public; Owner: admin +-- + +GRANT SELECT,INSERT,DELETE,TRIGGER,UPDATE ON TABLE public.matches TO "ApiUser"; + + +-- +-- TOC entry 3680 (class 0 OID 0) +-- Dependencies: 233 +-- Name: SEQUENCE matches_id_seq; Type: ACL; Schema: public; Owner: admin +-- + +GRANT ALL ON SEQUENCE public.matches_id_seq TO "ApiUser"; + + +-- +-- TOC entry 3681 (class 0 OID 0) +-- Dependencies: 236 +-- Name: TABLE player_circles; Type: ACL; Schema: public; Owner: admin +-- + +GRANT SELECT,INSERT,DELETE,TRIGGER,UPDATE ON TABLE public.player_circles TO "ApiUser"; + + +-- +-- TOC entry 3682 (class 0 OID 0) +-- Dependencies: 228 +-- Name: TABLE players; Type: ACL; Schema: public; Owner: admin +-- + +GRANT SELECT,INSERT,DELETE,TRIGGER,UPDATE ON TABLE public.players TO "ApiUser"; + + +-- +-- TOC entry 3684 (class 0 OID 0) +-- Dependencies: 227 +-- Name: SEQUENCE players_id_seq; Type: ACL; Schema: public; Owner: admin +-- + +GRANT ALL ON SEQUENCE public.players_id_seq TO "ApiUser"; + + +-- +-- TOC entry 3686 (class 0 OID 0) +-- Dependencies: 226 +-- Name: TABLE user_claims; Type: ACL; Schema: public; Owner: admin +-- + +GRANT SELECT,INSERT,DELETE,TRIGGER,UPDATE ON TABLE public.user_claims TO "ApiUser"; + + +-- +-- TOC entry 3687 (class 0 OID 0) +-- Dependencies: 223 +-- Name: TABLE users; Type: ACL; Schema: public; Owner: admin +-- + +GRANT SELECT,INSERT,DELETE,TRIGGER,UPDATE ON TABLE public.users TO "ApiUser"; + + +-- +-- TOC entry 3689 (class 0 OID 0) +-- Dependencies: 220 +-- Name: SEQUENCE users_id_seq; Type: ACL; Schema: public; Owner: admin +-- + +GRANT ALL ON SEQUENCE public.users_id_seq TO "ApiUser"; + + +-- +-- TOC entry 3691 (class 0 OID 0) +-- Dependencies: 222 +-- Name: SEQUENCE users_pass_hash_seq; Type: ACL; Schema: public; Owner: admin +-- + +GRANT ALL ON SEQUENCE public.users_pass_hash_seq TO "ApiUser"; + + +-- +-- TOC entry 3693 (class 0 OID 0) +-- Dependencies: 221 +-- Name: SEQUENCE users_username_seq; Type: ACL; Schema: public; Owner: admin +-- + +GRANT ALL ON SEQUENCE public.users_username_seq TO "ApiUser"; + + +-- Completed on 2026-02-20 14:19:32 GMT -- -- PostgreSQL database dump complete -- + +\unrestrict V5y7Wgbswasgm7UnGlx0qTGOk52yHGHAWgST3HXveDIktl8Dn0CpNmczwHt70e5 + diff --git a/src/emails/invite.tsx b/src/emails/invite.tsx new file mode 100644 index 0000000..14df498 --- /dev/null +++ b/src/emails/invite.tsx @@ -0,0 +1,77 @@ +import * as React from 'react'; +import { brandColours } from '../utilities/helpers'; +import { size } from 'lodash'; + +interface InviteEmailProperties { + playerName: string; + inviteCode: string; +} + +export const InviteEmail = (props: InviteEmailProperties) => ( +
|
+
+
+ You're in, {props.playerName}!++ You've been invited to join {process.env.PRODUCT_NAME}, please click the button below to + finish signing up. + ++ + Join {process.env.PRODUCT_NAME} + + +
+ If above button does not work, copy the link below into a new browser tab:
+ |
+