tempest.games 0.1.3 → 0.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +6 -0
- package/bin/backend.bun.js +1 -1
- package/bin/backend.worker.tribunal.bun.js +38 -0
- package/bin/setup-db.bun.js +3195 -8
- package/drizzle/0000_fine_hardball.sql +33 -0
- package/drizzle/0001_public_greymalkin.sql +101 -0
- package/drizzle/0002_loud_stature.sql +33 -0
- package/drizzle/0003_lyrical_malice.sql +2 -0
- package/drizzle/0004_funny_tana_nile.sql +1 -0
- package/drizzle/0005_reflective_warstar.sql +1 -0
- package/drizzle/0006_mushy_young_avengers.sql +2 -0
- package/drizzle/0007_charming_strong_guy.sql +8 -0
- package/drizzle/meta/0000_snapshot.json +168 -0
- package/drizzle/meta/0001_snapshot.json +471 -0
- package/drizzle/meta/0002_snapshot.json +471 -0
- package/drizzle/meta/0003_snapshot.json +471 -0
- package/drizzle/meta/0004_snapshot.json +465 -0
- package/drizzle/meta/0005_snapshot.json +465 -0
- package/drizzle/meta/0006_snapshot.json +465 -0
- package/drizzle/meta/0007_snapshot.json +465 -0
- package/drizzle/meta/_journal.json +62 -0
- package/package.json +6 -5
- package/__scripts__/destroy-db.bun.ts +0 -29
- package/__scripts__/setup-db.bun.ts +0 -57
- package/__scripts__/setup.vitest.ts +0 -5
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
CREATE TABLE IF NOT EXISTS "games" (
|
|
2
|
+
"id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL
|
|
3
|
+
);
|
|
4
|
+
--> statement-breakpoint
|
|
5
|
+
CREATE TABLE IF NOT EXISTS "players" (
|
|
6
|
+
"user_id" uuid NOT NULL,
|
|
7
|
+
"game_id" uuid NOT NULL,
|
|
8
|
+
"score" integer NOT NULL,
|
|
9
|
+
CONSTRAINT "players_user_id_game_id_pk" PRIMARY KEY("user_id","game_id")
|
|
10
|
+
);
|
|
11
|
+
--> statement-breakpoint
|
|
12
|
+
CREATE TABLE IF NOT EXISTS "users" (
|
|
13
|
+
"id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
|
|
14
|
+
"username" varchar(255) NOT NULL,
|
|
15
|
+
"email" varchar(255) NOT NULL,
|
|
16
|
+
"hash" varchar(255) NOT NULL,
|
|
17
|
+
"salt" varchar(255) NOT NULL
|
|
18
|
+
);
|
|
19
|
+
--> statement-breakpoint
|
|
20
|
+
DO $$ BEGIN
|
|
21
|
+
ALTER TABLE "players" ADD CONSTRAINT "players_user_id_users_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."users"("id") ON DELETE no action ON UPDATE no action;
|
|
22
|
+
EXCEPTION
|
|
23
|
+
WHEN duplicate_object THEN null;
|
|
24
|
+
END $$;
|
|
25
|
+
--> statement-breakpoint
|
|
26
|
+
DO $$ BEGIN
|
|
27
|
+
ALTER TABLE "players" ADD CONSTRAINT "players_game_id_games_id_fk" FOREIGN KEY ("game_id") REFERENCES "public"."games"("id") ON DELETE no action ON UPDATE no action;
|
|
28
|
+
EXCEPTION
|
|
29
|
+
WHEN duplicate_object THEN null;
|
|
30
|
+
END $$;
|
|
31
|
+
--> statement-breakpoint
|
|
32
|
+
CREATE UNIQUE INDEX IF NOT EXISTS "users_username_unique" ON "users" USING btree ("username");--> statement-breakpoint
|
|
33
|
+
CREATE UNIQUE INDEX IF NOT EXISTS "users_email_unique" ON "users" USING btree ("email");
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
DO $$ BEGIN
|
|
2
|
+
CREATE TYPE "public"."role" AS ENUM('admin', 'user');
|
|
3
|
+
EXCEPTION
|
|
4
|
+
WHEN duplicate_object THEN null;
|
|
5
|
+
END $$;
|
|
6
|
+
--> statement-breakpoint
|
|
7
|
+
DO $$ BEGIN
|
|
8
|
+
CREATE TYPE "public"."tracked_user_columnName" AS ENUM('username', 'email', 'hash', 'userRole');
|
|
9
|
+
EXCEPTION
|
|
10
|
+
WHEN duplicate_object THEN null;
|
|
11
|
+
END $$;
|
|
12
|
+
--> statement-breakpoint
|
|
13
|
+
DO $$ BEGIN
|
|
14
|
+
CREATE TYPE "public"."two_factor_method" AS ENUM('email', 'phone');
|
|
15
|
+
EXCEPTION
|
|
16
|
+
WHEN duplicate_object THEN null;
|
|
17
|
+
END $$;
|
|
18
|
+
--> statement-breakpoint
|
|
19
|
+
CREATE TABLE IF NOT EXISTS "banished_ips" (
|
|
20
|
+
"ip" varchar(45) NOT NULL,
|
|
21
|
+
"reason" varchar(2048) NOT NULL,
|
|
22
|
+
"banishedAt" timestamp DEFAULT now() NOT NULL,
|
|
23
|
+
"banishedUntil" timestamp NOT NULL
|
|
24
|
+
);
|
|
25
|
+
--> statement-breakpoint
|
|
26
|
+
CREATE TABLE IF NOT EXISTS "login_history" (
|
|
27
|
+
"id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
|
|
28
|
+
"userId" uuid NOT NULL,
|
|
29
|
+
"loginTime" timestamp DEFAULT now() NOT NULL,
|
|
30
|
+
"ipAddress" varchar(45) NOT NULL,
|
|
31
|
+
"userAgent" varchar(1024),
|
|
32
|
+
"geoLocation" varchar(255),
|
|
33
|
+
"successful" boolean DEFAULT true NOT NULL
|
|
34
|
+
);
|
|
35
|
+
--> statement-breakpoint
|
|
36
|
+
CREATE TABLE IF NOT EXISTS "password_reset_attempts" (
|
|
37
|
+
"id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
|
|
38
|
+
"userId" uuid NOT NULL,
|
|
39
|
+
"requestedIp" varchar(45) NOT NULL,
|
|
40
|
+
"requestedAt" timestamp DEFAULT now() NOT NULL,
|
|
41
|
+
"succeededIp" varchar(45),
|
|
42
|
+
"succeededAt" timestamp,
|
|
43
|
+
"verificationMethod" "two_factor_method" NOT NULL
|
|
44
|
+
);
|
|
45
|
+
--> statement-breakpoint
|
|
46
|
+
CREATE TABLE IF NOT EXISTS "user_changes" (
|
|
47
|
+
"id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
|
|
48
|
+
"userId" uuid NOT NULL,
|
|
49
|
+
"changedAt" timestamp DEFAULT now() NOT NULL,
|
|
50
|
+
"changedIp" varchar(45) NOT NULL,
|
|
51
|
+
"changedColumn" "tracked_user_columnName" NOT NULL,
|
|
52
|
+
"oldValue" varchar(255),
|
|
53
|
+
"newValue" varchar(255)
|
|
54
|
+
);
|
|
55
|
+
--> statement-breakpoint
|
|
56
|
+
ALTER TABLE "players" RENAME COLUMN "user_id" TO "userId";--> statement-breakpoint
|
|
57
|
+
ALTER TABLE "players" RENAME COLUMN "game_id" TO "gameId";--> statement-breakpoint
|
|
58
|
+
ALTER TABLE "players" DROP CONSTRAINT "players_user_id_users_id_fk";
|
|
59
|
+
--> statement-breakpoint
|
|
60
|
+
ALTER TABLE "players" DROP CONSTRAINT "players_game_id_games_id_fk";
|
|
61
|
+
--> statement-breakpoint
|
|
62
|
+
ALTER TABLE "players" DROP CONSTRAINT "players_user_id_game_id_pk";--> statement-breakpoint
|
|
63
|
+
ALTER TABLE "users" ALTER COLUMN "username" SET DATA TYPE varchar(16);--> statement-breakpoint
|
|
64
|
+
ALTER TABLE "users" ALTER COLUMN "email" SET DATA TYPE varchar(254);--> statement-breakpoint
|
|
65
|
+
ALTER TABLE "users" ALTER COLUMN "hash" SET DATA TYPE varchar(64);--> statement-breakpoint
|
|
66
|
+
ALTER TABLE "users" ALTER COLUMN "salt" SET DATA TYPE varchar(36);--> statement-breakpoint
|
|
67
|
+
ALTER TABLE "players" ADD CONSTRAINT "players_userId_gameId_pk" PRIMARY KEY("userId","gameId");--> statement-breakpoint
|
|
68
|
+
ALTER TABLE "users" ADD COLUMN "createdAt" timestamp DEFAULT now() NOT NULL;--> statement-breakpoint
|
|
69
|
+
ALTER TABLE "users" ADD COLUMN "createdIp" varchar(45);--> statement-breakpoint
|
|
70
|
+
ALTER TABLE "users" ADD COLUMN "isActive" boolean DEFAULT true NOT NULL;--> statement-breakpoint
|
|
71
|
+
ALTER TABLE "users" ADD COLUMN "verifiedAt" timestamp;--> statement-breakpoint
|
|
72
|
+
ALTER TABLE "users" ADD COLUMN "userRole" "role" DEFAULT 'user';--> statement-breakpoint
|
|
73
|
+
DO $$ BEGIN
|
|
74
|
+
ALTER TABLE "login_history" ADD CONSTRAINT "login_history_userId_users_id_fk" FOREIGN KEY ("userId") REFERENCES "public"."users"("id") ON DELETE no action ON UPDATE no action;
|
|
75
|
+
EXCEPTION
|
|
76
|
+
WHEN duplicate_object THEN null;
|
|
77
|
+
END $$;
|
|
78
|
+
--> statement-breakpoint
|
|
79
|
+
DO $$ BEGIN
|
|
80
|
+
ALTER TABLE "password_reset_attempts" ADD CONSTRAINT "password_reset_attempts_userId_users_id_fk" FOREIGN KEY ("userId") REFERENCES "public"."users"("id") ON DELETE no action ON UPDATE no action;
|
|
81
|
+
EXCEPTION
|
|
82
|
+
WHEN duplicate_object THEN null;
|
|
83
|
+
END $$;
|
|
84
|
+
--> statement-breakpoint
|
|
85
|
+
DO $$ BEGIN
|
|
86
|
+
ALTER TABLE "user_changes" ADD CONSTRAINT "user_changes_userId_users_id_fk" FOREIGN KEY ("userId") REFERENCES "public"."users"("id") ON DELETE no action ON UPDATE no action;
|
|
87
|
+
EXCEPTION
|
|
88
|
+
WHEN duplicate_object THEN null;
|
|
89
|
+
END $$;
|
|
90
|
+
--> statement-breakpoint
|
|
91
|
+
DO $$ BEGIN
|
|
92
|
+
ALTER TABLE "players" ADD CONSTRAINT "players_userId_users_id_fk" FOREIGN KEY ("userId") REFERENCES "public"."users"("id") ON DELETE no action ON UPDATE no action;
|
|
93
|
+
EXCEPTION
|
|
94
|
+
WHEN duplicate_object THEN null;
|
|
95
|
+
END $$;
|
|
96
|
+
--> statement-breakpoint
|
|
97
|
+
DO $$ BEGIN
|
|
98
|
+
ALTER TABLE "players" ADD CONSTRAINT "players_gameId_games_id_fk" FOREIGN KEY ("gameId") REFERENCES "public"."games"("id") ON DELETE no action ON UPDATE no action;
|
|
99
|
+
EXCEPTION
|
|
100
|
+
WHEN duplicate_object THEN null;
|
|
101
|
+
END $$;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
ALTER TABLE "banished_ips" RENAME TO "banishedIps";--> statement-breakpoint
|
|
2
|
+
ALTER TABLE "login_history" RENAME TO "loginHistory";--> statement-breakpoint
|
|
3
|
+
ALTER TABLE "password_reset_attempts" RENAME TO "passwordResetAttempts";--> statement-breakpoint
|
|
4
|
+
ALTER TABLE "user_changes" RENAME TO "userChanges";--> statement-breakpoint
|
|
5
|
+
ALTER TABLE "loginHistory" DROP CONSTRAINT "login_history_userId_users_id_fk";
|
|
6
|
+
--> statement-breakpoint
|
|
7
|
+
ALTER TABLE "passwordResetAttempts" DROP CONSTRAINT "password_reset_attempts_userId_users_id_fk";
|
|
8
|
+
--> statement-breakpoint
|
|
9
|
+
ALTER TABLE "userChanges" DROP CONSTRAINT "user_changes_userId_users_id_fk";
|
|
10
|
+
--> statement-breakpoint
|
|
11
|
+
DROP INDEX IF EXISTS "users_username_unique";--> statement-breakpoint
|
|
12
|
+
DROP INDEX IF EXISTS "users_email_unique";--> statement-breakpoint
|
|
13
|
+
ALTER TABLE "banishedIps" ALTER COLUMN "banishedUntil" DROP NOT NULL;--> statement-breakpoint
|
|
14
|
+
DO $$ BEGIN
|
|
15
|
+
ALTER TABLE "loginHistory" ADD CONSTRAINT "loginHistory_userId_users_id_fk" FOREIGN KEY ("userId") REFERENCES "public"."users"("id") ON DELETE no action ON UPDATE no action;
|
|
16
|
+
EXCEPTION
|
|
17
|
+
WHEN duplicate_object THEN null;
|
|
18
|
+
END $$;
|
|
19
|
+
--> statement-breakpoint
|
|
20
|
+
DO $$ BEGIN
|
|
21
|
+
ALTER TABLE "passwordResetAttempts" ADD CONSTRAINT "passwordResetAttempts_userId_users_id_fk" FOREIGN KEY ("userId") REFERENCES "public"."users"("id") ON DELETE no action ON UPDATE no action;
|
|
22
|
+
EXCEPTION
|
|
23
|
+
WHEN duplicate_object THEN null;
|
|
24
|
+
END $$;
|
|
25
|
+
--> statement-breakpoint
|
|
26
|
+
DO $$ BEGIN
|
|
27
|
+
ALTER TABLE "userChanges" ADD CONSTRAINT "userChanges_userId_users_id_fk" FOREIGN KEY ("userId") REFERENCES "public"."users"("id") ON DELETE no action ON UPDATE no action;
|
|
28
|
+
EXCEPTION
|
|
29
|
+
WHEN duplicate_object THEN null;
|
|
30
|
+
END $$;
|
|
31
|
+
--> statement-breakpoint
|
|
32
|
+
CREATE UNIQUE INDEX IF NOT EXISTS "users_username_index" ON "users" USING btree ("username");--> statement-breakpoint
|
|
33
|
+
CREATE UNIQUE INDEX IF NOT EXISTS "users_email_index" ON "users" USING btree ("email");
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
ALTER TABLE "loginHistory" DROP COLUMN IF EXISTS "geoLocation";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
ALTER TABLE "banishedIps" ADD PRIMARY KEY ("ip");
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
ALTER TABLE "banishedIps" ALTER COLUMN "banishedAt" SET DATA TYPE timestamp with time zone;--> statement-breakpoint
|
|
2
|
+
ALTER TABLE "banishedIps" ALTER COLUMN "banishedUntil" SET DATA TYPE timestamp with time zone;--> statement-breakpoint
|
|
3
|
+
ALTER TABLE "loginHistory" ALTER COLUMN "loginTime" SET DATA TYPE timestamp with time zone;--> statement-breakpoint
|
|
4
|
+
ALTER TABLE "passwordResetAttempts" ALTER COLUMN "requestedAt" SET DATA TYPE timestamp with time zone;--> statement-breakpoint
|
|
5
|
+
ALTER TABLE "passwordResetAttempts" ALTER COLUMN "succeededAt" SET DATA TYPE timestamp with time zone;--> statement-breakpoint
|
|
6
|
+
ALTER TABLE "userChanges" ALTER COLUMN "changedAt" SET DATA TYPE timestamp with time zone;--> statement-breakpoint
|
|
7
|
+
ALTER TABLE "users" ALTER COLUMN "createdAt" SET DATA TYPE timestamp with time zone;--> statement-breakpoint
|
|
8
|
+
ALTER TABLE "users" ALTER COLUMN "verifiedAt" SET DATA TYPE timestamp with time zone;
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "682a6a4a-d065-4536-b478-63c29ffb8ae1",
|
|
3
|
+
"prevId": "00000000-0000-0000-0000-000000000000",
|
|
4
|
+
"version": "7",
|
|
5
|
+
"dialect": "postgresql",
|
|
6
|
+
"tables": {
|
|
7
|
+
"public.games": {
|
|
8
|
+
"name": "games",
|
|
9
|
+
"schema": "",
|
|
10
|
+
"columns": {
|
|
11
|
+
"id": {
|
|
12
|
+
"name": "id",
|
|
13
|
+
"type": "uuid",
|
|
14
|
+
"primaryKey": true,
|
|
15
|
+
"notNull": true,
|
|
16
|
+
"default": "gen_random_uuid()"
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
"indexes": {},
|
|
20
|
+
"foreignKeys": {},
|
|
21
|
+
"compositePrimaryKeys": {},
|
|
22
|
+
"uniqueConstraints": {}
|
|
23
|
+
},
|
|
24
|
+
"public.players": {
|
|
25
|
+
"name": "players",
|
|
26
|
+
"schema": "",
|
|
27
|
+
"columns": {
|
|
28
|
+
"user_id": {
|
|
29
|
+
"name": "user_id",
|
|
30
|
+
"type": "uuid",
|
|
31
|
+
"primaryKey": false,
|
|
32
|
+
"notNull": true
|
|
33
|
+
},
|
|
34
|
+
"game_id": {
|
|
35
|
+
"name": "game_id",
|
|
36
|
+
"type": "uuid",
|
|
37
|
+
"primaryKey": false,
|
|
38
|
+
"notNull": true
|
|
39
|
+
},
|
|
40
|
+
"score": {
|
|
41
|
+
"name": "score",
|
|
42
|
+
"type": "integer",
|
|
43
|
+
"primaryKey": false,
|
|
44
|
+
"notNull": true
|
|
45
|
+
}
|
|
46
|
+
},
|
|
47
|
+
"indexes": {},
|
|
48
|
+
"foreignKeys": {
|
|
49
|
+
"players_user_id_users_id_fk": {
|
|
50
|
+
"name": "players_user_id_users_id_fk",
|
|
51
|
+
"tableFrom": "players",
|
|
52
|
+
"tableTo": "users",
|
|
53
|
+
"columnsFrom": [
|
|
54
|
+
"user_id"
|
|
55
|
+
],
|
|
56
|
+
"columnsTo": [
|
|
57
|
+
"id"
|
|
58
|
+
],
|
|
59
|
+
"onDelete": "no action",
|
|
60
|
+
"onUpdate": "no action"
|
|
61
|
+
},
|
|
62
|
+
"players_game_id_games_id_fk": {
|
|
63
|
+
"name": "players_game_id_games_id_fk",
|
|
64
|
+
"tableFrom": "players",
|
|
65
|
+
"tableTo": "games",
|
|
66
|
+
"columnsFrom": [
|
|
67
|
+
"game_id"
|
|
68
|
+
],
|
|
69
|
+
"columnsTo": [
|
|
70
|
+
"id"
|
|
71
|
+
],
|
|
72
|
+
"onDelete": "no action",
|
|
73
|
+
"onUpdate": "no action"
|
|
74
|
+
}
|
|
75
|
+
},
|
|
76
|
+
"compositePrimaryKeys": {
|
|
77
|
+
"players_user_id_game_id_pk": {
|
|
78
|
+
"name": "players_user_id_game_id_pk",
|
|
79
|
+
"columns": [
|
|
80
|
+
"user_id",
|
|
81
|
+
"game_id"
|
|
82
|
+
]
|
|
83
|
+
}
|
|
84
|
+
},
|
|
85
|
+
"uniqueConstraints": {}
|
|
86
|
+
},
|
|
87
|
+
"public.users": {
|
|
88
|
+
"name": "users",
|
|
89
|
+
"schema": "",
|
|
90
|
+
"columns": {
|
|
91
|
+
"id": {
|
|
92
|
+
"name": "id",
|
|
93
|
+
"type": "uuid",
|
|
94
|
+
"primaryKey": true,
|
|
95
|
+
"notNull": true,
|
|
96
|
+
"default": "gen_random_uuid()"
|
|
97
|
+
},
|
|
98
|
+
"username": {
|
|
99
|
+
"name": "username",
|
|
100
|
+
"type": "varchar(255)",
|
|
101
|
+
"primaryKey": false,
|
|
102
|
+
"notNull": true
|
|
103
|
+
},
|
|
104
|
+
"email": {
|
|
105
|
+
"name": "email",
|
|
106
|
+
"type": "varchar(255)",
|
|
107
|
+
"primaryKey": false,
|
|
108
|
+
"notNull": true
|
|
109
|
+
},
|
|
110
|
+
"hash": {
|
|
111
|
+
"name": "hash",
|
|
112
|
+
"type": "varchar(255)",
|
|
113
|
+
"primaryKey": false,
|
|
114
|
+
"notNull": true
|
|
115
|
+
},
|
|
116
|
+
"salt": {
|
|
117
|
+
"name": "salt",
|
|
118
|
+
"type": "varchar(255)",
|
|
119
|
+
"primaryKey": false,
|
|
120
|
+
"notNull": true
|
|
121
|
+
}
|
|
122
|
+
},
|
|
123
|
+
"indexes": {
|
|
124
|
+
"users_username_unique": {
|
|
125
|
+
"name": "users_username_unique",
|
|
126
|
+
"columns": [
|
|
127
|
+
{
|
|
128
|
+
"expression": "username",
|
|
129
|
+
"isExpression": false,
|
|
130
|
+
"asc": true,
|
|
131
|
+
"nulls": "last"
|
|
132
|
+
}
|
|
133
|
+
],
|
|
134
|
+
"isUnique": true,
|
|
135
|
+
"concurrently": false,
|
|
136
|
+
"method": "btree",
|
|
137
|
+
"with": {}
|
|
138
|
+
},
|
|
139
|
+
"users_email_unique": {
|
|
140
|
+
"name": "users_email_unique",
|
|
141
|
+
"columns": [
|
|
142
|
+
{
|
|
143
|
+
"expression": "email",
|
|
144
|
+
"isExpression": false,
|
|
145
|
+
"asc": true,
|
|
146
|
+
"nulls": "last"
|
|
147
|
+
}
|
|
148
|
+
],
|
|
149
|
+
"isUnique": true,
|
|
150
|
+
"concurrently": false,
|
|
151
|
+
"method": "btree",
|
|
152
|
+
"with": {}
|
|
153
|
+
}
|
|
154
|
+
},
|
|
155
|
+
"foreignKeys": {},
|
|
156
|
+
"compositePrimaryKeys": {},
|
|
157
|
+
"uniqueConstraints": {}
|
|
158
|
+
}
|
|
159
|
+
},
|
|
160
|
+
"enums": {},
|
|
161
|
+
"schemas": {},
|
|
162
|
+
"sequences": {},
|
|
163
|
+
"_meta": {
|
|
164
|
+
"columns": {},
|
|
165
|
+
"schemas": {},
|
|
166
|
+
"tables": {}
|
|
167
|
+
}
|
|
168
|
+
}
|