@ravxd/velocitydb 0.1.0 → 0.1.2

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.
@@ -1,564 +0,0 @@
1
- {
2
- "id": "9a025d09-a4e2-4cfe-ba2c-deaf88eef84c",
3
- "prevId": "00000000-0000-0000-0000-000000000000",
4
- "version": "7",
5
- "dialect": "postgresql",
6
- "tables": {
7
- "public.afk_entries": {
8
- "name": "afk_entries",
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
- "member_id": {
19
- "name": "member_id",
20
- "type": "uuid",
21
- "primaryKey": false,
22
- "notNull": true
23
- },
24
- "afk_date": {
25
- "name": "afk_date",
26
- "type": "date",
27
- "primaryKey": false,
28
- "notNull": true
29
- },
30
- "notes": {
31
- "name": "notes",
32
- "type": "text",
33
- "primaryKey": false,
34
- "notNull": false
35
- },
36
- "created_at": {
37
- "name": "created_at",
38
- "type": "timestamp",
39
- "primaryKey": false,
40
- "notNull": true,
41
- "default": "now()"
42
- }
43
- },
44
- "indexes": {
45
- "afk_entries_member_id_idx": {
46
- "name": "afk_entries_member_id_idx",
47
- "columns": [
48
- {
49
- "expression": "member_id",
50
- "isExpression": false,
51
- "asc": true,
52
- "nulls": "last"
53
- }
54
- ],
55
- "isUnique": false,
56
- "concurrently": false,
57
- "method": "btree",
58
- "with": {}
59
- },
60
- "afk_entries_date_idx": {
61
- "name": "afk_entries_date_idx",
62
- "columns": [
63
- {
64
- "expression": "afk_date",
65
- "isExpression": false,
66
- "asc": true,
67
- "nulls": "last"
68
- }
69
- ],
70
- "isUnique": false,
71
- "concurrently": false,
72
- "method": "btree",
73
- "with": {}
74
- }
75
- },
76
- "foreignKeys": {
77
- "afk_entries_member_id_members_id_fk": {
78
- "name": "afk_entries_member_id_members_id_fk",
79
- "tableFrom": "afk_entries",
80
- "tableTo": "members",
81
- "columnsFrom": [
82
- "member_id"
83
- ],
84
- "columnsTo": [
85
- "id"
86
- ],
87
- "onDelete": "cascade",
88
- "onUpdate": "no action"
89
- }
90
- },
91
- "compositePrimaryKeys": {},
92
- "uniqueConstraints": {},
93
- "policies": {},
94
- "checkConstraints": {},
95
- "isRLSEnabled": false
96
- },
97
- "public.characters": {
98
- "name": "characters",
99
- "schema": "",
100
- "columns": {
101
- "id": {
102
- "name": "id",
103
- "type": "uuid",
104
- "primaryKey": true,
105
- "notNull": true,
106
- "default": "gen_random_uuid()"
107
- },
108
- "member_id": {
109
- "name": "member_id",
110
- "type": "uuid",
111
- "primaryKey": false,
112
- "notNull": true
113
- },
114
- "name": {
115
- "name": "name",
116
- "type": "text",
117
- "primaryKey": false,
118
- "notNull": true
119
- },
120
- "realm": {
121
- "name": "realm",
122
- "type": "text",
123
- "primaryKey": false,
124
- "notNull": true
125
- },
126
- "class": {
127
- "name": "class",
128
- "type": "text",
129
- "primaryKey": false,
130
- "notNull": true
131
- },
132
- "spec": {
133
- "name": "spec",
134
- "type": "text",
135
- "primaryKey": false,
136
- "notNull": true
137
- },
138
- "status": {
139
- "name": "status",
140
- "type": "text",
141
- "primaryKey": false,
142
- "notNull": true,
143
- "default": "'active'"
144
- },
145
- "is_main": {
146
- "name": "is_main",
147
- "type": "boolean",
148
- "primaryKey": false,
149
- "notNull": true,
150
- "default": false
151
- },
152
- "wowutils_character_id": {
153
- "name": "wowutils_character_id",
154
- "type": "text",
155
- "primaryKey": false,
156
- "notNull": false
157
- },
158
- "created_at": {
159
- "name": "created_at",
160
- "type": "timestamp",
161
- "primaryKey": false,
162
- "notNull": true,
163
- "default": "now()"
164
- },
165
- "updated_at": {
166
- "name": "updated_at",
167
- "type": "timestamp",
168
- "primaryKey": false,
169
- "notNull": true,
170
- "default": "now()"
171
- }
172
- },
173
- "indexes": {
174
- "characters_member_id_idx": {
175
- "name": "characters_member_id_idx",
176
- "columns": [
177
- {
178
- "expression": "member_id",
179
- "isExpression": false,
180
- "asc": true,
181
- "nulls": "last"
182
- }
183
- ],
184
- "isUnique": false,
185
- "concurrently": false,
186
- "method": "btree",
187
- "with": {}
188
- }
189
- },
190
- "foreignKeys": {
191
- "characters_member_id_members_id_fk": {
192
- "name": "characters_member_id_members_id_fk",
193
- "tableFrom": "characters",
194
- "tableTo": "members",
195
- "columnsFrom": [
196
- "member_id"
197
- ],
198
- "columnsTo": [
199
- "id"
200
- ],
201
- "onDelete": "cascade",
202
- "onUpdate": "no action"
203
- }
204
- },
205
- "compositePrimaryKeys": {},
206
- "uniqueConstraints": {
207
- "characters_wowutils_character_id_unique": {
208
- "name": "characters_wowutils_character_id_unique",
209
- "nullsNotDistinct": false,
210
- "columns": [
211
- "wowutils_character_id"
212
- ]
213
- }
214
- },
215
- "policies": {},
216
- "checkConstraints": {},
217
- "isRLSEnabled": false
218
- },
219
- "public.members": {
220
- "name": "members",
221
- "schema": "",
222
- "columns": {
223
- "id": {
224
- "name": "id",
225
- "type": "uuid",
226
- "primaryKey": true,
227
- "notNull": true,
228
- "default": "gen_random_uuid()"
229
- },
230
- "discord_id": {
231
- "name": "discord_id",
232
- "type": "text",
233
- "primaryKey": false,
234
- "notNull": true
235
- },
236
- "discord_username": {
237
- "name": "discord_username",
238
- "type": "text",
239
- "primaryKey": false,
240
- "notNull": true
241
- },
242
- "display_name": {
243
- "name": "display_name",
244
- "type": "text",
245
- "primaryKey": false,
246
- "notNull": true
247
- },
248
- "battletag": {
249
- "name": "battletag",
250
- "type": "text",
251
- "primaryKey": false,
252
- "notNull": false
253
- },
254
- "role": {
255
- "name": "role",
256
- "type": "member_role",
257
- "typeSchema": "public",
258
- "primaryKey": false,
259
- "notNull": true,
260
- "default": "'member'"
261
- },
262
- "is_admin": {
263
- "name": "is_admin",
264
- "type": "boolean",
265
- "primaryKey": false,
266
- "notNull": true,
267
- "default": false
268
- },
269
- "wowutils_member_id": {
270
- "name": "wowutils_member_id",
271
- "type": "text",
272
- "primaryKey": false,
273
- "notNull": false
274
- },
275
- "wowutils_alias": {
276
- "name": "wowutils_alias",
277
- "type": "text",
278
- "primaryKey": false,
279
- "notNull": false
280
- },
281
- "wowutils_rank": {
282
- "name": "wowutils_rank",
283
- "type": "text",
284
- "primaryKey": false,
285
- "notNull": false
286
- },
287
- "wowutils_main_role": {
288
- "name": "wowutils_main_role",
289
- "type": "text",
290
- "primaryKey": false,
291
- "notNull": false
292
- },
293
- "link_status": {
294
- "name": "link_status",
295
- "type": "link_status",
296
- "typeSchema": "public",
297
- "primaryKey": false,
298
- "notNull": true,
299
- "default": "'unlinked'"
300
- },
301
- "created_at": {
302
- "name": "created_at",
303
- "type": "timestamp",
304
- "primaryKey": false,
305
- "notNull": true,
306
- "default": "now()"
307
- },
308
- "updated_at": {
309
- "name": "updated_at",
310
- "type": "timestamp",
311
- "primaryKey": false,
312
- "notNull": true,
313
- "default": "now()"
314
- }
315
- },
316
- "indexes": {
317
- "members_discord_id_idx": {
318
- "name": "members_discord_id_idx",
319
- "columns": [
320
- {
321
- "expression": "discord_id",
322
- "isExpression": false,
323
- "asc": true,
324
- "nulls": "last"
325
- }
326
- ],
327
- "isUnique": false,
328
- "concurrently": false,
329
- "method": "btree",
330
- "with": {}
331
- }
332
- },
333
- "foreignKeys": {},
334
- "compositePrimaryKeys": {},
335
- "uniqueConstraints": {
336
- "members_discord_id_unique": {
337
- "name": "members_discord_id_unique",
338
- "nullsNotDistinct": false,
339
- "columns": [
340
- "discord_id"
341
- ]
342
- },
343
- "members_wowutils_member_id_unique": {
344
- "name": "members_wowutils_member_id_unique",
345
- "nullsNotDistinct": false,
346
- "columns": [
347
- "wowutils_member_id"
348
- ]
349
- }
350
- },
351
- "policies": {},
352
- "checkConstraints": {},
353
- "isRLSEnabled": false
354
- },
355
- "public.requests": {
356
- "name": "requests",
357
- "schema": "",
358
- "columns": {
359
- "id": {
360
- "name": "id",
361
- "type": "uuid",
362
- "primaryKey": true,
363
- "notNull": true,
364
- "default": "gen_random_uuid()"
365
- },
366
- "member_id": {
367
- "name": "member_id",
368
- "type": "uuid",
369
- "primaryKey": false,
370
- "notNull": true
371
- },
372
- "character_id": {
373
- "name": "character_id",
374
- "type": "uuid",
375
- "primaryKey": false,
376
- "notNull": false
377
- },
378
- "character_name": {
379
- "name": "character_name",
380
- "type": "text",
381
- "primaryKey": false,
382
- "notNull": true
383
- },
384
- "class_spec": {
385
- "name": "class_spec",
386
- "type": "text",
387
- "primaryKey": false,
388
- "notNull": true
389
- },
390
- "notes": {
391
- "name": "notes",
392
- "type": "text",
393
- "primaryKey": false,
394
- "notNull": false
395
- },
396
- "week_start": {
397
- "name": "week_start",
398
- "type": "date",
399
- "primaryKey": false,
400
- "notNull": true
401
- },
402
- "status": {
403
- "name": "status",
404
- "type": "request_status",
405
- "typeSchema": "public",
406
- "primaryKey": false,
407
- "notNull": true,
408
- "default": "'pending'"
409
- },
410
- "created_at": {
411
- "name": "created_at",
412
- "type": "timestamp",
413
- "primaryKey": false,
414
- "notNull": true,
415
- "default": "now()"
416
- },
417
- "updated_at": {
418
- "name": "updated_at",
419
- "type": "timestamp",
420
- "primaryKey": false,
421
- "notNull": true,
422
- "default": "now()"
423
- }
424
- },
425
- "indexes": {
426
- "requests_week_start_idx": {
427
- "name": "requests_week_start_idx",
428
- "columns": [
429
- {
430
- "expression": "week_start",
431
- "isExpression": false,
432
- "asc": true,
433
- "nulls": "last"
434
- }
435
- ],
436
- "isUnique": false,
437
- "concurrently": false,
438
- "method": "btree",
439
- "with": {}
440
- },
441
- "requests_member_id_idx": {
442
- "name": "requests_member_id_idx",
443
- "columns": [
444
- {
445
- "expression": "member_id",
446
- "isExpression": false,
447
- "asc": true,
448
- "nulls": "last"
449
- }
450
- ],
451
- "isUnique": false,
452
- "concurrently": false,
453
- "method": "btree",
454
- "with": {}
455
- }
456
- },
457
- "foreignKeys": {
458
- "requests_member_id_members_id_fk": {
459
- "name": "requests_member_id_members_id_fk",
460
- "tableFrom": "requests",
461
- "tableTo": "members",
462
- "columnsFrom": [
463
- "member_id"
464
- ],
465
- "columnsTo": [
466
- "id"
467
- ],
468
- "onDelete": "cascade",
469
- "onUpdate": "no action"
470
- },
471
- "requests_character_id_characters_id_fk": {
472
- "name": "requests_character_id_characters_id_fk",
473
- "tableFrom": "requests",
474
- "tableTo": "characters",
475
- "columnsFrom": [
476
- "character_id"
477
- ],
478
- "columnsTo": [
479
- "id"
480
- ],
481
- "onDelete": "set null",
482
- "onUpdate": "no action"
483
- }
484
- },
485
- "compositePrimaryKeys": {},
486
- "uniqueConstraints": {},
487
- "policies": {},
488
- "checkConstraints": {},
489
- "isRLSEnabled": false
490
- },
491
- "public.sync_state": {
492
- "name": "sync_state",
493
- "schema": "",
494
- "columns": {
495
- "id": {
496
- "name": "id",
497
- "type": "uuid",
498
- "primaryKey": true,
499
- "notNull": true,
500
- "default": "gen_random_uuid()"
501
- },
502
- "last_synced_at": {
503
- "name": "last_synced_at",
504
- "type": "timestamp",
505
- "primaryKey": false,
506
- "notNull": true,
507
- "default": "now()"
508
- },
509
- "synced_by": {
510
- "name": "synced_by",
511
- "type": "text",
512
- "primaryKey": false,
513
- "notNull": false
514
- }
515
- },
516
- "indexes": {},
517
- "foreignKeys": {},
518
- "compositePrimaryKeys": {},
519
- "uniqueConstraints": {},
520
- "policies": {},
521
- "checkConstraints": {},
522
- "isRLSEnabled": false
523
- }
524
- },
525
- "enums": {
526
- "public.link_status": {
527
- "name": "link_status",
528
- "schema": "public",
529
- "values": [
530
- "unlinked",
531
- "linked",
532
- "pending"
533
- ]
534
- },
535
- "public.member_role": {
536
- "name": "member_role",
537
- "schema": "public",
538
- "values": [
539
- "member",
540
- "officer",
541
- "guildmaster"
542
- ]
543
- },
544
- "public.request_status": {
545
- "name": "request_status",
546
- "schema": "public",
547
- "values": [
548
- "pending",
549
- "approved",
550
- "rejected"
551
- ]
552
- }
553
- },
554
- "schemas": {},
555
- "sequences": {},
556
- "roles": {},
557
- "policies": {},
558
- "views": {},
559
- "_meta": {
560
- "columns": {},
561
- "schemas": {},
562
- "tables": {}
563
- }
564
- }
@@ -1,13 +0,0 @@
1
- {
2
- "version": "7",
3
- "dialect": "postgresql",
4
- "entries": [
5
- {
6
- "idx": 0,
7
- "version": "7",
8
- "when": 1779227262200,
9
- "tag": "0000_bright_tony_stark",
10
- "breakpoints": true
11
- }
12
- ]
13
- }
package/drizzle.config.ts DELETED
@@ -1,11 +0,0 @@
1
- import type { Config } from "drizzle-kit";
2
-
3
- export default {
4
- schema: "./src/schema.ts",
5
- out: "./drizzle",
6
- dialect: "postgresql",
7
- dbCredentials: {
8
- url: process.env.DATABASE_URL!,
9
- ssl: true,
10
- },
11
- } satisfies Config;
package/src/client.ts DELETED
@@ -1,25 +0,0 @@
1
- import { drizzle } from "drizzle-orm/postgres-js";
2
- import postgres from "postgres";
3
- import * as schema from "./schema";
4
-
5
- let _db: ReturnType<typeof drizzle<typeof schema>> | null = null;
6
-
7
- export function getDb() {
8
- if (_db) return _db;
9
-
10
- const connectionString = process.env.DATABASE_URL;
11
- if (!connectionString) {
12
- throw new Error("DATABASE_URL environment variable is not set");
13
- }
14
-
15
- const client = postgres(connectionString, {
16
- max: 10,
17
- idle_timeout: 20,
18
- connect_timeout: 10,
19
- });
20
-
21
- _db = drizzle(client, { schema });
22
- return _db;
23
- }
24
-
25
- export type Db = ReturnType<typeof getDb>;
package/src/helpers.ts DELETED
@@ -1,43 +0,0 @@
1
- /**
2
- * Returns the most recent Wednesday (midnight UTC) on or before the given date.
3
- * This is the "week start" for our Wed–Tue raid tracking cycle.
4
- */
5
- export function getWeekStart(date: Date = new Date()): Date {
6
- const d = new Date(date);
7
- d.setUTCHours(0, 0, 0, 0);
8
- // getUTCDay: 0=Sun, 1=Mon, 2=Tue, 3=Wed, 4=Thu, 5=Fri, 6=Sat
9
- const day = d.getUTCDay();
10
- // Days since last Wednesday: Wed=0, Thu=1, Fri=2, Sat=3, Sun=4, Mon=5, Tue=6
11
- const daysSinceWed = (day + 4) % 7;
12
- d.setUTCDate(d.getUTCDate() - daysSinceWed);
13
- return d;
14
- }
15
-
16
- /**
17
- * Formats a week start date as an ISO date string (YYYY-MM-DD) for DB storage.
18
- */
19
- export function weekStartToString(date: Date): string {
20
- return date.toISOString().split("T")[0];
21
- }
22
-
23
- /**
24
- * Returns the week start string for a given date (or today).
25
- */
26
- export function getCurrentWeekStart(date?: Date): string {
27
- return weekStartToString(getWeekStart(date));
28
- }
29
-
30
- /**
31
- * Returns a display label for a week range: "Wed May 21 – Tue May 27"
32
- */
33
- export function formatWeekRange(weekStart: Date | string): string {
34
- const start = typeof weekStart === "string" ? new Date(weekStart + "T00:00:00Z") : weekStart;
35
- const end = new Date(start);
36
- end.setUTCDate(end.getUTCDate() + 6);
37
- const fmt = new Intl.DateTimeFormat("en-US", {
38
- month: "short",
39
- day: "numeric",
40
- timeZone: "UTC",
41
- });
42
- return `${fmt.format(start)} – ${fmt.format(end)}`;
43
- }
package/src/index.ts DELETED
@@ -1,3 +0,0 @@
1
- export * from "./schema";
2
- export * from "./client";
3
- export * from "./helpers";