SPB Git forge

spb/rareindex

Public
54commits 1branches 0releases
7.1 MBsize
maindefault branch
10 days agolast push
TypeScript 61.9% HTML 37.2% SQL 0.7%

Integrate agents: header user menu, session bridge, migration 0001, bundler resolution

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Simon-Pierre Boucher committed 17 days ago (Sep 7, 2026) parent 34af8bd

7 changed files +8,570 −10

modified apps/web/src/components/layout/site-header.tsx +2 −3
@@ -3,6 +3,7 @@ import { NAV, NAV_GROUPS, PRIMARY_NAV } from '@/config/nav';
3 3 import { ThemeToggle } from './theme-toggle';
4 4 import { MobileNav } from './mobile-nav';
5 5 import { HeaderSearch } from './header-search';
6 +import { UserMenu } from '@/components/account/user-menu';
6 7
7 8 export function Logo({ className }: { className?: string }) {
8 9 return (
@@ -50,9 +51,7 @@ export function SiteHeader() {
50 51 <div className="ml-auto flex items-center gap-1.5">
51 52 <HeaderSearch />
52 53 <ThemeToggle />
53 − <Link href="/account" className="hidden rounded-md border border-border px-2.5 py-1.5 text-[13px] font-medium text-fg hover:bg-inset sm:inline-flex">
54 − Sign in
55 − </Link>
54 + <UserMenu />
56 55 </div>
57 56 </div>
58 57 </header>
modified apps/web/src/lib/ai/request.ts +4 −5
@@ -1,6 +1,7 @@
1 1 import 'server-only';
2 2 import { createHmac, randomUUID } from 'node:crypto';
3 3 import { cookies, headers } from 'next/headers';
4 +import { getCurrentUser } from '@/lib/auth/session';
4 5 import { getDb, aiQuotas, sql } from '@rareindex/database';
5 6
6 7 const SECRET = () => process.env.SESSION_SECRET ?? 'dev-only';
@@ -37,11 +38,9 @@ export async function getAnonId(create = true): Promise<string | null> {
37 38 */
38 39 export async function currentUserId(): Promise<string | null> {
39 40 try {
40 − const jar = await cookies();
41 − const token = jar.get('ri_session')?.value ?? jar.get('session')?.value;
42 − if (!token || token.length > 200) return null;
43 − const [row] = await getDb().execute(sql`select user_id from sessions where id = ${token} and expires_at > now() limit 1`);
44 − return ((row as { user_id?: string } | undefined)?.user_id) ?? null;
41 + // Delegates to the account module (hashed session id, revocation, expiry) so both agree.
42 + const user = await getCurrentUser();
43 + return user?.id ?? null;
45 44 } catch {
46 45 return null;
47 46 }
modified apps/web/tsconfig.json +2 −2
@@ -8,8 +8,8 @@
8 8 "noUncheckedIndexedAccess": true,
9 9 "noEmit": true,
10 10 "esModuleInterop": true,
11 − "module": "nodenext",
12 − "moduleResolution": "nodenext",
11 + "module": "esnext",
12 + "moduleResolution": "bundler",
13 13 "resolveJsonModule": true,
14 14 "isolatedModules": true,
15 15 "jsx": "react-jsx",
added packages/database/migrations/0001_living_prima.sql +215 −0
@@ -0,0 +1,215 @@
1 +CREATE TABLE "ai_quotas" (
2 + "key" text NOT NULL,
3 + "feature" text NOT NULL,
4 + "date" text NOT NULL,
5 + "count" integer DEFAULT 0 NOT NULL
6 +);
7 +--> statement-breakpoint
8 +CREATE TABLE "research_messages" (
9 + "id" text PRIMARY KEY NOT NULL,
10 + "session_id" text NOT NULL,
11 + "role" text NOT NULL,
12 + "content" text NOT NULL,
13 + "tool_calls" jsonb DEFAULT '[]'::jsonb NOT NULL,
14 + "usage" jsonb DEFAULT '{}'::jsonb NOT NULL,
15 + "usd_est" real DEFAULT 0 NOT NULL,
16 + "model" text,
17 + "created_at" timestamp with time zone DEFAULT now() NOT NULL
18 +);
19 +--> statement-breakpoint
20 +CREATE TABLE "research_sessions" (
21 + "id" text PRIMARY KEY NOT NULL,
22 + "user_id" text,
23 + "anon_id" text,
24 + "title" text,
25 + "model" text,
26 + "message_count" integer DEFAULT 0 NOT NULL,
27 + "usd_est" real DEFAULT 0 NOT NULL,
28 + "archived" boolean DEFAULT false NOT NULL,
29 + "created_at" timestamp with time zone DEFAULT now() NOT NULL,
30 + "updated_at" timestamp with time zone DEFAULT now() NOT NULL
31 +);
32 +--> statement-breakpoint
33 +CREATE TABLE "scanner_sessions" (
34 + "id" text PRIMARY KEY NOT NULL,
35 + "user_id" text,
36 + "anon_id" text,
37 + "ip_hash" text,
38 + "mode" text NOT NULL,
39 + "input_url" text,
40 + "input_text" text,
41 + "image_count" integer DEFAULT 0 NOT NULL,
42 + "thumbnails" jsonb DEFAULT '[]'::jsonb NOT NULL,
43 + "guess" jsonb DEFAULT '{}'::jsonb NOT NULL,
44 + "guess_confidence" real,
45 + "candidates" jsonb DEFAULT '[]'::jsonb NOT NULL,
46 + "chosen_asset_id" text,
47 + "listing" jsonb DEFAULT '{}'::jsonb NOT NULL,
48 + "model" text,
49 + "usd_est" real DEFAULT 0 NOT NULL,
50 + "duration_ms" integer,
51 + "error" text,
52 + "created_at" timestamp with time zone DEFAULT now() NOT NULL,
53 + "chosen_at" timestamp with time zone
54 +);
55 +--> statement-breakpoint
56 +CREATE TABLE "auth_codes" (
57 + "id" text PRIMARY KEY NOT NULL,
58 + "user_id" text,
59 + "email" text NOT NULL,
60 + "purpose" text NOT NULL,
61 + "code_hash" text NOT NULL,
62 + "expires_at" timestamp with time zone NOT NULL,
63 + "attempts" integer DEFAULT 0 NOT NULL,
64 + "consumed_at" timestamp with time zone,
65 + "payload" jsonb DEFAULT '{}'::jsonb NOT NULL,
66 + "created_at" timestamp with time zone DEFAULT now() NOT NULL
67 +);
68 +--> statement-breakpoint
69 +CREATE TABLE "login_events" (
70 + "id" text PRIMARY KEY NOT NULL,
71 + "user_id" text,
72 + "email" text,
73 + "ip" text,
74 + "user_agent" text,
75 + "outcome" text NOT NULL,
76 + "method" text,
77 + "created_at" timestamp with time zone DEFAULT now() NOT NULL
78 +);
79 +--> statement-breakpoint
80 +CREATE TABLE "notifications" (
81 + "id" text PRIMARY KEY NOT NULL,
82 + "user_id" text NOT NULL,
83 + "kind" text NOT NULL,
84 + "title" text NOT NULL,
85 + "body" text,
86 + "href" text,
87 + "payload" jsonb DEFAULT '{}'::jsonb NOT NULL,
88 + "read_at" timestamp with time zone,
89 + "emailed_at" timestamp with time zone,
90 + "created_at" timestamp with time zone DEFAULT now() NOT NULL
91 +);
92 +--> statement-breakpoint
93 +CREATE TABLE "price_targets" (
94 + "id" text PRIMARY KEY NOT NULL,
95 + "user_id" text NOT NULL,
96 + "asset_id" text NOT NULL,
97 + "variant_id" text,
98 + "direction" text DEFAULT 'above' NOT NULL,
99 + "target_usd" numeric(18, 4) NOT NULL,
100 + "baseline_usd" numeric(18, 4),
101 + "note" text,
102 + "hit_at" timestamp with time zone,
103 + "notified_at" timestamp with time zone,
104 + "created_at" timestamp with time zone DEFAULT now() NOT NULL
105 +);
106 +--> statement-breakpoint
107 +CREATE TABLE "rate_limits" (
108 + "key" text PRIMARY KEY NOT NULL,
109 + "count" integer DEFAULT 0 NOT NULL,
110 + "reset_at" timestamp with time zone NOT NULL
111 +);
112 +--> statement-breakpoint
113 +CREATE TABLE "recovery_codes" (
114 + "id" text PRIMARY KEY NOT NULL,
115 + "user_id" text NOT NULL,
116 + "code_hash" text NOT NULL,
117 + "used_at" timestamp with time zone,
118 + "created_at" timestamp with time zone DEFAULT now() NOT NULL
119 +);
120 +--> statement-breakpoint
121 +CREATE TABLE "saved_searches" (
122 + "id" text PRIMARY KEY NOT NULL,
123 + "user_id" text NOT NULL,
124 + "name" text NOT NULL,
125 + "url" text NOT NULL,
126 + "params" jsonb DEFAULT '{}'::jsonb NOT NULL,
127 + "notify" boolean DEFAULT false NOT NULL,
128 + "last_run_at" timestamp with time zone,
129 + "last_count" integer,
130 + "created_at" timestamp with time zone DEFAULT now() NOT NULL
131 +);
132 +--> statement-breakpoint
133 +CREATE TABLE "trusted_devices" (
134 + "id" text PRIMARY KEY NOT NULL,
135 + "user_id" text NOT NULL,
136 + "token_hash" text NOT NULL,
137 + "label" text,
138 + "user_agent" text,
139 + "ip" text,
140 + "created_at" timestamp with time zone DEFAULT now() NOT NULL,
141 + "last_used_at" timestamp with time zone,
142 + "expires_at" timestamp with time zone NOT NULL,
143 + "revoked_at" timestamp with time zone
144 +);
145 +--> statement-breakpoint
146 +CREATE TABLE "uploads" (
147 + "id" text PRIMARY KEY NOT NULL,
148 + "user_id" text NOT NULL,
149 + "kind" text NOT NULL,
150 + "path" text NOT NULL,
151 + "mime" text NOT NULL,
152 + "bytes" integer NOT NULL,
153 + "width" integer,
154 + "height" integer,
155 + "created_at" timestamp with time zone DEFAULT now() NOT NULL
156 +);
157 +--> statement-breakpoint
158 +CREATE TABLE "user_badges" (
159 + "user_id" text NOT NULL,
160 + "badge" text NOT NULL,
161 + "evidence" jsonb DEFAULT '{}'::jsonb NOT NULL,
162 + "created_at" timestamp with time zone DEFAULT now() NOT NULL
163 +);
164 +--> statement-breakpoint
165 +DROP INDEX "normalized_records_raw_uq";--> statement-breakpoint
166 +ALTER TABLE "normalized_records" ADD COLUMN "seq" integer DEFAULT 0 NOT NULL;--> statement-breakpoint
167 +ALTER TABLE "alerts" ADD COLUMN "name" text;--> statement-breakpoint
168 +ALTER TABLE "alerts" ADD COLUMN "cooldown_minutes" integer DEFAULT 1440 NOT NULL;--> statement-breakpoint
169 +ALTER TABLE "alerts" ADD COLUMN "trigger_count" integer DEFAULT 0 NOT NULL;--> statement-breakpoint
170 +ALTER TABLE "collection_items" ADD COLUMN "tags" jsonb DEFAULT '[]'::jsonb NOT NULL;--> statement-breakpoint
171 +ALTER TABLE "collection_items" ADD COLUMN "condition" text;--> statement-breakpoint
172 +ALTER TABLE "collection_items" ADD COLUMN "manual_value_usd" numeric(18, 4);--> statement-breakpoint
173 +ALTER TABLE "collection_items" ADD COLUMN "sold_at" date;--> statement-breakpoint
174 +ALTER TABLE "collection_items" ADD COLUMN "sold_price_usd" numeric(18, 4);--> statement-breakpoint
175 +ALTER TABLE "collections" ADD COLUMN "kind" text DEFAULT 'collection' NOT NULL;--> statement-breakpoint
176 +ALTER TABLE "collections" ADD COLUMN "budget_usd" numeric(18, 4);--> statement-breakpoint
177 +ALTER TABLE "collections" ADD COLUMN "color" text;--> statement-breakpoint
178 +ALTER TABLE "sessions" ADD COLUMN "ip" text;--> statement-breakpoint
179 +ALTER TABLE "sessions" ADD COLUMN "last_seen_at" timestamp with time zone;--> statement-breakpoint
180 +ALTER TABLE "sessions" ADD COLUMN "revoked_at" timestamp with time zone;--> statement-breakpoint
181 +ALTER TABLE "users" ADD COLUMN "handle" text;--> statement-breakpoint
182 +ALTER TABLE "users" ADD COLUMN "avatar_url" text;--> statement-breakpoint
183 +ALTER TABLE "users" ADD COLUMN "bio" text;--> statement-breakpoint
184 +ALTER TABLE "users" ADD COLUMN "mfa_enabled" boolean DEFAULT false NOT NULL;--> statement-breakpoint
185 +ALTER TABLE "users" ADD COLUMN "totp_secret_enc" text;--> statement-breakpoint
186 +ALTER TABLE "users" ADD COLUMN "always_ask_code" boolean DEFAULT true NOT NULL;--> statement-breakpoint
187 +ALTER TABLE "users" ADD COLUMN "password_changed_at" timestamp with time zone;--> statement-breakpoint
188 +ALTER TABLE "users" ADD COLUMN "pending_email" text;--> statement-breakpoint
189 +ALTER TABLE "users" ADD COLUMN "deleted_at" timestamp with time zone;--> statement-breakpoint
190 +ALTER TABLE "users" ADD COLUMN "purge_after" timestamp with time zone;--> statement-breakpoint
191 +ALTER TABLE "watchlist_items" ADD COLUMN "label" text;--> statement-breakpoint
192 +ALTER TABLE "watchlist_items" ADD COLUMN "note" text;--> statement-breakpoint
193 +ALTER TABLE "watchlist_items" ADD COLUMN "target_price_usd" numeric(18, 4);--> statement-breakpoint
194 +ALTER TABLE "watchlist_items" ADD COLUMN "baseline_usd" numeric(18, 4);--> statement-breakpoint
195 +CREATE INDEX "ai_quotas_uq" ON "ai_quotas" USING btree ("key","feature","date");--> statement-breakpoint
196 +CREATE INDEX "research_messages_session_idx" ON "research_messages" USING btree ("session_id","created_at");--> statement-breakpoint
197 +CREATE INDEX "research_sessions_anon_idx" ON "research_sessions" USING btree ("anon_id","updated_at");--> statement-breakpoint
198 +CREATE INDEX "research_sessions_user_idx" ON "research_sessions" USING btree ("user_id","updated_at");--> statement-breakpoint
199 +CREATE INDEX "scanner_sessions_created_idx" ON "scanner_sessions" USING btree ("created_at");--> statement-breakpoint
200 +CREATE INDEX "scanner_sessions_ip_idx" ON "scanner_sessions" USING btree ("ip_hash","created_at");--> statement-breakpoint
201 +CREATE INDEX "scanner_sessions_user_idx" ON "scanner_sessions" USING btree ("user_id");--> statement-breakpoint
202 +CREATE INDEX "auth_codes_lookup_idx" ON "auth_codes" USING btree ("email","purpose","created_at");--> statement-breakpoint
203 +CREATE INDEX "login_events_user_idx" ON "login_events" USING btree ("user_id","created_at");--> statement-breakpoint
204 +CREATE INDEX "notifications_user_idx" ON "notifications" USING btree ("user_id","created_at");--> statement-breakpoint
205 +CREATE INDEX "notifications_unread_idx" ON "notifications" USING btree ("user_id","read_at");--> statement-breakpoint
206 +CREATE INDEX "price_targets_user_idx" ON "price_targets" USING btree ("user_id");--> statement-breakpoint
207 +CREATE INDEX "price_targets_asset_idx" ON "price_targets" USING btree ("asset_id","hit_at");--> statement-breakpoint
208 +CREATE INDEX "recovery_codes_user_idx" ON "recovery_codes" USING btree ("user_id");--> statement-breakpoint
209 +CREATE INDEX "saved_searches_user_idx" ON "saved_searches" USING btree ("user_id");--> statement-breakpoint
210 +CREATE INDEX "trusted_devices_user_idx" ON "trusted_devices" USING btree ("user_id");--> statement-breakpoint
211 +CREATE UNIQUE INDEX "trusted_devices_token_uq" ON "trusted_devices" USING btree ("token_hash");--> statement-breakpoint
212 +CREATE INDEX "uploads_user_idx" ON "uploads" USING btree ("user_id");--> statement-breakpoint
213 +CREATE UNIQUE INDEX "user_badges_uq" ON "user_badges" USING btree ("user_id","badge");--> statement-breakpoint
214 +CREATE UNIQUE INDEX "normalized_records_raw_uq" ON "normalized_records" USING btree ("raw_record_id","kind","seq");--> statement-breakpoint
215 +ALTER TABLE "users" ADD CONSTRAINT "users_handle_unique" UNIQUE("handle");
\ No newline at end of file
added packages/database/migrations/meta/0001_snapshot.json +8103 −0
@@ -0,0 +1,8103 @@
1 +{
2 + "id": "598f1844-5c95-4e05-93ae-8f3d5bb6f87b",
3 + "prevId": "5a9ca0fc-7e8f-4e45-90e0-6c16a3a6a052",
4 + "version": "7",
5 + "dialect": "postgresql",
6 + "tables": {
7 + "public.brands": {
8 + "name": "brands",
9 + "schema": "",
10 + "columns": {
11 + "slug": {
12 + "name": "slug",
13 + "type": "text",
14 + "primaryKey": true,
15 + "notNull": true
16 + },
17 + "name": {
18 + "name": "name",
19 + "type": "text",
20 + "primaryKey": false,
21 + "notNull": true
22 + },
23 + "category_slugs": {
24 + "name": "category_slugs",
25 + "type": "text[]",
26 + "primaryKey": false,
27 + "notNull": true,
28 + "default": "'{}'::text[]"
29 + },
30 + "country": {
31 + "name": "country",
32 + "type": "text",
33 + "primaryKey": false,
34 + "notNull": false
35 + },
36 + "founded_year": {
37 + "name": "founded_year",
38 + "type": "integer",
39 + "primaryKey": false,
40 + "notNull": false
41 + },
42 + "metadata": {
43 + "name": "metadata",
44 + "type": "jsonb",
45 + "primaryKey": false,
46 + "notNull": true,
47 + "default": "'{}'::jsonb"
48 + },
49 + "created_at": {
50 + "name": "created_at",
51 + "type": "timestamp with time zone",
52 + "primaryKey": false,
53 + "notNull": true,
54 + "default": "now()"
55 + }
56 + },
57 + "indexes": {
58 + "brands_name_idx": {
59 + "name": "brands_name_idx",
60 + "columns": [
61 + {
62 + "expression": "name",
63 + "isExpression": false,
64 + "asc": true,
65 + "nulls": "last"
66 + }
67 + ],
68 + "isUnique": false,
69 + "concurrently": false,
70 + "method": "btree",
71 + "with": {}
72 + }
73 + },
74 + "foreignKeys": {},
75 + "compositePrimaryKeys": {},
76 + "uniqueConstraints": {},
77 + "policies": {},
78 + "checkConstraints": {},
79 + "isRLSEnabled": false
80 + },
81 + "public.categories": {
82 + "name": "categories",
83 + "schema": "",
84 + "columns": {
85 + "slug": {
86 + "name": "slug",
87 + "type": "text",
88 + "primaryKey": true,
89 + "notNull": true
90 + },
91 + "parent_slug": {
92 + "name": "parent_slug",
93 + "type": "text",
94 + "primaryKey": false,
95 + "notNull": false
96 + },
97 + "family_slug": {
98 + "name": "family_slug",
99 + "type": "text",
100 + "primaryKey": false,
101 + "notNull": true
102 + },
103 + "name": {
104 + "name": "name",
105 + "type": "text",
106 + "primaryKey": false,
107 + "notNull": true
108 + },
109 + "short_name": {
110 + "name": "short_name",
111 + "type": "text",
112 + "primaryKey": false,
113 + "notNull": false
114 + },
115 + "description": {
116 + "name": "description",
117 + "type": "text",
118 + "primaryKey": false,
119 + "notNull": false
120 + },
121 + "level": {
122 + "name": "level",
123 + "type": "integer",
124 + "primaryKey": false,
125 + "notNull": true,
126 + "default": 0
127 + },
128 + "phase": {
129 + "name": "phase",
130 + "type": "integer",
131 + "primaryKey": false,
132 + "notNull": true,
133 + "default": 3
134 + },
135 + "active": {
136 + "name": "active",
137 + "type": "boolean",
138 + "primaryKey": false,
139 + "notNull": true,
140 + "default": true
141 + },
142 + "condition_scale": {
143 + "name": "condition_scale",
144 + "type": "text",
145 + "primaryKey": false,
146 + "notNull": false
147 + },
148 + "graders": {
149 + "name": "graders",
150 + "type": "text[]",
151 + "primaryKey": false,
152 + "notNull": true,
153 + "default": "'{}'::text[]"
154 + },
155 + "index_ticker": {
156 + "name": "index_ticker",
157 + "type": "text",
158 + "primaryKey": false,
159 + "notNull": false
160 + },
161 + "attribute_schema": {
162 + "name": "attribute_schema",
163 + "type": "jsonb",
164 + "primaryKey": false,
165 + "notNull": true,
166 + "default": "'{}'::jsonb"
167 + },
168 + "sort_order": {
169 + "name": "sort_order",
170 + "type": "integer",
171 + "primaryKey": false,
172 + "notNull": true,
173 + "default": 0
174 + },
175 + "compliance_flags": {
176 + "name": "compliance_flags",
177 + "type": "text[]",
178 + "primaryKey": false,
179 + "notNull": true,
180 + "default": "'{}'::text[]"
181 + },
182 + "icon": {
183 + "name": "icon",
184 + "type": "text",
185 + "primaryKey": false,
186 + "notNull": false
187 + },
188 + "created_at": {
189 + "name": "created_at",
190 + "type": "timestamp with time zone",
191 + "primaryKey": false,
192 + "notNull": true,
193 + "default": "now()"
194 + },
195 + "updated_at": {
196 + "name": "updated_at",
197 + "type": "timestamp with time zone",
198 + "primaryKey": false,
199 + "notNull": true,
200 + "default": "now()"
201 + }
202 + },
203 + "indexes": {
204 + "categories_parent_idx": {
205 + "name": "categories_parent_idx",
206 + "columns": [
207 + {
208 + "expression": "parent_slug",
209 + "isExpression": false,
210 + "asc": true,
211 + "nulls": "last"
212 + }
213 + ],
214 + "isUnique": false,
215 + "concurrently": false,
216 + "method": "btree",
217 + "with": {}
218 + },
219 + "categories_family_idx": {
220 + "name": "categories_family_idx",
221 + "columns": [
222 + {
223 + "expression": "family_slug",
224 + "isExpression": false,
225 + "asc": true,
226 + "nulls": "last"
227 + }
228 + ],
229 + "isUnique": false,
230 + "concurrently": false,
231 + "method": "btree",
232 + "with": {}
233 + }
234 + },
235 + "foreignKeys": {},
236 + "compositePrimaryKeys": {},
237 + "uniqueConstraints": {},
238 + "policies": {},
239 + "checkConstraints": {},
240 + "isRLSEnabled": false
241 + },
242 + "public.franchises": {
243 + "name": "franchises",
244 + "schema": "",
245 + "columns": {
246 + "slug": {
247 + "name": "slug",
248 + "type": "text",
249 + "primaryKey": true,
250 + "notNull": true
251 + },
252 + "name": {
253 + "name": "name",
254 + "type": "text",
255 + "primaryKey": false,
256 + "notNull": true
257 + },
258 + "owner": {
259 + "name": "owner",
260 + "type": "text",
261 + "primaryKey": false,
262 + "notNull": false
263 + },
264 + "category_slugs": {
265 + "name": "category_slugs",
266 + "type": "text[]",
267 + "primaryKey": false,
268 + "notNull": true,
269 + "default": "'{}'::text[]"
270 + },
271 + "metadata": {
272 + "name": "metadata",
273 + "type": "jsonb",
274 + "primaryKey": false,
275 + "notNull": true,
276 + "default": "'{}'::jsonb"
277 + },
278 + "created_at": {
279 + "name": "created_at",
280 + "type": "timestamp with time zone",
281 + "primaryKey": false,
282 + "notNull": true,
283 + "default": "now()"
284 + }
285 + },
286 + "indexes": {},
287 + "foreignKeys": {},
288 + "compositePrimaryKeys": {},
289 + "uniqueConstraints": {},
290 + "policies": {},
291 + "checkConstraints": {},
292 + "isRLSEnabled": false
293 + },
294 + "public.graders": {
295 + "name": "graders",
296 + "schema": "",
297 + "columns": {
298 + "slug": {
299 + "name": "slug",
300 + "type": "text",
301 + "primaryKey": true,
302 + "notNull": true
303 + },
304 + "name": {
305 + "name": "name",
306 + "type": "text",
307 + "primaryKey": false,
308 + "notNull": true
309 + },
310 + "category_slugs": {
311 + "name": "category_slugs",
312 + "type": "text[]",
313 + "primaryKey": false,
314 + "notNull": true,
315 + "default": "'{}'::text[]"
316 + },
317 + "scale": {
318 + "name": "scale",
319 + "type": "jsonb",
320 + "primaryKey": false,
321 + "notNull": true,
322 + "default": "'{}'::jsonb"
323 + },
324 + "population_url": {
325 + "name": "population_url",
326 + "type": "text",
327 + "primaryKey": false,
328 + "notNull": false
329 + },
330 + "verify_url": {
331 + "name": "verify_url",
332 + "type": "text",
333 + "primaryKey": false,
334 + "notNull": false
335 + },
336 + "active": {
337 + "name": "active",
338 + "type": "boolean",
339 + "primaryKey": false,
340 + "notNull": true,
341 + "default": true
342 + }
343 + },
344 + "indexes": {},
345 + "foreignKeys": {},
346 + "compositePrimaryKeys": {},
347 + "uniqueConstraints": {},
348 + "policies": {},
349 + "checkConstraints": {},
350 + "isRLSEnabled": false
351 + },
352 + "public.sets": {
353 + "name": "sets",
354 + "schema": "",
355 + "columns": {
356 + "slug": {
357 + "name": "slug",
358 + "type": "text",
359 + "primaryKey": true,
360 + "notNull": true
361 + },
362 + "name": {
363 + "name": "name",
364 + "type": "text",
365 + "primaryKey": false,
366 + "notNull": true
367 + },
368 + "code": {
369 + "name": "code",
370 + "type": "text",
371 + "primaryKey": false,
372 + "notNull": false
373 + },
374 + "category_slug": {
375 + "name": "category_slug",
376 + "type": "text",
377 + "primaryKey": false,
378 + "notNull": true
379 + },
380 + "franchise_slug": {
381 + "name": "franchise_slug",
382 + "type": "text",
383 + "primaryKey": false,
384 + "notNull": false
385 + },
386 + "brand_slug": {
387 + "name": "brand_slug",
388 + "type": "text",
389 + "primaryKey": false,
390 + "notNull": false
391 + },
392 + "release_year": {
393 + "name": "release_year",
394 + "type": "integer",
395 + "primaryKey": false,
396 + "notNull": false
397 + },
398 + "release_date": {
399 + "name": "release_date",
400 + "type": "text",
401 + "primaryKey": false,
402 + "notNull": false
403 + },
404 + "language": {
405 + "name": "language",
406 + "type": "text",
407 + "primaryKey": false,
408 + "notNull": false
409 + },
410 + "total_items": {
411 + "name": "total_items",
412 + "type": "integer",
413 + "primaryKey": false,
414 + "notNull": false
415 + },
416 + "identifiers": {
417 + "name": "identifiers",
418 + "type": "jsonb",
419 + "primaryKey": false,
420 + "notNull": true,
421 + "default": "'{}'::jsonb"
422 + },
423 + "metadata": {
424 + "name": "metadata",
425 + "type": "jsonb",
426 + "primaryKey": false,
427 + "notNull": true,
428 + "default": "'{}'::jsonb"
429 + },
430 + "created_at": {
431 + "name": "created_at",
432 + "type": "timestamp with time zone",
433 + "primaryKey": false,
434 + "notNull": true,
435 + "default": "now()"
436 + }
437 + },
438 + "indexes": {
439 + "sets_category_idx": {
440 + "name": "sets_category_idx",
441 + "columns": [
442 + {
443 + "expression": "category_slug",
444 + "isExpression": false,
445 + "asc": true,
446 + "nulls": "last"
447 + }
448 + ],
449 + "isUnique": false,
450 + "concurrently": false,
451 + "method": "btree",
452 + "with": {}
453 + },
454 + "sets_category_code_uq": {
455 + "name": "sets_category_code_uq",
456 + "columns": [
457 + {
458 + "expression": "category_slug",
459 + "isExpression": false,
460 + "asc": true,
461 + "nulls": "last"
462 + },
463 + {
464 + "expression": "code",
465 + "isExpression": false,
466 + "asc": true,
467 + "nulls": "last"
468 + }
469 + ],
470 + "isUnique": true,
471 + "concurrently": false,
472 + "method": "btree",
473 + "with": {}
474 + }
475 + },
476 + "foreignKeys": {},
477 + "compositePrimaryKeys": {},
478 + "uniqueConstraints": {},
479 + "policies": {},
480 + "checkConstraints": {},
481 + "isRLSEnabled": false
482 + },
483 + "public.taxonomy_proposals": {
484 + "name": "taxonomy_proposals",
485 + "schema": "",
486 + "columns": {
487 + "id": {
488 + "name": "id",
489 + "type": "text",
490 + "primaryKey": true,
491 + "notNull": true
492 + },
493 + "proposed_slug": {
494 + "name": "proposed_slug",
495 + "type": "text",
496 + "primaryKey": false,
497 + "notNull": true
498 + },
499 + "name": {
500 + "name": "name",
501 + "type": "text",
502 + "primaryKey": false,
503 + "notNull": true
504 + },
505 + "parent_slug": {
506 + "name": "parent_slug",
507 + "type": "text",
508 + "primaryKey": false,
509 + "notNull": false
510 + },
511 + "evidence": {
512 + "name": "evidence",
513 + "type": "jsonb",
514 + "primaryKey": false,
515 + "notNull": true,
516 + "default": "'{}'::jsonb"
517 + },
518 + "volume_estimate": {
519 + "name": "volume_estimate",
520 + "type": "integer",
521 + "primaryKey": false,
522 + "notNull": false
523 + },
524 + "status": {
525 + "name": "status",
526 + "type": "text",
527 + "primaryKey": false,
528 + "notNull": true,
529 + "default": "'pending'"
530 + },
531 + "decided_by": {
532 + "name": "decided_by",
533 + "type": "text",
534 + "primaryKey": false,
535 + "notNull": false
536 + },
537 + "decided_at": {
538 + "name": "decided_at",
539 + "type": "text",
540 + "primaryKey": false,
541 + "notNull": false
542 + },
543 + "created_at": {
544 + "name": "created_at",
545 + "type": "timestamp with time zone",
546 + "primaryKey": false,
547 + "notNull": true,
548 + "default": "now()"
549 + }
550 + },
551 + "indexes": {},
552 + "foreignKeys": {},
553 + "compositePrimaryKeys": {},
554 + "uniqueConstraints": {},
555 + "policies": {},
556 + "checkConstraints": {},
557 + "isRLSEnabled": false
558 + },
559 + "public.connector_health": {
560 + "name": "connector_health",
561 + "schema": "",
562 + "columns": {
563 + "connector_id": {
564 + "name": "connector_id",
565 + "type": "text",
566 + "primaryKey": true,
567 + "notNull": true
568 + },
569 + "computed_at": {
570 + "name": "computed_at",
571 + "type": "timestamp with time zone",
572 + "primaryKey": false,
573 + "notNull": true
574 + },
575 + "status": {
576 + "name": "status",
577 + "type": "text",
578 + "primaryKey": false,
579 + "notNull": true
580 + },
581 + "health": {
582 + "name": "health",
583 + "type": "jsonb",
584 + "primaryKey": false,
585 + "notNull": true,
586 + "default": "'{}'::jsonb"
587 + }
588 + },
589 + "indexes": {},
590 + "foreignKeys": {},
591 + "compositePrimaryKeys": {},
592 + "uniqueConstraints": {},
593 + "policies": {},
594 + "checkConstraints": {},
595 + "isRLSEnabled": false
596 + },
597 + "public.connector_runs": {
598 + "name": "connector_runs",
599 + "schema": "",
600 + "columns": {
601 + "id": {
602 + "name": "id",
603 + "type": "text",
604 + "primaryKey": true,
605 + "notNull": true
606 + },
607 + "connector_id": {
608 + "name": "connector_id",
609 + "type": "text",
610 + "primaryKey": false,
611 + "notNull": true
612 + },
613 + "trigger": {
614 + "name": "trigger",
615 + "type": "text",
616 + "primaryKey": false,
617 + "notNull": true,
618 + "default": "'schedule'"
619 + },
620 + "started_at": {
621 + "name": "started_at",
622 + "type": "timestamp with time zone",
623 + "primaryKey": false,
624 + "notNull": true
625 + },
626 + "finished_at": {
627 + "name": "finished_at",
628 + "type": "timestamp with time zone",
629 + "primaryKey": false,
630 + "notNull": false
631 + },
632 + "status": {
633 + "name": "status",
634 + "type": "text",
635 + "primaryKey": false,
636 + "notNull": true,
637 + "default": "'running'"
638 + },
639 + "pages_attempted": {
640 + "name": "pages_attempted",
641 + "type": "integer",
642 + "primaryKey": false,
643 + "notNull": true,
644 + "default": 0
645 + },
646 + "pages_success": {
647 + "name": "pages_success",
648 + "type": "integer",
649 + "primaryKey": false,
650 + "notNull": true,
651 + "default": 0
652 + },
653 + "records_raw": {
654 + "name": "records_raw",
655 + "type": "integer",
656 + "primaryKey": false,
657 + "notNull": true,
658 + "default": 0
659 + },
660 + "records_normalized": {
661 + "name": "records_normalized",
662 + "type": "integer",
663 + "primaryKey": false,
664 + "notNull": true,
665 + "default": 0
666 + },
667 + "records_duplicate": {
668 + "name": "records_duplicate",
669 + "type": "integer",
670 + "primaryKey": false,
671 + "notNull": true,
672 + "default": 0
673 + },
674 + "records_rejected": {
675 + "name": "records_rejected",
676 + "type": "integer",
677 + "primaryKey": false,
678 + "notNull": true,
679 + "default": 0
680 + },
681 + "engine_stats": {
682 + "name": "engine_stats",
683 + "type": "jsonb",
684 + "primaryKey": false,
685 + "notNull": true,
686 + "default": "'{}'::jsonb"
687 + },
688 + "anomalies": {
689 + "name": "anomalies",
690 + "type": "jsonb",
691 + "primaryKey": false,
692 + "notNull": true,
693 + "default": "'[]'::jsonb"
694 + },
695 + "error": {
696 + "name": "error",
697 + "type": "text",
698 + "primaryKey": false,
699 + "notNull": false
700 + },
701 + "cost_credits": {
702 + "name": "cost_credits",
703 + "type": "real",
704 + "primaryKey": false,
705 + "notNull": true,
706 + "default": 0
707 + },
708 + "cost_usd_est": {
709 + "name": "cost_usd_est",
710 + "type": "real",
711 + "primaryKey": false,
712 + "notNull": true,
713 + "default": 0
714 + },
715 + "cursor": {
716 + "name": "cursor",
717 + "type": "jsonb",
718 + "primaryKey": false,
719 + "notNull": true,
720 + "default": "'{}'::jsonb"
721 + }
722 + },
723 + "indexes": {
724 + "connector_runs_connector_started_idx": {
725 + "name": "connector_runs_connector_started_idx",
726 + "columns": [
727 + {
728 + "expression": "connector_id",
729 + "isExpression": false,
730 + "asc": true,
731 + "nulls": "last"
732 + },
733 + {
734 + "expression": "started_at",
735 + "isExpression": false,
736 + "asc": true,
737 + "nulls": "last"
738 + }
739 + ],
740 + "isUnique": false,
741 + "concurrently": false,
742 + "method": "btree",
743 + "with": {}
744 + }
745 + },
746 + "foreignKeys": {},
747 + "compositePrimaryKeys": {},
748 + "uniqueConstraints": {},
749 + "policies": {},
750 + "checkConstraints": {},
751 + "isRLSEnabled": false
752 + },
753 + "public.connectors": {
754 + "name": "connectors",
755 + "schema": "",
756 + "columns": {
757 + "id": {
758 + "name": "id",
759 + "type": "text",
760 + "primaryKey": true,
761 + "notNull": true
762 + },
763 + "source_id": {
764 + "name": "source_id",
765 + "type": "text",
766 + "primaryKey": false,
767 + "notNull": true
768 + },
769 + "display_name": {
770 + "name": "display_name",
771 + "type": "text",
772 + "primaryKey": false,
773 + "notNull": true
774 + },
775 + "engine_priority": {
776 + "name": "engine_priority",
777 + "type": "text[]",
778 + "primaryKey": false,
779 + "notNull": true,
780 + "default": "'{}'::text[]"
781 + },
782 + "categories": {
783 + "name": "categories",
784 + "type": "text[]",
785 + "primaryKey": false,
786 + "notNull": true,
787 + "default": "'{}'::text[]"
788 + },
789 + "regions": {
790 + "name": "regions",
791 + "type": "text[]",
792 + "primaryKey": false,
793 + "notNull": true,
794 + "default": "'{}'::text[]"
795 + },
796 + "languages": {
797 + "name": "languages",
798 + "type": "text[]",
799 + "primaryKey": false,
800 + "notNull": true,
801 + "default": "'{}'::text[]"
802 + },
803 + "currency": {
804 + "name": "currency",
805 + "type": "text[]",
806 + "primaryKey": false,
807 + "notNull": true,
808 + "default": "'{}'::text[]"
809 + },
810 + "supports_listings": {
811 + "name": "supports_listings",
812 + "type": "boolean",
813 + "primaryKey": false,
814 + "notNull": true,
815 + "default": false
816 + },
817 + "supports_sold": {
818 + "name": "supports_sold",
819 + "type": "boolean",
820 + "primaryKey": false,
821 + "notNull": true,
822 + "default": false
823 + },
824 + "supports_auctions": {
825 + "name": "supports_auctions",
826 + "type": "boolean",
827 + "primaryKey": false,
828 + "notNull": true,
829 + "default": false
830 + },
831 + "supports_images": {
832 + "name": "supports_images",
833 + "type": "boolean",
834 + "primaryKey": false,
835 + "notNull": true,
836 + "default": true
837 + },
838 + "supports_catalog": {
839 + "name": "supports_catalog",
840 + "type": "boolean",
841 + "primaryKey": false,
842 + "notNull": true,
843 + "default": false
844 + },
845 + "supports_population": {
846 + "name": "supports_population",
847 + "type": "boolean",
848 + "primaryKey": false,
849 + "notNull": true,
850 + "default": false
851 + },
852 + "refresh_frequency_minutes": {
853 + "name": "refresh_frequency_minutes",
854 + "type": "integer",
855 + "primaryKey": false,
856 + "notNull": true,
857 + "default": 1440
858 + },
859 + "priority": {
860 + "name": "priority",
861 + "type": "text",
862 + "primaryKey": false,
863 + "notNull": true,
864 + "default": "'medium'"
865 + },
866 + "status": {
867 + "name": "status",
868 + "type": "text",
869 + "primaryKey": false,
870 + "notNull": true,
871 + "default": "'active'"
872 + },
873 + "schema_version": {
874 + "name": "schema_version",
875 + "type": "text",
876 + "primaryKey": false,
877 + "notNull": true,
878 + "default": "'1.0'"
879 + },
880 + "connector_version": {
881 + "name": "connector_version",
882 + "type": "text",
883 + "primaryKey": false,
884 + "notNull": true,
885 + "default": "'1.0.0'"
886 + },
887 + "config": {
888 + "name": "config",
889 + "type": "jsonb",
890 + "primaryKey": false,
891 + "notNull": true,
892 + "default": "'{}'::jsonb"
893 + },
894 + "last_run_at": {
895 + "name": "last_run_at",
896 + "type": "timestamp with time zone",
897 + "primaryKey": false,
898 + "notNull": false
899 + },
900 + "last_success_at": {
901 + "name": "last_success_at",
902 + "type": "timestamp with time zone",
903 + "primaryKey": false,
904 + "notNull": false
905 + },
906 + "next_run_at": {
907 + "name": "next_run_at",
908 + "type": "timestamp with time zone",
909 + "primaryKey": false,
910 + "notNull": false
911 + },
912 + "created_at": {
913 + "name": "created_at",
914 + "type": "timestamp with time zone",
915 + "primaryKey": false,
916 + "notNull": true,
917 + "default": "now()"
918 + },
919 + "updated_at": {
920 + "name": "updated_at",
921 + "type": "timestamp with time zone",
922 + "primaryKey": false,
923 + "notNull": true,
924 + "default": "now()"
925 + }
926 + },
927 + "indexes": {},
928 + "foreignKeys": {},
929 + "compositePrimaryKeys": {},
930 + "uniqueConstraints": {},
931 + "policies": {},
932 + "checkConstraints": {},
933 + "isRLSEnabled": false
934 + },
935 + "public.costs": {
936 + "name": "costs",
937 + "schema": "",
938 + "columns": {
939 + "id": {
940 + "name": "id",
941 + "type": "text",
942 + "primaryKey": true,
943 + "notNull": true
944 + },
945 + "occurred_at": {
946 + "name": "occurred_at",
947 + "type": "timestamp with time zone",
948 + "primaryKey": false,
949 + "notNull": true
950 + },
951 + "kind": {
952 + "name": "kind",
953 + "type": "text",
954 + "primaryKey": false,
955 + "notNull": true
956 + },
957 + "provider": {
958 + "name": "provider",
959 + "type": "text",
960 + "primaryKey": false,
961 + "notNull": false
962 + },
963 + "connector_id": {
964 + "name": "connector_id",
965 + "type": "text",
966 + "primaryKey": false,
967 + "notNull": false
968 + },
969 + "category_slug": {
970 + "name": "category_slug",
971 + "type": "text",
972 + "primaryKey": false,
973 + "notNull": false
974 + },
975 + "endpoint": {
976 + "name": "endpoint",
977 + "type": "text",
978 + "primaryKey": false,
979 + "notNull": false
980 + },
981 + "user_id": {
982 + "name": "user_id",
983 + "type": "text",
984 + "primaryKey": false,
985 + "notNull": false
986 + },
987 + "units": {
988 + "name": "units",
989 + "type": "real",
990 + "primaryKey": false,
991 + "notNull": true,
992 + "default": 1
993 + },
994 + "credits": {
995 + "name": "credits",
996 + "type": "real",
997 + "primaryKey": false,
998 + "notNull": true,
999 + "default": 0
1000 + },
1001 + "usd_est": {
1002 + "name": "usd_est",
1003 + "type": "real",
1004 + "primaryKey": false,
1005 + "notNull": true,
1006 + "default": 0
1007 + },
1008 + "metadata": {
1009 + "name": "metadata",
1010 + "type": "jsonb",
1011 + "primaryKey": false,
1012 + "notNull": true,
1013 + "default": "'{}'::jsonb"
1014 + }
1015 + },
1016 + "indexes": {
1017 + "costs_occurred_idx": {
1018 + "name": "costs_occurred_idx",
1019 + "columns": [
1020 + {
1021 + "expression": "occurred_at",
1022 + "isExpression": false,
1023 + "asc": true,
1024 + "nulls": "last"
1025 + }
1026 + ],
1027 + "isUnique": false,
1028 + "concurrently": false,
1029 + "method": "btree",
1030 + "with": {}
1031 + },
1032 + "costs_connector_idx": {
1033 + "name": "costs_connector_idx",
1034 + "columns": [
1035 + {
1036 + "expression": "connector_id",
1037 + "isExpression": false,
1038 + "asc": true,
1039 + "nulls": "last"
1040 + }
1041 + ],
1042 + "isUnique": false,
1043 + "concurrently": false,
1044 + "method": "btree",
1045 + "with": {}
1046 + }
1047 + },
1048 + "foreignKeys": {},
1049 + "compositePrimaryKeys": {},
1050 + "uniqueConstraints": {},
1051 + "policies": {},
1052 + "checkConstraints": {},
1053 + "isRLSEnabled": false
1054 + },
1055 + "public.crawl_state": {
1056 + "name": "crawl_state",
1057 + "schema": "",
1058 + "columns": {
1059 + "url_hash": {
1060 + "name": "url_hash",
1061 + "type": "text",
1062 + "primaryKey": true,
1063 + "notNull": true
1064 + },
1065 + "connector_id": {
1066 + "name": "connector_id",
1067 + "type": "text",
1068 + "primaryKey": false,
1069 + "notNull": true
1070 + },
1071 + "url": {
1072 + "name": "url",
1073 + "type": "text",
1074 + "primaryKey": false,
1075 + "notNull": true
1076 + },
1077 + "etag": {
1078 + "name": "etag",
1079 + "type": "text",
1080 + "primaryKey": false,
1081 + "notNull": false
1082 + },
1083 + "last_modified": {
1084 + "name": "last_modified",
1085 + "type": "text",
1086 + "primaryKey": false,
1087 + "notNull": false
1088 + },
1089 + "content_hash": {
1090 + "name": "content_hash",
1091 + "type": "text",
1092 + "primaryKey": false,
1093 + "notNull": false
1094 + },
1095 + "last_fetched_at": {
1096 + "name": "last_fetched_at",
1097 + "type": "timestamp with time zone",
1098 + "primaryKey": false,
1099 + "notNull": false
1100 + },
1101 + "last_changed_at": {
1102 + "name": "last_changed_at",
1103 + "type": "timestamp with time zone",
1104 + "primaryKey": false,
1105 + "notNull": false
1106 + },
1107 + "fetch_count": {
1108 + "name": "fetch_count",
1109 + "type": "integer",
1110 + "primaryKey": false,
1111 + "notNull": true,
1112 + "default": 0
1113 + },
1114 + "change_count": {
1115 + "name": "change_count",
1116 + "type": "integer",
1117 + "primaryKey": false,
1118 + "notNull": true,
1119 + "default": 0
1120 + },
1121 + "change_interval_hours": {
1122 + "name": "change_interval_hours",
1123 + "type": "real",
1124 + "primaryKey": false,
1125 + "notNull": false
1126 + },
1127 + "next_fetch_at": {
1128 + "name": "next_fetch_at",
1129 + "type": "timestamp with time zone",
1130 + "primaryKey": false,
1131 + "notNull": false
1132 + },
1133 + "last_status": {
1134 + "name": "last_status",
1135 + "type": "integer",
1136 + "primaryKey": false,
1137 + "notNull": false
1138 + },
1139 + "failures": {
1140 + "name": "failures",
1141 + "type": "integer",
1142 + "primaryKey": false,
1143 + "notNull": true,
1144 + "default": 0
1145 + }
1146 + },
1147 + "indexes": {
1148 + "crawl_state_next_idx": {
1149 + "name": "crawl_state_next_idx",
1150 + "columns": [
1151 + {
1152 + "expression": "connector_id",
1153 + "isExpression": false,
1154 + "asc": true,
1155 + "nulls": "last"
1156 + },
1157 + {
1158 + "expression": "next_fetch_at",
1159 + "isExpression": false,
1160 + "asc": true,
1161 + "nulls": "last"
1162 + }
1163 + ],
1164 + "isUnique": false,
1165 + "concurrently": false,
1166 + "method": "btree",
1167 + "with": {}
1168 + }
1169 + },
1170 + "foreignKeys": {},
1171 + "compositePrimaryKeys": {},
1172 + "uniqueConstraints": {},
1173 + "policies": {},
1174 + "checkConstraints": {},
1175 + "isRLSEnabled": false
1176 + },
1177 + "public.sources": {
1178 + "name": "sources",
1179 + "schema": "",
1180 + "columns": {
1181 + "id": {
1182 + "name": "id",
1183 + "type": "text",
1184 + "primaryKey": true,
1185 + "notNull": true
1186 + },
1187 + "name": {
1188 + "name": "name",
1189 + "type": "text",
1190 + "primaryKey": false,
1191 + "notNull": true
1192 + },
1193 + "source_type": {
1194 + "name": "source_type",
1195 + "type": "text",
1196 + "primaryKey": false,
1197 + "notNull": true
1198 + },
1199 + "url": {
1200 + "name": "url",
1201 + "type": "text",
1202 + "primaryKey": false,
1203 + "notNull": false
1204 + },
1205 + "countries": {
1206 + "name": "countries",
1207 + "type": "text[]",
1208 + "primaryKey": false,
1209 + "notNull": true,
1210 + "default": "'{}'::text[]"
1211 + },
1212 + "languages": {
1213 + "name": "languages",
1214 + "type": "text[]",
1215 + "primaryKey": false,
1216 + "notNull": true,
1217 + "default": "'{}'::text[]"
1218 + },
1219 + "currencies": {
1220 + "name": "currencies",
1221 + "type": "text[]",
1222 + "primaryKey": false,
1223 + "notNull": true,
1224 + "default": "'{}'::text[]"
1225 + },
1226 + "trust_score": {
1227 + "name": "trust_score",
1228 + "type": "numeric(8, 6)",
1229 + "primaryKey": false,
1230 + "notNull": true,
1231 + "default": 0.5
1232 + },
1233 + "trust_factors": {
1234 + "name": "trust_factors",
1235 + "type": "jsonb",
1236 + "primaryKey": false,
1237 + "notNull": true,
1238 + "default": "'{}'::jsonb"
1239 + },
1240 + "attribution_required": {
1241 + "name": "attribution_required",
1242 + "type": "boolean",
1243 + "primaryKey": false,
1244 + "notNull": true,
1245 + "default": true
1246 + },
1247 + "terms_url": {
1248 + "name": "terms_url",
1249 + "type": "text",
1250 + "primaryKey": false,
1251 + "notNull": false
1252 + },
1253 + "active": {
1254 + "name": "active",
1255 + "type": "boolean",
1256 + "primaryKey": false,
1257 + "notNull": true,
1258 + "default": true
1259 + },
1260 + "created_at": {
1261 + "name": "created_at",
1262 + "type": "timestamp with time zone",
1263 + "primaryKey": false,
1264 + "notNull": true,
1265 + "default": "now()"
1266 + },
1267 + "updated_at": {
1268 + "name": "updated_at",
1269 + "type": "timestamp with time zone",
1270 + "primaryKey": false,
1271 + "notNull": true,
1272 + "default": "now()"
1273 + }
1274 + },
1275 + "indexes": {},
1276 + "foreignKeys": {},
1277 + "compositePrimaryKeys": {},
1278 + "uniqueConstraints": {},
1279 + "policies": {},
1280 + "checkConstraints": {},
1281 + "isRLSEnabled": false
1282 + },
1283 + "public.audit_log": {
1284 + "name": "audit_log",
1285 + "schema": "",
1286 + "columns": {
1287 + "id": {
1288 + "name": "id",
1289 + "type": "text",
1290 + "primaryKey": true,
1291 + "notNull": true
1292 + },
1293 + "entity_type": {
1294 + "name": "entity_type",
1295 + "type": "text",
1296 + "primaryKey": false,
1297 + "notNull": true
1298 + },
1299 + "entity_id": {
1300 + "name": "entity_id",
1301 + "type": "text",
1302 + "primaryKey": false,
1303 + "notNull": true
1304 + },
1305 + "action": {
1306 + "name": "action",
1307 + "type": "text",
1308 + "primaryKey": false,
1309 + "notNull": true
1310 + },
1311 + "reason": {
1312 + "name": "reason",
1313 + "type": "text",
1314 + "primaryKey": false,
1315 + "notNull": true
1316 + },
1317 + "actor": {
1318 + "name": "actor",
1319 + "type": "text",
1320 + "primaryKey": false,
1321 + "notNull": true,
1322 + "default": "'system'"
1323 + },
1324 + "details": {
1325 + "name": "details",
1326 + "type": "jsonb",
1327 + "primaryKey": false,
1328 + "notNull": true,
1329 + "default": "'{}'::jsonb"
1330 + },
1331 + "created_at": {
1332 + "name": "created_at",
1333 + "type": "timestamp with time zone",
1334 + "primaryKey": false,
1335 + "notNull": true,
1336 + "default": "now()"
1337 + }
1338 + },
1339 + "indexes": {
1340 + "audit_entity_idx": {
1341 + "name": "audit_entity_idx",
1342 + "columns": [
1343 + {
1344 + "expression": "entity_type",
1345 + "isExpression": false,
1346 + "asc": true,
1347 + "nulls": "last"
1348 + },
1349 + {
1350 + "expression": "entity_id",
1351 + "isExpression": false,
1352 + "asc": true,
1353 + "nulls": "last"
1354 + }
1355 + ],
1356 + "isUnique": false,
1357 + "concurrently": false,
1358 + "method": "btree",
1359 + "with": {}
1360 + }
1361 + },
1362 + "foreignKeys": {},
1363 + "compositePrimaryKeys": {},
1364 + "uniqueConstraints": {},
1365 + "policies": {},
1366 + "checkConstraints": {},
1367 + "isRLSEnabled": false
1368 + },
1369 + "public.events": {
1370 + "name": "events",
1371 + "schema": "",
1372 + "columns": {
1373 + "id": {
1374 + "name": "id",
1375 + "type": "text",
1376 + "primaryKey": true,
1377 + "notNull": true
1378 + },
1379 + "type": {
1380 + "name": "type",
1381 + "type": "text",
1382 + "primaryKey": false,
1383 + "notNull": true
1384 + },
1385 + "entity_type": {
1386 + "name": "entity_type",
1387 + "type": "text",
1388 + "primaryKey": false,
1389 + "notNull": false
1390 + },
1391 + "entity_id": {
1392 + "name": "entity_id",
1393 + "type": "text",
1394 + "primaryKey": false,
1395 + "notNull": false
1396 + },
1397 + "payload": {
1398 + "name": "payload",
1399 + "type": "jsonb",
1400 + "primaryKey": false,
1401 + "notNull": true,
1402 + "default": "'{}'::jsonb"
1403 + },
1404 + "created_at": {
1405 + "name": "created_at",
1406 + "type": "timestamp with time zone",
1407 + "primaryKey": false,
1408 + "notNull": true,
1409 + "default": "now()"
1410 + }
1411 + },
1412 + "indexes": {
1413 + "events_type_created_idx": {
1414 + "name": "events_type_created_idx",
1415 + "columns": [
1416 + {
1417 + "expression": "type",
1418 + "isExpression": false,
1419 + "asc": true,
1420 + "nulls": "last"
1421 + },
1422 + {
1423 + "expression": "created_at",
1424 + "isExpression": false,
1425 + "asc": true,
1426 + "nulls": "last"
1427 + }
1428 + ],
1429 + "isUnique": false,
1430 + "concurrently": false,
1431 + "method": "btree",
1432 + "with": {}
1433 + },
1434 + "events_entity_idx": {
1435 + "name": "events_entity_idx",
1436 + "columns": [
1437 + {
1438 + "expression": "entity_type",
1439 + "isExpression": false,
1440 + "asc": true,
1441 + "nulls": "last"
1442 + },
1443 + {
1444 + "expression": "entity_id",
1445 + "isExpression": false,
1446 + "asc": true,
1447 + "nulls": "last"
1448 + }
1449 + ],
1450 + "isUnique": false,
1451 + "concurrently": false,
1452 + "method": "btree",
1453 + "with": {}
1454 + }
1455 + },
1456 + "foreignKeys": {},
1457 + "compositePrimaryKeys": {},
1458 + "uniqueConstraints": {},
1459 + "policies": {},
1460 + "checkConstraints": {},
1461 + "isRLSEnabled": false
1462 + },
1463 + "public.normalized_records": {
1464 + "name": "normalized_records",
1465 + "schema": "",
1466 + "columns": {
1467 + "id": {
1468 + "name": "id",
1469 + "type": "text",
1470 + "primaryKey": true,
1471 + "notNull": true
1472 + },
1473 + "raw_record_id": {
1474 + "name": "raw_record_id",
1475 + "type": "text",
1476 + "primaryKey": false,
1477 + "notNull": true
1478 + },
1479 + "connector_id": {
1480 + "name": "connector_id",
1481 + "type": "text",
1482 + "primaryKey": false,
1483 + "notNull": true
1484 + },
1485 + "source_id": {
1486 + "name": "source_id",
1487 + "type": "text",
1488 + "primaryKey": false,
1489 + "notNull": true
1490 + },
1491 + "kind": {
1492 + "name": "kind",
1493 + "type": "text",
1494 + "primaryKey": false,
1495 + "notNull": true
1496 + },
1497 + "payload": {
1498 + "name": "payload",
1499 + "type": "jsonb",
1500 + "primaryKey": false,
1501 + "notNull": true
1502 + },
1503 + "seq": {
1504 + "name": "seq",
1505 + "type": "integer",
1506 + "primaryKey": false,
1507 + "notNull": true,
1508 + "default": 0
1509 + },
1510 + "asset_id": {
1511 + "name": "asset_id",
1512 + "type": "text",
1513 + "primaryKey": false,
1514 + "notNull": false
1515 + },
1516 + "variant_id": {
1517 + "name": "variant_id",
1518 + "type": "text",
1519 + "primaryKey": false,
1520 + "notNull": false
1521 + },
1522 + "match_method": {
1523 + "name": "match_method",
1524 + "type": "text",
1525 + "primaryKey": false,
1526 + "notNull": false
1527 + },
1528 + "match_confidence": {
1529 + "name": "match_confidence",
1530 + "type": "numeric(8, 6)",
1531 + "primaryKey": false,
1532 + "notNull": false
1533 + },
1534 + "status": {
1535 + "name": "status",
1536 + "type": "text",
1537 + "primaryKey": false,
1538 + "notNull": true,
1539 + "default": "'pending'"
1540 + },
1541 + "reject_reason": {
1542 + "name": "reject_reason",
1543 + "type": "text",
1544 + "primaryKey": false,
1545 + "notNull": false
1546 + },
1547 + "target_id": {
1548 + "name": "target_id",
1549 + "type": "text",
1550 + "primaryKey": false,
1551 + "notNull": false
1552 + },
1553 + "created_at": {
1554 + "name": "created_at",
1555 + "type": "timestamp with time zone",
1556 + "primaryKey": false,
1557 + "notNull": true,
1558 + "default": "now()"
1559 + },
1560 + "processed_at": {
1561 + "name": "processed_at",
1562 + "type": "timestamp with time zone",
1563 + "primaryKey": false,
1564 + "notNull": false
1565 + }
1566 + },
1567 + "indexes": {
1568 + "normalized_records_status_idx": {
1569 + "name": "normalized_records_status_idx",
1570 + "columns": [
1571 + {
1572 + "expression": "status",
1573 + "isExpression": false,
1574 + "asc": true,
1575 + "nulls": "last"
1576 + },
1577 + {
1578 + "expression": "created_at",
1579 + "isExpression": false,
1580 + "asc": true,
1581 + "nulls": "last"
1582 + }
1583 + ],
1584 + "isUnique": false,
1585 + "concurrently": false,
1586 + "method": "btree",
1587 + "with": {}
1588 + },
1589 + "normalized_records_asset_idx": {
1590 + "name": "normalized_records_asset_idx",
1591 + "columns": [
1592 + {
1593 + "expression": "asset_id",
1594 + "isExpression": false,
1595 + "asc": true,
1596 + "nulls": "last"
1597 + }
1598 + ],
1599 + "isUnique": false,
1600 + "concurrently": false,
1601 + "method": "btree",
1602 + "with": {}
1603 + },
1604 + "normalized_records_raw_uq": {
1605 + "name": "normalized_records_raw_uq",
1606 + "columns": [
1607 + {
1608 + "expression": "raw_record_id",
1609 + "isExpression": false,
1610 + "asc": true,
1611 + "nulls": "last"
1612 + },
1613 + {
1614 + "expression": "kind",
1615 + "isExpression": false,
1616 + "asc": true,
1617 + "nulls": "last"
1618 + },
1619 + {
1620 + "expression": "seq",
1621 + "isExpression": false,
1622 + "asc": true,
1623 + "nulls": "last"
1624 + }
1625 + ],
1626 + "isUnique": true,
1627 + "concurrently": false,
1628 + "method": "btree",
1629 + "with": {}
1630 + }
1631 + },
1632 + "foreignKeys": {},
1633 + "compositePrimaryKeys": {},
1634 + "uniqueConstraints": {},
1635 + "policies": {},
1636 + "checkConstraints": {},
1637 + "isRLSEnabled": false
1638 + },
1639 + "public.raw_records": {
1640 + "name": "raw_records",
1641 + "schema": "",
1642 + "columns": {
1643 + "id": {
1644 + "name": "id",
1645 + "type": "text",
1646 + "primaryKey": true,
1647 + "notNull": true
1648 + },
1649 + "connector_id": {
1650 + "name": "connector_id",
1651 + "type": "text",
1652 + "primaryKey": false,
1653 + "notNull": true
1654 + },
1655 + "source_id": {
1656 + "name": "source_id",
1657 + "type": "text",
1658 + "primaryKey": false,
1659 + "notNull": true
1660 + },
1661 + "run_id": {
1662 + "name": "run_id",
1663 + "type": "text",
1664 + "primaryKey": false,
1665 + "notNull": false
1666 + },
1667 + "engine": {
1668 + "name": "engine",
1669 + "type": "text",
1670 + "primaryKey": false,
1671 + "notNull": true
1672 + },
1673 + "url": {
1674 + "name": "url",
1675 + "type": "text",
1676 + "primaryKey": false,
1677 + "notNull": true
1678 + },
1679 + "external_id": {
1680 + "name": "external_id",
1681 + "type": "text",
1682 + "primaryKey": false,
1683 + "notNull": false
1684 + },
1685 + "kind": {
1686 + "name": "kind",
1687 + "type": "text",
1688 + "primaryKey": false,
1689 + "notNull": true
1690 + },
1691 + "fetched_at": {
1692 + "name": "fetched_at",
1693 + "type": "timestamp with time zone",
1694 + "primaryKey": false,
1695 + "notNull": true
1696 + },
1697 + "content_hash": {
1698 + "name": "content_hash",
1699 + "type": "text",
1700 + "primaryKey": false,
1701 + "notNull": true
1702 + },
1703 + "http_status": {
1704 + "name": "http_status",
1705 + "type": "integer",
1706 + "primaryKey": false,
1707 + "notNull": false
1708 + },
1709 + "payload": {
1710 + "name": "payload",
1711 + "type": "jsonb",
1712 + "primaryKey": false,
1713 + "notNull": true
1714 + },
1715 + "snapshot_ref": {
1716 + "name": "snapshot_ref",
1717 + "type": "text",
1718 + "primaryKey": false,
1719 + "notNull": false
1720 + },
1721 + "parser_version": {
1722 + "name": "parser_version",
1723 + "type": "text",
1724 + "primaryKey": false,
1725 + "notNull": true
1726 + },
1727 + "connector_version": {
1728 + "name": "connector_version",
1729 + "type": "text",
1730 + "primaryKey": false,
1731 + "notNull": true
1732 + },
1733 + "processed_at": {
1734 + "name": "processed_at",
1735 + "type": "timestamp with time zone",
1736 + "primaryKey": false,
1737 + "notNull": false
1738 + },
1739 + "process_error": {
1740 + "name": "process_error",
1741 + "type": "text",
1742 + "primaryKey": false,
1743 + "notNull": false
1744 + },
1745 + "created_at": {
1746 + "name": "created_at",
1747 + "type": "timestamp with time zone",
1748 + "primaryKey": false,
1749 + "notNull": true,
1750 + "default": "now()"
1751 + }
1752 + },
1753 + "indexes": {
1754 + "raw_records_connector_hash_uq": {
1755 + "name": "raw_records_connector_hash_uq",
1756 + "columns": [
1757 + {
1758 + "expression": "connector_id",
1759 + "isExpression": false,
1760 + "asc": true,
1761 + "nulls": "last"
1762 + },
1763 + {
1764 + "expression": "content_hash",
1765 + "isExpression": false,
1766 + "asc": true,
1767 + "nulls": "last"
1768 + }
1769 + ],
1770 + "isUnique": true,
1771 + "concurrently": false,
1772 + "method": "btree",
1773 + "with": {}
1774 + },
1775 + "raw_records_connector_fetched_idx": {
1776 + "name": "raw_records_connector_fetched_idx",
1777 + "columns": [
1778 + {
1779 + "expression": "connector_id",
1780 + "isExpression": false,
1781 + "asc": true,
1782 + "nulls": "last"
1783 + },
1784 + {
1785 + "expression": "fetched_at",
1786 + "isExpression": false,
1787 + "asc": true,
1788 + "nulls": "last"
1789 + }
1790 + ],
1791 + "isUnique": false,
1792 + "concurrently": false,
1793 + "method": "btree",
1794 + "with": {}
1795 + },
1796 + "raw_records_unprocessed_idx": {
1797 + "name": "raw_records_unprocessed_idx",
1798 + "columns": [
1799 + {
1800 + "expression": "processed_at",
1801 + "isExpression": false,
1802 + "asc": true,
1803 + "nulls": "last"
1804 + }
1805 + ],
1806 + "isUnique": false,
1807 + "concurrently": false,
1808 + "method": "btree",
1809 + "with": {}
1810 + },
1811 + "raw_records_external_idx": {
1812 + "name": "raw_records_external_idx",
1813 + "columns": [
1814 + {
1815 + "expression": "connector_id",
1816 + "isExpression": false,
1817 + "asc": true,
1818 + "nulls": "last"
1819 + },
1820 + {
1821 + "expression": "external_id",
1822 + "isExpression": false,
1823 + "asc": true,
1824 + "nulls": "last"
1825 + }
1826 + ],
1827 + "isUnique": false,
1828 + "concurrently": false,
1829 + "method": "btree",
1830 + "with": {}
1831 + }
1832 + },
1833 + "foreignKeys": {},
1834 + "compositePrimaryKeys": {},
1835 + "uniqueConstraints": {},
1836 + "policies": {},
1837 + "checkConstraints": {},
1838 + "isRLSEnabled": false
1839 + },
1840 + "public.asset_embeddings": {
1841 + "name": "asset_embeddings",
1842 + "schema": "",
1843 + "columns": {
1844 + "asset_id": {
1845 + "name": "asset_id",
1846 + "type": "text",
1847 + "primaryKey": true,
1848 + "notNull": true
1849 + },
1850 + "model": {
1851 + "name": "model",
1852 + "type": "text",
1853 + "primaryKey": false,
1854 + "notNull": true
1855 + },
1856 + "embedding": {
1857 + "name": "embedding",
1858 + "type": "vector(1536)",
1859 + "primaryKey": false,
1860 + "notNull": true
1861 + },
1862 + "updated_at": {
1863 + "name": "updated_at",
1864 + "type": "timestamp with time zone",
1865 + "primaryKey": false,
1866 + "notNull": true,
1867 + "default": "now()"
1868 + }
1869 + },
1870 + "indexes": {},
1871 + "foreignKeys": {},
1872 + "compositePrimaryKeys": {},
1873 + "uniqueConstraints": {},
1874 + "policies": {},
1875 + "checkConstraints": {},
1876 + "isRLSEnabled": false
1877 + },
1878 + "public.asset_stats": {
1879 + "name": "asset_stats",
1880 + "schema": "",
1881 + "columns": {
1882 + "asset_id": {
1883 + "name": "asset_id",
1884 + "type": "text",
1885 + "primaryKey": true,
1886 + "notNull": true
1887 + },
1888 + "riv_usd": {
1889 + "name": "riv_usd",
1890 + "type": "numeric(18, 4)",
1891 + "primaryKey": false,
1892 + "notNull": false
1893 + },
1894 + "riv_low_usd": {
1895 + "name": "riv_low_usd",
1896 + "type": "numeric(18, 4)",
1897 + "primaryKey": false,
1898 + "notNull": false
1899 + },
1900 + "riv_high_usd": {
1901 + "name": "riv_high_usd",
1902 + "type": "numeric(18, 4)",
1903 + "primaryKey": false,
1904 + "notNull": false
1905 + },
1906 + "riv_confidence": {
1907 + "name": "riv_confidence",
1908 + "type": "numeric(8, 6)",
1909 + "primaryKey": false,
1910 + "notNull": false
1911 + },
1912 + "riv_sample_size": {
1913 + "name": "riv_sample_size",
1914 + "type": "integer",
1915 + "primaryKey": false,
1916 + "notNull": true,
1917 + "default": 0
1918 + },
1919 + "riv_variant_id": {
1920 + "name": "riv_variant_id",
1921 + "type": "text",
1922 + "primaryKey": false,
1923 + "notNull": false
1924 + },
1925 + "latest_sale_usd": {
1926 + "name": "latest_sale_usd",
1927 + "type": "numeric(18, 4)",
1928 + "primaryKey": false,
1929 + "notNull": false
1930 + },
1931 + "latest_sale_at": {
1932 + "name": "latest_sale_at",
1933 + "type": "timestamp with time zone",
1934 + "primaryKey": false,
1935 + "notNull": false
1936 + },
1937 + "change_1d": {
1938 + "name": "change_1d",
1939 + "type": "numeric(8, 6)",
1940 + "primaryKey": false,
1941 + "notNull": false
1942 + },
1943 + "change_7d": {
1944 + "name": "change_7d",
1945 + "type": "numeric(8, 6)",
1946 + "primaryKey": false,
1947 + "notNull": false
1948 + },
1949 + "change_30d": {
1950 + "name": "change_30d",
1951 + "type": "numeric(8, 6)",
1952 + "primaryKey": false,
1953 + "notNull": false
1954 + },
1955 + "change_90d": {
1956 + "name": "change_90d",
1957 + "type": "numeric(8, 6)",
1958 + "primaryKey": false,
1959 + "notNull": false
1960 + },
1961 + "change_1y": {
1962 + "name": "change_1y",
1963 + "type": "numeric(8, 6)",
1964 + "primaryKey": false,
1965 + "notNull": false
1966 + },
1967 + "ath_usd": {
1968 + "name": "ath_usd",
1969 + "type": "numeric(18, 4)",
1970 + "primaryKey": false,
1971 + "notNull": false
1972 + },
1973 + "ath_at": {
1974 + "name": "ath_at",
1975 + "type": "timestamp with time zone",
1976 + "primaryKey": false,
1977 + "notNull": false
1978 + },
1979 + "atl_usd": {
1980 + "name": "atl_usd",
1981 + "type": "numeric(18, 4)",
1982 + "primaryKey": false,
1983 + "notNull": false
1984 + },
1985 + "atl_at": {
1986 + "name": "atl_at",
1987 + "type": "timestamp with time zone",
1988 + "primaryKey": false,
1989 + "notNull": false
1990 + },
1991 + "sales_count": {
1992 + "name": "sales_count",
1993 + "type": "integer",
1994 + "primaryKey": false,
1995 + "notNull": true,
1996 + "default": 0
1997 + },
1998 + "sales_30d": {
1999 + "name": "sales_30d",
2000 + "type": "integer",
2001 + "primaryKey": false,
2002 + "notNull": true,
2003 + "default": 0
2004 + },
2005 + "sales_1y": {
2006 + "name": "sales_1y",
2007 + "type": "integer",
2008 + "primaryKey": false,
2009 + "notNull": true,
2010 + "default": 0
2011 + },
2012 + "volume_30d_usd": {
2013 + "name": "volume_30d_usd",
2014 + "type": "numeric(18, 4)",
2015 + "primaryKey": false,
2016 + "notNull": false
2017 + },
2018 + "active_listings": {
2019 + "name": "active_listings",
2020 + "type": "integer",
2021 + "primaryKey": false,
2022 + "notNull": true,
2023 + "default": 0
2024 + },
2025 + "min_ask_usd": {
2026 + "name": "min_ask_usd",
2027 + "type": "numeric(18, 4)",
2028 + "primaryKey": false,
2029 + "notNull": false
2030 + },
2031 + "observations_count": {
2032 + "name": "observations_count",
2033 + "type": "integer",
2034 + "primaryKey": false,
2035 + "notNull": true,
2036 + "default": 0
2037 + },
2038 + "sources_count": {
2039 + "name": "sources_count",
2040 + "type": "integer",
2041 + "primaryKey": false,
2042 + "notNull": true,
2043 + "default": 0
2044 + },
2045 + "liquidity_score": {
2046 + "name": "liquidity_score",
2047 + "type": "real",
2048 + "primaryKey": false,
2049 + "notNull": false
2050 + },
2051 + "rarity_score": {
2052 + "name": "rarity_score",
2053 + "type": "real",
2054 + "primaryKey": false,
2055 + "notNull": false
2056 + },
2057 + "momentum_7d": {
2058 + "name": "momentum_7d",
2059 + "type": "real",
2060 + "primaryKey": false,
2061 + "notNull": false
2062 + },
2063 + "momentum_30d": {
2064 + "name": "momentum_30d",
2065 + "type": "real",
2066 + "primaryKey": false,
2067 + "notNull": false
2068 + },
2069 + "momentum_90d": {
2070 + "name": "momentum_90d",
2071 + "type": "real",
2072 + "primaryKey": false,
2073 + "notNull": false
2074 + },
2075 + "momentum_1y": {
2076 + "name": "momentum_1y",
2077 + "type": "real",
2078 + "primaryKey": false,
2079 + "notNull": false
2080 + },
2081 + "trending_score": {
2082 + "name": "trending_score",
2083 + "type": "real",
2084 + "primaryKey": false,
2085 + "notNull": false
2086 + },
2087 + "value_opportunity": {
2088 + "name": "value_opportunity",
2089 + "type": "real",
2090 + "primaryKey": false,
2091 + "notNull": false
2092 + },
2093 + "data_quality": {
2094 + "name": "data_quality",
2095 + "type": "real",
2096 + "primaryKey": false,
2097 + "notNull": false
2098 + },
2099 + "watchers": {
2100 + "name": "watchers",
2101 + "type": "integer",
2102 + "primaryKey": false,
2103 + "notNull": true,
2104 + "default": 0
2105 + },
2106 + "views_30d": {
2107 + "name": "views_30d",
2108 + "type": "integer",
2109 + "primaryKey": false,
2110 + "notNull": true,
2111 + "default": 0
2112 + },
2113 + "updated_at": {
2114 + "name": "updated_at",
2115 + "type": "timestamp with time zone",
2116 + "primaryKey": false,
2117 + "notNull": true,
2118 + "default": "now()"
2119 + }
2120 + },
2121 + "indexes": {
2122 + "asset_stats_riv_idx": {
2123 + "name": "asset_stats_riv_idx",
2124 + "columns": [
2125 + {
2126 + "expression": "riv_usd",
2127 + "isExpression": false,
2128 + "asc": true,
2129 + "nulls": "last"
2130 + }
2131 + ],
2132 + "isUnique": false,
2133 + "concurrently": false,
2134 + "method": "btree",
2135 + "with": {}
2136 + },
2137 + "asset_stats_trending_idx": {
2138 + "name": "asset_stats_trending_idx",
2139 + "columns": [
2140 + {
2141 + "expression": "trending_score",
2142 + "isExpression": false,
2143 + "asc": true,
2144 + "nulls": "last"
2145 + }
2146 + ],
2147 + "isUnique": false,
2148 + "concurrently": false,
2149 + "method": "btree",
2150 + "with": {}
2151 + },
2152 + "asset_stats_liquidity_idx": {
2153 + "name": "asset_stats_liquidity_idx",
2154 + "columns": [
2155 + {
2156 + "expression": "liquidity_score",
2157 + "isExpression": false,
2158 + "asc": true,
2159 + "nulls": "last"
2160 + }
2161 + ],
2162 + "isUnique": false,
2163 + "concurrently": false,
2164 + "method": "btree",
2165 + "with": {}
2166 + }
2167 + },
2168 + "foreignKeys": {},
2169 + "compositePrimaryKeys": {},
2170 + "uniqueConstraints": {},
2171 + "policies": {},
2172 + "checkConstraints": {},
2173 + "isRLSEnabled": false
2174 + },
2175 + "public.asset_variants": {
2176 + "name": "asset_variants",
2177 + "schema": "",
2178 + "columns": {
2179 + "id": {
2180 + "name": "id",
2181 + "type": "text",
2182 + "primaryKey": true,
2183 + "notNull": true
2184 + },
2185 + "asset_id": {
2186 + "name": "asset_id",
2187 + "type": "text",
2188 + "primaryKey": false,
2189 + "notNull": true
2190 + },
2191 + "variant_key": {
2192 + "name": "variant_key",
2193 + "type": "text",
2194 + "primaryKey": false,
2195 + "notNull": true
2196 + },
2197 + "grader": {
2198 + "name": "grader",
2199 + "type": "text",
2200 + "primaryKey": false,
2201 + "notNull": false
2202 + },
2203 + "grade": {
2204 + "name": "grade",
2205 + "type": "text",
2206 + "primaryKey": false,
2207 + "notNull": false
2208 + },
2209 + "qualifier": {
2210 + "name": "qualifier",
2211 + "type": "text",
2212 + "primaryKey": false,
2213 + "notNull": false
2214 + },
2215 + "condition": {
2216 + "name": "condition",
2217 + "type": "text",
2218 + "primaryKey": false,
2219 + "notNull": false
2220 + },
2221 + "completeness": {
2222 + "name": "completeness",
2223 + "type": "text",
2224 + "primaryKey": false,
2225 + "notNull": false
2226 + },
2227 + "size_label": {
2228 + "name": "size_label",
2229 + "type": "text",
2230 + "primaryKey": false,
2231 + "notNull": false
2232 + },
2233 + "label": {
2234 + "name": "label",
2235 + "type": "text",
2236 + "primaryKey": false,
2237 + "notNull": true
2238 + },
2239 + "is_default": {
2240 + "name": "is_default",
2241 + "type": "boolean",
2242 + "primaryKey": false,
2243 + "notNull": true,
2244 + "default": false
2245 + },
2246 + "created_at": {
2247 + "name": "created_at",
2248 + "type": "timestamp with time zone",
2249 + "primaryKey": false,
2250 + "notNull": true,
2251 + "default": "now()"
2252 + }
2253 + },
2254 + "indexes": {
2255 + "asset_variants_uq": {
2256 + "name": "asset_variants_uq",
2257 + "columns": [
2258 + {
2259 + "expression": "asset_id",
2260 + "isExpression": false,
2261 + "asc": true,
2262 + "nulls": "last"
2263 + },
2264 + {
2265 + "expression": "variant_key",
2266 + "isExpression": false,
2267 + "asc": true,
2268 + "nulls": "last"
2269 + }
2270 + ],
2271 + "isUnique": true,
2272 + "concurrently": false,
2273 + "method": "btree",
2274 + "with": {}
2275 + },
2276 + "asset_variants_asset_idx": {
2277 + "name": "asset_variants_asset_idx",
2278 + "columns": [
2279 + {
2280 + "expression": "asset_id",
2281 + "isExpression": false,
2282 + "asc": true,
2283 + "nulls": "last"
2284 + }
2285 + ],
2286 + "isUnique": false,
2287 + "concurrently": false,
2288 + "method": "btree",
2289 + "with": {}
2290 + }
2291 + },
2292 + "foreignKeys": {},
2293 + "compositePrimaryKeys": {},
2294 + "uniqueConstraints": {},
2295 + "policies": {},
2296 + "checkConstraints": {},
2297 + "isRLSEnabled": false
2298 + },
2299 + "public.assets": {
2300 + "name": "assets",
2301 + "schema": "",
2302 + "columns": {
2303 + "id": {
2304 + "name": "id",
2305 + "type": "text",
2306 + "primaryKey": true,
2307 + "notNull": true
2308 + },
2309 + "slug": {
2310 + "name": "slug",
2311 + "type": "text",
2312 + "primaryKey": false,
2313 + "notNull": true
2314 + },
2315 + "canonical_key": {
2316 + "name": "canonical_key",
2317 + "type": "text",
2318 + "primaryKey": false,
2319 + "notNull": true
2320 + },
2321 + "category_slug": {
2322 + "name": "category_slug",
2323 + "type": "text",
2324 + "primaryKey": false,
2325 + "notNull": true
2326 + },
2327 + "subcategory_slug": {
2328 + "name": "subcategory_slug",
2329 + "type": "text",
2330 + "primaryKey": false,
2331 + "notNull": false
2332 + },
2333 + "family_slug": {
2334 + "name": "family_slug",
2335 + "type": "text",
2336 + "primaryKey": false,
2337 + "notNull": true
2338 + },
2339 + "franchise": {
2340 + "name": "franchise",
2341 + "type": "text",
2342 + "primaryKey": false,
2343 + "notNull": false
2344 + },
2345 + "brand": {
2346 + "name": "brand",
2347 + "type": "text",
2348 + "primaryKey": false,
2349 + "notNull": false
2350 + },
2351 + "series": {
2352 + "name": "series",
2353 + "type": "text",
2354 + "primaryKey": false,
2355 + "notNull": false
2356 + },
2357 + "set_slug": {
2358 + "name": "set_slug",
2359 + "type": "text",
2360 + "primaryKey": false,
2361 + "notNull": false
2362 + },
2363 + "set_name": {
2364 + "name": "set_name",
2365 + "type": "text",
2366 + "primaryKey": false,
2367 + "notNull": false
2368 + },
2369 + "set_code": {
2370 + "name": "set_code",
2371 + "type": "text",
2372 + "primaryKey": false,
2373 + "notNull": false
2374 + },
2375 + "name": {
2376 + "name": "name",
2377 + "type": "text",
2378 + "primaryKey": false,
2379 + "notNull": true
2380 + },
2381 + "title": {
2382 + "name": "title",
2383 + "type": "text",
2384 + "primaryKey": false,
2385 + "notNull": true
2386 + },
2387 + "model": {
2388 + "name": "model",
2389 + "type": "text",
2390 + "primaryKey": false,
2391 + "notNull": false
2392 + },
2393 + "reference": {
2394 + "name": "reference",
2395 + "type": "text",
2396 + "primaryKey": false,
2397 + "notNull": false
2398 + },
2399 + "number": {
2400 + "name": "number",
2401 + "type": "text",
2402 + "primaryKey": false,
2403 + "notNull": false
2404 + },
2405 + "year": {
2406 + "name": "year",
2407 + "type": "integer",
2408 + "primaryKey": false,
2409 + "notNull": false
2410 + },
2411 + "edition": {
2412 + "name": "edition",
2413 + "type": "text",
2414 + "primaryKey": false,
2415 + "notNull": false
2416 + },
2417 + "variant": {
2418 + "name": "variant",
2419 + "type": "text",
2420 + "primaryKey": false,
2421 + "notNull": false
2422 + },
2423 + "language": {
2424 + "name": "language",
2425 + "type": "text",
2426 + "primaryKey": false,
2427 + "notNull": false
2428 + },
2429 + "region": {
2430 + "name": "region",
2431 + "type": "text",
2432 + "primaryKey": false,
2433 + "notNull": false
2434 + },
2435 + "country": {
2436 + "name": "country",
2437 + "type": "text",
2438 + "primaryKey": false,
2439 + "notNull": false
2440 + },
2441 + "material": {
2442 + "name": "material",
2443 + "type": "text",
2444 + "primaryKey": false,
2445 + "notNull": false
2446 + },
2447 + "size": {
2448 + "name": "size",
2449 + "type": "text",
2450 + "primaryKey": false,
2451 + "notNull": false
2452 + },
2453 + "color": {
2454 + "name": "color",
2455 + "type": "text",
2456 + "primaryKey": false,
2457 + "notNull": false
2458 + },
2459 + "rarity": {
2460 + "name": "rarity",
2461 + "type": "text",
2462 + "primaryKey": false,
2463 + "notNull": false
2464 + },
2465 + "production_quantity": {
2466 + "name": "production_quantity",
2467 + "type": "integer",
2468 + "primaryKey": false,
2469 + "notNull": false
2470 + },
2471 + "original_msrp": {
2472 + "name": "original_msrp",
2473 + "type": "numeric(18, 4)",
2474 + "primaryKey": false,
2475 + "notNull": false
2476 + },
2477 + "original_msrp_currency": {
2478 + "name": "original_msrp_currency",
2479 + "type": "text",
2480 + "primaryKey": false,
2481 + "notNull": false
2482 + },
2483 + "release_date": {
2484 + "name": "release_date",
2485 + "type": "text",
2486 + "primaryKey": false,
2487 + "notNull": false
2488 + },
2489 + "description": {
2490 + "name": "description",
2491 + "type": "text",
2492 + "primaryKey": false,
2493 + "notNull": false
2494 + },
2495 + "hero_image_url": {
2496 + "name": "hero_image_url",
2497 + "type": "text",
2498 + "primaryKey": false,
2499 + "notNull": false
2500 + },
2501 + "identifiers": {
2502 + "name": "identifiers",
2503 + "type": "jsonb",
2504 + "primaryKey": false,
2505 + "notNull": true,
2506 + "default": "'{}'::jsonb"
2507 + },
2508 + "metadata": {
2509 + "name": "metadata",
2510 + "type": "jsonb",
2511 + "primaryKey": false,
2512 + "notNull": true,
2513 + "default": "'{}'::jsonb"
2514 + },
2515 + "merged_from": {
2516 + "name": "merged_from",
2517 + "type": "text[]",
2518 + "primaryKey": false,
2519 + "notNull": true,
2520 + "default": "'{}'::text[]"
2521 + },
2522 + "data_quality": {
2523 + "name": "data_quality",
2524 + "type": "real",
2525 + "primaryKey": false,
2526 + "notNull": true,
2527 + "default": 0
2528 + },
2529 + "verified": {
2530 + "name": "verified",
2531 + "type": "boolean",
2532 + "primaryKey": false,
2533 + "notNull": true,
2534 + "default": false
2535 + },
2536 + "search": {
2537 + "name": "search",
2538 + "type": "tsvector",
2539 + "primaryKey": false,
2540 + "notNull": false,
2541 + "generated": {
2542 + "as": "setweight(to_tsvector('simple', coalesce(name, '')), 'A') || setweight(to_tsvector('simple', coalesce(set_name, '') || ' ' || coalesce(number, '') || ' ' || coalesce(variant, '') || ' ' || coalesce(edition, '')), 'B') || setweight(to_tsvector('simple', coalesce(brand, '') || ' ' || coalesce(franchise, '') || ' ' || coalesce(reference, '') || ' ' || coalesce(model, '') || ' ' || coalesce(year::text, '') || ' ' || coalesce(category_slug, '')), 'C')",
2543 + "type": "stored"
2544 + }
2545 + },
2546 + "created_at": {
2547 + "name": "created_at",
2548 + "type": "timestamp with time zone",
2549 + "primaryKey": false,
2550 + "notNull": true,
2551 + "default": "now()"
2552 + },
2553 + "updated_at": {
2554 + "name": "updated_at",
2555 + "type": "timestamp with time zone",
2556 + "primaryKey": false,
2557 + "notNull": true,
2558 + "default": "now()"
2559 + }
2560 + },
2561 + "indexes": {
2562 + "assets_canonical_key_uq": {
2563 + "name": "assets_canonical_key_uq",
2564 + "columns": [
2565 + {
2566 + "expression": "canonical_key",
2567 + "isExpression": false,
2568 + "asc": true,
2569 + "nulls": "last"
2570 + }
2571 + ],
2572 + "isUnique": true,
2573 + "concurrently": false,
2574 + "method": "btree",
2575 + "with": {}
2576 + },
2577 + "assets_slug_uq": {
2578 + "name": "assets_slug_uq",
2579 + "columns": [
2580 + {
2581 + "expression": "slug",
2582 + "isExpression": false,
2583 + "asc": true,
2584 + "nulls": "last"
2585 + }
2586 + ],
2587 + "isUnique": true,
2588 + "concurrently": false,
2589 + "method": "btree",
2590 + "with": {}
2591 + },
2592 + "assets_category_idx": {
2593 + "name": "assets_category_idx",
2594 + "columns": [
2595 + {
2596 + "expression": "category_slug",
2597 + "isExpression": false,
2598 + "asc": true,
2599 + "nulls": "last"
2600 + }
2601 + ],
2602 + "isUnique": false,
2603 + "concurrently": false,
2604 + "method": "btree",
2605 + "with": {}
2606 + },
2607 + "assets_family_idx": {
2608 + "name": "assets_family_idx",
2609 + "columns": [
2610 + {
2611 + "expression": "family_slug",
2612 + "isExpression": false,
2613 + "asc": true,
2614 + "nulls": "last"
2615 + }
2616 + ],
2617 + "isUnique": false,
2618 + "concurrently": false,
2619 + "method": "btree",
2620 + "with": {}
2621 + },
2622 + "assets_set_idx": {
2623 + "name": "assets_set_idx",
2624 + "columns": [
2625 + {
2626 + "expression": "set_slug",
2627 + "isExpression": false,
2628 + "asc": true,
2629 + "nulls": "last"
2630 + }
2631 + ],
2632 + "isUnique": false,
2633 + "concurrently": false,
2634 + "method": "btree",
2635 + "with": {}
2636 + },
2637 + "assets_search_gin": {
2638 + "name": "assets_search_gin",
2639 + "columns": [
2640 + {
2641 + "expression": "search",
2642 + "isExpression": false,
2643 + "asc": true,
2644 + "nulls": "last"
2645 + }
2646 + ],
2647 + "isUnique": false,
2648 + "concurrently": false,
2649 + "method": "gin",
2650 + "with": {}
2651 + },
2652 + "assets_title_trgm": {
2653 + "name": "assets_title_trgm",
2654 + "columns": [
2655 + {
2656 + "expression": "\"title\" gin_trgm_ops",
2657 + "asc": true,
2658 + "isExpression": true,
2659 + "nulls": "last"
2660 + }
2661 + ],
2662 + "isUnique": false,
2663 + "concurrently": false,
2664 + "method": "gin",
2665 + "with": {}
2666 + },
2667 + "assets_identifiers_gin": {
2668 + "name": "assets_identifiers_gin",
2669 + "columns": [
2670 + {
2671 + "expression": "identifiers",
2672 + "isExpression": false,
2673 + "asc": true,
2674 + "nulls": "last"
2675 + }
2676 + ],
2677 + "isUnique": false,
2678 + "concurrently": false,
2679 + "method": "gin",
2680 + "with": {}
2681 + }
2682 + },
2683 + "foreignKeys": {},
2684 + "compositePrimaryKeys": {},
2685 + "uniqueConstraints": {},
2686 + "policies": {},
2687 + "checkConstraints": {},
2688 + "isRLSEnabled": false
2689 + },
2690 + "public.grade_premiums": {
2691 + "name": "grade_premiums",
2692 + "schema": "",
2693 + "columns": {
2694 + "id": {
2695 + "name": "id",
2696 + "type": "text",
2697 + "primaryKey": true,
2698 + "notNull": true
2699 + },
2700 + "category_slug": {
2701 + "name": "category_slug",
2702 + "type": "text",
2703 + "primaryKey": false,
2704 + "notNull": true
2705 + },
2706 + "grader": {
2707 + "name": "grader",
2708 + "type": "text",
2709 + "primaryKey": false,
2710 + "notNull": true
2711 + },
2712 + "grade": {
2713 + "name": "grade",
2714 + "type": "text",
2715 + "primaryKey": false,
2716 + "notNull": true
2717 + },
2718 + "market_multiplier": {
2719 + "name": "market_multiplier",
2720 + "type": "real",
2721 + "primaryKey": false,
2722 + "notNull": true
2723 + },
2724 + "sample_size": {
2725 + "name": "sample_size",
2726 + "type": "integer",
2727 + "primaryKey": false,
2728 + "notNull": true
2729 + },
2730 + "computed_at": {
2731 + "name": "computed_at",
2732 + "type": "timestamp with time zone",
2733 + "primaryKey": false,
2734 + "notNull": true
2735 + }
2736 + },
2737 + "indexes": {
2738 + "grade_premiums_uq": {
2739 + "name": "grade_premiums_uq",
2740 + "columns": [
2741 + {
2742 + "expression": "category_slug",
2743 + "isExpression": false,
2744 + "asc": true,
2745 + "nulls": "last"
2746 + },
2747 + {
2748 + "expression": "grader",
2749 + "isExpression": false,
2750 + "asc": true,
2751 + "nulls": "last"
2752 + },
2753 + {
2754 + "expression": "grade",
2755 + "isExpression": false,
2756 + "asc": true,
2757 + "nulls": "last"
2758 + }
2759 + ],
2760 + "isUnique": true,
2761 + "concurrently": false,
2762 + "method": "btree",
2763 + "with": {}
2764 + }
2765 + },
2766 + "foreignKeys": {},
2767 + "compositePrimaryKeys": {},
2768 + "uniqueConstraints": {},
2769 + "policies": {},
2770 + "checkConstraints": {},
2771 + "isRLSEnabled": false
2772 + },
2773 + "public.images": {
2774 + "name": "images",
2775 + "schema": "",
2776 + "columns": {
2777 + "id": {
2778 + "name": "id",
2779 + "type": "text",
2780 + "primaryKey": true,
2781 + "notNull": true
2782 + },
2783 + "asset_id": {
2784 + "name": "asset_id",
2785 + "type": "text",
2786 + "primaryKey": false,
2787 + "notNull": false
2788 + },
2789 + "listing_id": {
2790 + "name": "listing_id",
2791 + "type": "text",
2792 + "primaryKey": false,
2793 + "notNull": false
2794 + },
2795 + "sale_id": {
2796 + "name": "sale_id",
2797 + "type": "text",
2798 + "primaryKey": false,
2799 + "notNull": false
2800 + },
2801 + "source_id": {
2802 + "name": "source_id",
2803 + "type": "text",
2804 + "primaryKey": false,
2805 + "notNull": false
2806 + },
2807 + "url": {
2808 + "name": "url",
2809 + "type": "text",
2810 + "primaryKey": false,
2811 + "notNull": true
2812 + },
2813 + "role": {
2814 + "name": "role",
2815 + "type": "text",
2816 + "primaryKey": false,
2817 + "notNull": true,
2818 + "default": "'gallery'"
2819 + },
2820 + "width": {
2821 + "name": "width",
2822 + "type": "integer",
2823 + "primaryKey": false,
2824 + "notNull": false
2825 + },
2826 + "height": {
2827 + "name": "height",
2828 + "type": "integer",
2829 + "primaryKey": false,
2830 + "notNull": false
2831 + },
2832 + "phash": {
2833 + "name": "phash",
2834 + "type": "text",
2835 + "primaryKey": false,
2836 + "notNull": false
2837 + },
2838 + "embedding": {
2839 + "name": "embedding",
2840 + "type": "vector(512)",
2841 + "primaryKey": false,
2842 + "notNull": false
2843 + },
2844 + "attribution": {
2845 + "name": "attribution",
2846 + "type": "text",
2847 + "primaryKey": false,
2848 + "notNull": false
2849 + },
2850 + "created_at": {
2851 + "name": "created_at",
2852 + "type": "timestamp with time zone",
2853 + "primaryKey": false,
2854 + "notNull": true,
2855 + "default": "now()"
2856 + }
2857 + },
2858 + "indexes": {
2859 + "images_asset_idx": {
2860 + "name": "images_asset_idx",
2861 + "columns": [
2862 + {
2863 + "expression": "asset_id",
2864 + "isExpression": false,
2865 + "asc": true,
2866 + "nulls": "last"
2867 + }
2868 + ],
2869 + "isUnique": false,
2870 + "concurrently": false,
2871 + "method": "btree",
2872 + "with": {}
2873 + },
2874 + "images_phash_idx": {
2875 + "name": "images_phash_idx",
2876 + "columns": [
2877 + {
2878 + "expression": "phash",
2879 + "isExpression": false,
2880 + "asc": true,
2881 + "nulls": "last"
2882 + }
2883 + ],
2884 + "isUnique": false,
2885 + "concurrently": false,
2886 + "method": "btree",
2887 + "with": {}
2888 + },
2889 + "images_url_uq": {
2890 + "name": "images_url_uq",
2891 + "columns": [
2892 + {
2893 + "expression": "url",
2894 + "isExpression": false,
2895 + "asc": true,
2896 + "nulls": "last"
2897 + }
2898 + ],
2899 + "isUnique": true,
2900 + "concurrently": false,
2901 + "method": "btree",
2902 + "with": {}
2903 + }
2904 + },
2905 + "foreignKeys": {},
2906 + "compositePrimaryKeys": {},
2907 + "uniqueConstraints": {},
2908 + "policies": {},
2909 + "checkConstraints": {},
2910 + "isRLSEnabled": false
2911 + },
2912 + "public.population_reports": {
2913 + "name": "population_reports",
2914 + "schema": "",
2915 + "columns": {
2916 + "id": {
2917 + "name": "id",
2918 + "type": "text",
2919 + "primaryKey": true,
2920 + "notNull": true
2921 + },
2922 + "asset_id": {
2923 + "name": "asset_id",
2924 + "type": "text",
2925 + "primaryKey": false,
2926 + "notNull": true
2927 + },
2928 + "grader": {
2929 + "name": "grader",
2930 + "type": "text",
2931 + "primaryKey": false,
2932 + "notNull": true
2933 + },
2934 + "source_id": {
2935 + "name": "source_id",
2936 + "type": "text",
2937 + "primaryKey": false,
2938 + "notNull": true
2939 + },
2940 + "source_url": {
2941 + "name": "source_url",
2942 + "type": "text",
2943 + "primaryKey": false,
2944 + "notNull": false
2945 + },
2946 + "report_date": {
2947 + "name": "report_date",
2948 + "type": "text",
2949 + "primaryKey": false,
2950 + "notNull": true
2951 + },
2952 + "total": {
2953 + "name": "total",
2954 + "type": "integer",
2955 + "primaryKey": false,
2956 + "notNull": true
2957 + },
2958 + "by_grade": {
2959 + "name": "by_grade",
2960 + "type": "jsonb",
2961 + "primaryKey": false,
2962 + "notNull": true
2963 + },
2964 + "created_at": {
2965 + "name": "created_at",
2966 + "type": "timestamp with time zone",
2967 + "primaryKey": false,
2968 + "notNull": true,
2969 + "default": "now()"
2970 + }
2971 + },
2972 + "indexes": {
2973 + "population_reports_uq": {
2974 + "name": "population_reports_uq",
2975 + "columns": [
2976 + {
2977 + "expression": "asset_id",
2978 + "isExpression": false,
2979 + "asc": true,
2980 + "nulls": "last"
2981 + },
2982 + {
2983 + "expression": "grader",
2984 + "isExpression": false,
2985 + "asc": true,
2986 + "nulls": "last"
2987 + },
2988 + {
2989 + "expression": "report_date",
2990 + "isExpression": false,
2991 + "asc": true,
2992 + "nulls": "last"
2993 + }
2994 + ],
2995 + "isUnique": true,
2996 + "concurrently": false,
2997 + "method": "btree",
2998 + "with": {}
2999 + }
3000 + },
3001 + "foreignKeys": {},
3002 + "compositePrimaryKeys": {},
3003 + "uniqueConstraints": {},
3004 + "policies": {},
3005 + "checkConstraints": {},
3006 + "isRLSEnabled": false
3007 + },
3008 + "public.variant_stats": {
3009 + "name": "variant_stats",
3010 + "schema": "",
3011 + "columns": {
3012 + "variant_id": {
3013 + "name": "variant_id",
3014 + "type": "text",
3015 + "primaryKey": true,
3016 + "notNull": true
3017 + },
3018 + "asset_id": {
3019 + "name": "asset_id",
3020 + "type": "text",
3021 + "primaryKey": false,
3022 + "notNull": true
3023 + },
3024 + "riv_usd": {
3025 + "name": "riv_usd",
3026 + "type": "numeric(18, 4)",
3027 + "primaryKey": false,
3028 + "notNull": false
3029 + },
3030 + "riv_low_usd": {
3031 + "name": "riv_low_usd",
3032 + "type": "numeric(18, 4)",
3033 + "primaryKey": false,
3034 + "notNull": false
3035 + },
3036 + "riv_high_usd": {
3037 + "name": "riv_high_usd",
3038 + "type": "numeric(18, 4)",
3039 + "primaryKey": false,
3040 + "notNull": false
3041 + },
3042 + "riv_confidence": {
3043 + "name": "riv_confidence",
3044 + "type": "numeric(8, 6)",
3045 + "primaryKey": false,
3046 + "notNull": false
3047 + },
3048 + "riv_sample_size": {
3049 + "name": "riv_sample_size",
3050 + "type": "integer",
3051 + "primaryKey": false,
3052 + "notNull": true,
3053 + "default": 0
3054 + },
3055 + "latest_sale_usd": {
3056 + "name": "latest_sale_usd",
3057 + "type": "numeric(18, 4)",
3058 + "primaryKey": false,
3059 + "notNull": false
3060 + },
3061 + "latest_sale_at": {
3062 + "name": "latest_sale_at",
3063 + "type": "timestamp with time zone",
3064 + "primaryKey": false,
3065 + "notNull": false
3066 + },
3067 + "change_30d": {
3068 + "name": "change_30d",
3069 + "type": "numeric(8, 6)",
3070 + "primaryKey": false,
3071 + "notNull": false
3072 + },
3073 + "change_1y": {
3074 + "name": "change_1y",
3075 + "type": "numeric(8, 6)",
3076 + "primaryKey": false,
3077 + "notNull": false
3078 + },
3079 + "sales_count": {
3080 + "name": "sales_count",
3081 + "type": "integer",
3082 + "primaryKey": false,
3083 + "notNull": true,
3084 + "default": 0
3085 + },
3086 + "sales_30d": {
3087 + "name": "sales_30d",
3088 + "type": "integer",
3089 + "primaryKey": false,
3090 + "notNull": true,
3091 + "default": 0
3092 + },
3093 + "active_listings": {
3094 + "name": "active_listings",
3095 + "type": "integer",
3096 + "primaryKey": false,
3097 + "notNull": true,
3098 + "default": 0
3099 + },
3100 + "min_ask_usd": {
3101 + "name": "min_ask_usd",
3102 + "type": "numeric(18, 4)",
3103 + "primaryKey": false,
3104 + "notNull": false
3105 + },
3106 + "liquidity_score": {
3107 + "name": "liquidity_score",
3108 + "type": "real",
3109 + "primaryKey": false,
3110 + "notNull": false
3111 + },
3112 + "updated_at": {
3113 + "name": "updated_at",
3114 + "type": "timestamp with time zone",
3115 + "primaryKey": false,
3116 + "notNull": true,
3117 + "default": "now()"
3118 + }
3119 + },
3120 + "indexes": {},
3121 + "foreignKeys": {},
3122 + "compositePrimaryKeys": {},
3123 + "uniqueConstraints": {},
3124 + "policies": {},
3125 + "checkConstraints": {},
3126 + "isRLSEnabled": false
3127 + },
3128 + "public.auction_lots": {
3129 + "name": "auction_lots",
3130 + "schema": "",
3131 + "columns": {
3132 + "id": {
3133 + "name": "id",
3134 + "type": "text",
3135 + "primaryKey": true,
3136 + "notNull": true
3137 + },
3138 + "auction_id": {
3139 + "name": "auction_id",
3140 + "type": "text",
3141 + "primaryKey": false,
3142 + "notNull": true
3143 + },
3144 + "asset_id": {
3145 + "name": "asset_id",
3146 + "type": "text",
3147 + "primaryKey": false,
3148 + "notNull": false
3149 + },
3150 + "variant_id": {
3151 + "name": "variant_id",
3152 + "type": "text",
3153 + "primaryKey": false,
3154 + "notNull": false
3155 + },
3156 + "source_id": {
3157 + "name": "source_id",
3158 + "type": "text",
3159 + "primaryKey": false,
3160 + "notNull": true
3161 + },
3162 + "lot_number": {
3163 + "name": "lot_number",
3164 + "type": "text",
3165 + "primaryKey": false,
3166 + "notNull": false
3167 + },
3168 + "title": {
3169 + "name": "title",
3170 + "type": "text",
3171 + "primaryKey": false,
3172 + "notNull": true
3173 + },
3174 + "url": {
3175 + "name": "url",
3176 + "type": "text",
3177 + "primaryKey": false,
3178 + "notNull": true
3179 + },
3180 + "estimate_low": {
3181 + "name": "estimate_low",
3182 + "type": "numeric(18, 4)",
3183 + "primaryKey": false,
3184 + "notNull": false
3185 + },
3186 + "estimate_high": {
3187 + "name": "estimate_high",
3188 + "type": "numeric(18, 4)",
3189 + "primaryKey": false,
3190 + "notNull": false
3191 + },
3192 + "current_bid": {
3193 + "name": "current_bid",
3194 + "type": "numeric(18, 4)",
3195 + "primaryKey": false,
3196 + "notNull": false
3197 + },
3198 + "hammer_price": {
3199 + "name": "hammer_price",
3200 + "type": "numeric(18, 4)",
3201 + "primaryKey": false,
3202 + "notNull": false
3203 + },
3204 + "currency": {
3205 + "name": "currency",
3206 + "type": "text",
3207 + "primaryKey": false,
3208 + "notNull": false
3209 + },
3210 + "bid_count": {
3211 + "name": "bid_count",
3212 + "type": "integer",
3213 + "primaryKey": false,
3214 + "notNull": false
3215 + },
3216 + "starts_at": {
3217 + "name": "starts_at",
3218 + "type": "timestamp with time zone",
3219 + "primaryKey": false,
3220 + "notNull": false
3221 + },
3222 + "ends_at": {
3223 + "name": "ends_at",
3224 + "type": "timestamp with time zone",
3225 + "primaryKey": false,
3226 + "notNull": false
3227 + },
3228 + "status": {
3229 + "name": "status",
3230 + "type": "text",
3231 + "primaryKey": false,
3232 + "notNull": true,
3233 + "default": "'upcoming'"
3234 + },
3235 + "image_urls": {
3236 + "name": "image_urls",
3237 + "type": "jsonb",
3238 + "primaryKey": false,
3239 + "notNull": true,
3240 + "default": "'[]'::jsonb"
3241 + },
3242 + "grader": {
3243 + "name": "grader",
3244 + "type": "text",
3245 + "primaryKey": false,
3246 + "notNull": false
3247 + },
3248 + "grade": {
3249 + "name": "grade",
3250 + "type": "text",
3251 + "primaryKey": false,
3252 + "notNull": false
3253 + },
3254 + "created_at": {
3255 + "name": "created_at",
3256 + "type": "timestamp with time zone",
3257 + "primaryKey": false,
3258 + "notNull": true,
3259 + "default": "now()"
3260 + },
3261 + "updated_at": {
3262 + "name": "updated_at",
3263 + "type": "timestamp with time zone",
3264 + "primaryKey": false,
3265 + "notNull": true,
3266 + "default": "now()"
3267 + }
3268 + },
3269 + "indexes": {
3270 + "auction_lots_url_uq": {
3271 + "name": "auction_lots_url_uq",
3272 + "columns": [
3273 + {
3274 + "expression": "url",
3275 + "isExpression": false,
3276 + "asc": true,
3277 + "nulls": "last"
3278 + }
3279 + ],
3280 + "isUnique": true,
3281 + "concurrently": false,
3282 + "method": "btree",
3283 + "with": {}
3284 + },
3285 + "auction_lots_auction_idx": {
3286 + "name": "auction_lots_auction_idx",
3287 + "columns": [
3288 + {
3289 + "expression": "auction_id",
3290 + "isExpression": false,
3291 + "asc": true,
3292 + "nulls": "last"
3293 + }
3294 + ],
3295 + "isUnique": false,
3296 + "concurrently": false,
3297 + "method": "btree",
3298 + "with": {}
3299 + },
3300 + "auction_lots_asset_idx": {
3301 + "name": "auction_lots_asset_idx",
3302 + "columns": [
3303 + {
3304 + "expression": "asset_id",
3305 + "isExpression": false,
3306 + "asc": true,
3307 + "nulls": "last"
3308 + }
3309 + ],
3310 + "isUnique": false,
3311 + "concurrently": false,
3312 + "method": "btree",
3313 + "with": {}
3314 + },
3315 + "auction_lots_ends_idx": {
3316 + "name": "auction_lots_ends_idx",
3317 + "columns": [
3318 + {
3319 + "expression": "ends_at",
3320 + "isExpression": false,
3321 + "asc": true,
3322 + "nulls": "last"
3323 + }
3324 + ],
3325 + "isUnique": false,
3326 + "concurrently": false,
3327 + "method": "btree",
3328 + "with": {}
3329 + }
3330 + },
3331 + "foreignKeys": {},
3332 + "compositePrimaryKeys": {},
3333 + "uniqueConstraints": {},
3334 + "policies": {},
3335 + "checkConstraints": {},
3336 + "isRLSEnabled": false
3337 + },
3338 + "public.auctions": {
3339 + "name": "auctions",
3340 + "schema": "",
3341 + "columns": {
3342 + "id": {
3343 + "name": "id",
3344 + "type": "text",
3345 + "primaryKey": true,
3346 + "notNull": true
3347 + },
3348 + "source_id": {
3349 + "name": "source_id",
3350 + "type": "text",
3351 + "primaryKey": false,
3352 + "notNull": true
3353 + },
3354 + "auction_house": {
3355 + "name": "auction_house",
3356 + "type": "text",
3357 + "primaryKey": false,
3358 + "notNull": true
3359 + },
3360 + "name": {
3361 + "name": "name",
3362 + "type": "text",
3363 + "primaryKey": false,
3364 + "notNull": true
3365 + },
3366 + "url": {
3367 + "name": "url",
3368 + "type": "text",
3369 + "primaryKey": false,
3370 + "notNull": true
3371 + },
3372 + "starts_at": {
3373 + "name": "starts_at",
3374 + "type": "timestamp with time zone",
3375 + "primaryKey": false,
3376 + "notNull": false
3377 + },
3378 + "ends_at": {
3379 + "name": "ends_at",
3380 + "type": "timestamp with time zone",
3381 + "primaryKey": false,
3382 + "notNull": false
3383 + },
3384 + "location": {
3385 + "name": "location",
3386 + "type": "text",
3387 + "primaryKey": false,
3388 + "notNull": false
3389 + },
3390 + "category_slugs": {
3391 + "name": "category_slugs",
3392 + "type": "text[]",
3393 + "primaryKey": false,
3394 + "notNull": true,
3395 + "default": "'{}'::text[]"
3396 + },
3397 + "lot_count": {
3398 + "name": "lot_count",
3399 + "type": "integer",
3400 + "primaryKey": false,
3401 + "notNull": false
3402 + },
3403 + "status": {
3404 + "name": "status",
3405 + "type": "text",
3406 + "primaryKey": false,
3407 + "notNull": true,
3408 + "default": "'upcoming'"
3409 + },
3410 + "currency": {
3411 + "name": "currency",
3412 + "type": "text",
3413 + "primaryKey": false,
3414 + "notNull": false
3415 + },
3416 + "created_at": {
3417 + "name": "created_at",
3418 + "type": "timestamp with time zone",
3419 + "primaryKey": false,
3420 + "notNull": true,
3421 + "default": "now()"
3422 + },
3423 + "updated_at": {
3424 + "name": "updated_at",
3425 + "type": "timestamp with time zone",
3426 + "primaryKey": false,
3427 + "notNull": true,
3428 + "default": "now()"
3429 + }
3430 + },
3431 + "indexes": {
3432 + "auctions_url_uq": {
3433 + "name": "auctions_url_uq",
3434 + "columns": [
3435 + {
3436 + "expression": "url",
3437 + "isExpression": false,
3438 + "asc": true,
3439 + "nulls": "last"
3440 + }
3441 + ],
3442 + "isUnique": true,
3443 + "concurrently": false,
3444 + "method": "btree",
3445 + "with": {}
3446 + },
3447 + "auctions_ends_idx": {
3448 + "name": "auctions_ends_idx",
3449 + "columns": [
3450 + {
3451 + "expression": "ends_at",
3452 + "isExpression": false,
3453 + "asc": true,
3454 + "nulls": "last"
3455 + }
3456 + ],
3457 + "isUnique": false,
3458 + "concurrently": false,
3459 + "method": "btree",
3460 + "with": {}
3461 + }
3462 + },
3463 + "foreignKeys": {},
3464 + "compositePrimaryKeys": {},
3465 + "uniqueConstraints": {},
3466 + "policies": {},
3467 + "checkConstraints": {},
3468 + "isRLSEnabled": false
3469 + },
3470 + "public.cross_listing_groups": {
3471 + "name": "cross_listing_groups",
3472 + "schema": "",
3473 + "columns": {
3474 + "id": {
3475 + "name": "id",
3476 + "type": "text",
3477 + "primaryKey": true,
3478 + "notNull": true
3479 + },
3480 + "asset_id": {
3481 + "name": "asset_id",
3482 + "type": "text",
3483 + "primaryKey": false,
3484 + "notNull": false
3485 + },
3486 + "signals": {
3487 + "name": "signals",
3488 + "type": "jsonb",
3489 + "primaryKey": false,
3490 + "notNull": true,
3491 + "default": "'{}'::jsonb"
3492 + },
3493 + "created_at": {
3494 + "name": "created_at",
3495 + "type": "timestamp with time zone",
3496 + "primaryKey": false,
3497 + "notNull": true,
3498 + "default": "now()"
3499 + }
3500 + },
3501 + "indexes": {},
3502 + "foreignKeys": {},
3503 + "compositePrimaryKeys": {},
3504 + "uniqueConstraints": {},
3505 + "policies": {},
3506 + "checkConstraints": {},
3507 + "isRLSEnabled": false
3508 + },
3509 + "public.fx_rates": {
3510 + "name": "fx_rates",
3511 + "schema": "",
3512 + "columns": {
3513 + "date": {
3514 + "name": "date",
3515 + "type": "date",
3516 + "primaryKey": false,
3517 + "notNull": true
3518 + },
3519 + "base": {
3520 + "name": "base",
3521 + "type": "text",
3522 + "primaryKey": false,
3523 + "notNull": true
3524 + },
3525 + "quote": {
3526 + "name": "quote",
3527 + "type": "text",
3528 + "primaryKey": false,
3529 + "notNull": true
3530 + },
3531 + "rate": {
3532 + "name": "rate",
3533 + "type": "real",
3534 + "primaryKey": false,
3535 + "notNull": true
3536 + },
3537 + "source": {
3538 + "name": "source",
3539 + "type": "text",
3540 + "primaryKey": false,
3541 + "notNull": true,
3542 + "default": "'ecb'"
3543 + }
3544 + },
3545 + "indexes": {
3546 + "fx_rates_uq": {
3547 + "name": "fx_rates_uq",
3548 + "columns": [
3549 + {
3550 + "expression": "date",
3551 + "isExpression": false,
3552 + "asc": true,
3553 + "nulls": "last"
3554 + },
3555 + {
3556 + "expression": "base",
3557 + "isExpression": false,
3558 + "asc": true,
3559 + "nulls": "last"
3560 + },
3561 + {
3562 + "expression": "quote",
3563 + "isExpression": false,
3564 + "asc": true,
3565 + "nulls": "last"
3566 + }
3567 + ],
3568 + "isUnique": true,
3569 + "concurrently": false,
3570 + "method": "btree",
3571 + "with": {}
3572 + }
3573 + },
3574 + "foreignKeys": {},
3575 + "compositePrimaryKeys": {},
3576 + "uniqueConstraints": {},
3577 + "policies": {},
3578 + "checkConstraints": {},
3579 + "isRLSEnabled": false
3580 + },
3581 + "public.listing_events": {
3582 + "name": "listing_events",
3583 + "schema": "",
3584 + "columns": {
3585 + "id": {
3586 + "name": "id",
3587 + "type": "text",
3588 + "primaryKey": true,
3589 + "notNull": true
3590 + },
3591 + "listing_id": {
3592 + "name": "listing_id",
3593 + "type": "text",
3594 + "primaryKey": false,
3595 + "notNull": true
3596 + },
3597 + "event_type": {
3598 + "name": "event_type",
3599 + "type": "text",
3600 + "primaryKey": false,
3601 + "notNull": true
3602 + },
3603 + "old_price": {
3604 + "name": "old_price",
3605 + "type": "numeric(18, 4)",
3606 + "primaryKey": false,
3607 + "notNull": false
3608 + },
3609 + "new_price": {
3610 + "name": "new_price",
3611 + "type": "numeric(18, 4)",
3612 + "primaryKey": false,
3613 + "notNull": false
3614 + },
3615 + "currency": {
3616 + "name": "currency",
3617 + "type": "text",
3618 + "primaryKey": false,
3619 + "notNull": false
3620 + },
3621 + "occurred_at": {
3622 + "name": "occurred_at",
3623 + "type": "timestamp with time zone",
3624 + "primaryKey": false,
3625 + "notNull": true
3626 + }
3627 + },
3628 + "indexes": {
3629 + "listing_events_listing_idx": {
3630 + "name": "listing_events_listing_idx",
3631 + "columns": [
3632 + {
3633 + "expression": "listing_id",
3634 + "isExpression": false,
3635 + "asc": true,
3636 + "nulls": "last"
3637 + },
3638 + {
3639 + "expression": "occurred_at",
3640 + "isExpression": false,
3641 + "asc": true,
3642 + "nulls": "last"
3643 + }
3644 + ],
3645 + "isUnique": false,
3646 + "concurrently": false,
3647 + "method": "btree",
3648 + "with": {}
3649 + }
3650 + },
3651 + "foreignKeys": {},
3652 + "compositePrimaryKeys": {},
3653 + "uniqueConstraints": {},
3654 + "policies": {},
3655 + "checkConstraints": {},
3656 + "isRLSEnabled": false
3657 + },
3658 + "public.listings": {
3659 + "name": "listings",
3660 + "schema": "",
3661 + "columns": {
3662 + "id": {
3663 + "name": "id",
3664 + "type": "text",
3665 + "primaryKey": true,
3666 + "notNull": true
3667 + },
3668 + "asset_id": {
3669 + "name": "asset_id",
3670 + "type": "text",
3671 + "primaryKey": false,
3672 + "notNull": true
3673 + },
3674 + "variant_id": {
3675 + "name": "variant_id",
3676 + "type": "text",
3677 + "primaryKey": false,
3678 + "notNull": false
3679 + },
3680 + "source_id": {
3681 + "name": "source_id",
3682 + "type": "text",
3683 + "primaryKey": false,
3684 + "notNull": true
3685 + },
3686 + "connector_id": {
3687 + "name": "connector_id",
3688 + "type": "text",
3689 + "primaryKey": false,
3690 + "notNull": true
3691 + },
3692 + "raw_record_id": {
3693 + "name": "raw_record_id",
3694 + "type": "text",
3695 + "primaryKey": false,
3696 + "notNull": false
3697 + },
3698 + "source_url": {
3699 + "name": "source_url",
3700 + "type": "text",
3701 + "primaryKey": false,
3702 + "notNull": true
3703 + },
3704 + "external_id": {
3705 + "name": "external_id",
3706 + "type": "text",
3707 + "primaryKey": false,
3708 + "notNull": true
3709 + },
3710 + "listing_type": {
3711 + "name": "listing_type",
3712 + "type": "text",
3713 + "primaryKey": false,
3714 + "notNull": true,
3715 + "default": "'unknown'"
3716 + },
3717 + "price": {
3718 + "name": "price",
3719 + "type": "numeric(18, 4)",
3720 + "primaryKey": false,
3721 + "notNull": false
3722 + },
3723 + "currency": {
3724 + "name": "currency",
3725 + "type": "text",
3726 + "primaryKey": false,
3727 + "notNull": false
3728 + },
3729 + "price_usd": {
3730 + "name": "price_usd",
3731 + "type": "numeric(18, 4)",
3732 + "primaryKey": false,
3733 + "notNull": false
3734 + },
3735 + "seller": {
3736 + "name": "seller",
3737 + "type": "text",
3738 + "primaryKey": false,
3739 + "notNull": false
3740 + },
3741 + "seller_reputation": {
3742 + "name": "seller_reputation",
3743 + "type": "text",
3744 + "primaryKey": false,
3745 + "notNull": false
3746 + },
3747 + "location": {
3748 + "name": "location",
3749 + "type": "text",
3750 + "primaryKey": false,
3751 + "notNull": false
3752 + },
3753 + "shipping_cost": {
3754 + "name": "shipping_cost",
3755 + "type": "numeric(18, 4)",
3756 + "primaryKey": false,
3757 + "notNull": false
3758 + },
3759 + "quantity": {
3760 + "name": "quantity",
3761 + "type": "integer",
3762 + "primaryKey": false,
3763 + "notNull": false
3764 + },
3765 + "condition": {
3766 + "name": "condition",
3767 + "type": "text",
3768 + "primaryKey": false,
3769 + "notNull": false
3770 + },
3771 + "grader": {
3772 + "name": "grader",
3773 + "type": "text",
3774 + "primaryKey": false,
3775 + "notNull": false
3776 + },
3777 + "grade": {
3778 + "name": "grade",
3779 + "type": "text",
3780 + "primaryKey": false,
3781 + "notNull": false
3782 + },
3783 + "certification_number": {
3784 + "name": "certification_number",
3785 + "type": "text",
3786 + "primaryKey": false,
3787 + "notNull": false
3788 + },
3789 + "image_urls": {
3790 + "name": "image_urls",
3791 + "type": "jsonb",
3792 + "primaryKey": false,
3793 + "notNull": true,
3794 + "default": "'[]'::jsonb"
3795 + },
3796 + "raw_title": {
3797 + "name": "raw_title",
3798 + "type": "text",
3799 + "primaryKey": false,
3800 + "notNull": true
3801 + },
3802 + "description": {
3803 + "name": "description",
3804 + "type": "text",
3805 + "primaryKey": false,
3806 + "notNull": false
3807 + },
3808 + "listed_at": {
3809 + "name": "listed_at",
3810 + "type": "timestamp with time zone",
3811 + "primaryKey": false,
3812 + "notNull": false
3813 + },
3814 + "ends_at": {
3815 + "name": "ends_at",
3816 + "type": "timestamp with time zone",
3817 + "primaryKey": false,
3818 + "notNull": false
3819 + },
3820 + "availability": {
3821 + "name": "availability",
3822 + "type": "text",
3823 + "primaryKey": false,
3824 + "notNull": true,
3825 + "default": "'available'"
3826 + },
3827 + "bid_count": {
3828 + "name": "bid_count",
3829 + "type": "integer",
3830 + "primaryKey": false,
3831 + "notNull": false
3832 + },
3833 + "first_seen_at": {
3834 + "name": "first_seen_at",
3835 + "type": "timestamp with time zone",
3836 + "primaryKey": false,
3837 + "notNull": true
3838 + },
3839 + "last_seen_at": {
3840 + "name": "last_seen_at",
3841 + "type": "timestamp with time zone",
3842 + "primaryKey": false,
3843 + "notNull": true
3844 + },
3845 + "price_changed_at": {
3846 + "name": "price_changed_at",
3847 + "type": "timestamp with time zone",
3848 + "primaryKey": false,
3849 + "notNull": false
3850 + },
3851 + "cross_listing_group_id": {
3852 + "name": "cross_listing_group_id",
3853 + "type": "text",
3854 + "primaryKey": false,
3855 + "notNull": false
3856 + },
3857 + "confidence": {
3858 + "name": "confidence",
3859 + "type": "numeric(8, 6)",
3860 + "primaryKey": false,
3861 + "notNull": true,
3862 + "default": 0.8
3863 + },
3864 + "data_quality": {
3865 + "name": "data_quality",
3866 + "type": "real",
3867 + "primaryKey": false,
3868 + "notNull": true,
3869 + "default": 0
3870 + },
3871 + "flags": {
3872 + "name": "flags",
3873 + "type": "text[]",
3874 + "primaryKey": false,
3875 + "notNull": true,
3876 + "default": "'{}'::text[]"
3877 + },
3878 + "discount_to_riv": {
3879 + "name": "discount_to_riv",
3880 + "type": "numeric(8, 6)",
3881 + "primaryKey": false,
3882 + "notNull": false
3883 + },
3884 + "created_at": {
3885 + "name": "created_at",
3886 + "type": "timestamp with time zone",
3887 + "primaryKey": false,
3888 + "notNull": true,
3889 + "default": "now()"
3890 + },
3891 + "updated_at": {
3892 + "name": "updated_at",
3893 + "type": "timestamp with time zone",
3894 + "primaryKey": false,
3895 + "notNull": true,
3896 + "default": "now()"
3897 + }
3898 + },
3899 + "indexes": {
3900 + "listings_source_external_uq": {
3901 + "name": "listings_source_external_uq",
3902 + "columns": [
3903 + {
3904 + "expression": "source_id",
3905 + "isExpression": false,
3906 + "asc": true,
3907 + "nulls": "last"
3908 + },
3909 + {
3910 + "expression": "external_id",
3911 + "isExpression": false,
3912 + "asc": true,
3913 + "nulls": "last"
3914 + }
3915 + ],
3916 + "isUnique": true,
3917 + "concurrently": false,
3918 + "method": "btree",
3919 + "with": {}
3920 + },
3921 + "listings_asset_avail_idx": {
3922 + "name": "listings_asset_avail_idx",
3923 + "columns": [
3924 + {
3925 + "expression": "asset_id",
3926 + "isExpression": false,
3927 + "asc": true,
3928 + "nulls": "last"
3929 + },
3930 + {
3931 + "expression": "availability",
3932 + "isExpression": false,
3933 + "asc": true,
3934 + "nulls": "last"
3935 + }
3936 + ],
3937 + "isUnique": false,
3938 + "concurrently": false,
3939 + "method": "btree",
3940 + "with": {}
3941 + },
3942 + "listings_avail_price_idx": {
3943 + "name": "listings_avail_price_idx",
3944 + "columns": [
3945 + {
3946 + "expression": "availability",
3947 + "isExpression": false,
3948 + "asc": true,
3949 + "nulls": "last"
3950 + },
3951 + {
3952 + "expression": "price_usd",
3953 + "isExpression": false,
3954 + "asc": true,
3955 + "nulls": "last"
3956 + }
3957 + ],
3958 + "isUnique": false,
3959 + "concurrently": false,
3960 + "method": "btree",
3961 + "with": {}
3962 + },
3963 + "listings_ends_idx": {
3964 + "name": "listings_ends_idx",
3965 + "columns": [
3966 + {
3967 + "expression": "ends_at",
3968 + "isExpression": false,
3969 + "asc": true,
3970 + "nulls": "last"
3971 + }
3972 + ],
3973 + "isUnique": false,
3974 + "concurrently": false,
3975 + "method": "btree",
3976 + "with": {}
3977 + },
3978 + "listings_last_seen_idx": {
3979 + "name": "listings_last_seen_idx",
3980 + "columns": [
3981 + {
3982 + "expression": "last_seen_at",
3983 + "isExpression": false,
3984 + "asc": true,
3985 + "nulls": "last"
3986 + }
3987 + ],
3988 + "isUnique": false,
3989 + "concurrently": false,
3990 + "method": "btree",
3991 + "with": {}
3992 + }
3993 + },
3994 + "foreignKeys": {},
3995 + "compositePrimaryKeys": {},
3996 + "uniqueConstraints": {},
3997 + "policies": {},
3998 + "checkConstraints": {},
3999 + "isRLSEnabled": false
4000 + },
4001 + "public.news": {
4002 + "name": "news",
4003 + "schema": "",
4004 + "columns": {
4005 + "id": {
4006 + "name": "id",
4007 + "type": "text",
4008 + "primaryKey": true,
4009 + "notNull": true
4010 + },
4011 + "source_id": {
4012 + "name": "source_id",
4013 + "type": "text",
4014 + "primaryKey": false,
4015 + "notNull": true
4016 + },
4017 + "url": {
4018 + "name": "url",
4019 + "type": "text",
4020 + "primaryKey": false,
4021 + "notNull": true
4022 + },
4023 + "title": {
4024 + "name": "title",
4025 + "type": "text",
4026 + "primaryKey": false,
4027 + "notNull": true
4028 + },
4029 + "summary": {
4030 + "name": "summary",
4031 + "type": "text",
4032 + "primaryKey": false,
4033 + "notNull": false
4034 + },
4035 + "ai_summary": {
4036 + "name": "ai_summary",
4037 + "type": "text",
4038 + "primaryKey": false,
4039 + "notNull": false
4040 + },
4041 + "published_at": {
4042 + "name": "published_at",
4043 + "type": "timestamp with time zone",
4044 + "primaryKey": false,
4045 + "notNull": false
4046 + },
4047 + "category_slugs": {
4048 + "name": "category_slugs",
4049 + "type": "text[]",
4050 + "primaryKey": false,
4051 + "notNull": true,
4052 + "default": "'{}'::text[]"
4053 + },
4054 + "news_type": {
4055 + "name": "news_type",
4056 + "type": "text",
4057 + "primaryKey": false,
4058 + "notNull": false
4059 + },
4060 + "image_url": {
4061 + "name": "image_url",
4062 + "type": "text",
4063 + "primaryKey": false,
4064 + "notNull": false
4065 + },
4066 + "fetched_at": {
4067 + "name": "fetched_at",
4068 + "type": "timestamp with time zone",
4069 + "primaryKey": false,
4070 + "notNull": true
4071 + }
4072 + },
4073 + "indexes": {
4074 + "news_url_uq": {
4075 + "name": "news_url_uq",
4076 + "columns": [
4077 + {
4078 + "expression": "url",
4079 + "isExpression": false,
4080 + "asc": true,
4081 + "nulls": "last"
4082 + }
4083 + ],
4084 + "isUnique": true,
4085 + "concurrently": false,
4086 + "method": "btree",
4087 + "with": {}
4088 + },
4089 + "news_published_idx": {
4090 + "name": "news_published_idx",
4091 + "columns": [
4092 + {
4093 + "expression": "published_at",
4094 + "isExpression": false,
4095 + "asc": true,
4096 + "nulls": "last"
4097 + }
4098 + ],
4099 + "isUnique": false,
4100 + "concurrently": false,
4101 + "method": "btree",
4102 + "with": {}
4103 + }
4104 + },
4105 + "foreignKeys": {},
4106 + "compositePrimaryKeys": {},
4107 + "uniqueConstraints": {},
4108 + "policies": {},
4109 + "checkConstraints": {},
4110 + "isRLSEnabled": false
4111 + },
4112 + "public.price_observations": {
4113 + "name": "price_observations",
4114 + "schema": "",
4115 + "columns": {
4116 + "id": {
4117 + "name": "id",
4118 + "type": "text",
4119 + "primaryKey": true,
4120 + "notNull": true
4121 + },
4122 + "asset_id": {
4123 + "name": "asset_id",
4124 + "type": "text",
4125 + "primaryKey": false,
4126 + "notNull": true
4127 + },
4128 + "variant_id": {
4129 + "name": "variant_id",
4130 + "type": "text",
4131 + "primaryKey": false,
4132 + "notNull": false
4133 + },
4134 + "source_id": {
4135 + "name": "source_id",
4136 + "type": "text",
4137 + "primaryKey": false,
4138 + "notNull": true
4139 + },
4140 + "connector_id": {
4141 + "name": "connector_id",
4142 + "type": "text",
4143 + "primaryKey": false,
4144 + "notNull": true
4145 + },
4146 + "raw_record_id": {
4147 + "name": "raw_record_id",
4148 + "type": "text",
4149 + "primaryKey": false,
4150 + "notNull": false
4151 + },
4152 + "source_url": {
4153 + "name": "source_url",
4154 + "type": "text",
4155 + "primaryKey": false,
4156 + "notNull": true
4157 + },
4158 + "price_kind": {
4159 + "name": "price_kind",
4160 + "type": "text",
4161 + "primaryKey": false,
4162 + "notNull": true
4163 + },
4164 + "price": {
4165 + "name": "price",
4166 + "type": "numeric(18, 4)",
4167 + "primaryKey": false,
4168 + "notNull": true
4169 + },
4170 + "currency": {
4171 + "name": "currency",
4172 + "type": "text",
4173 + "primaryKey": false,
4174 + "notNull": true
4175 + },
4176 + "price_usd": {
4177 + "name": "price_usd",
4178 + "type": "numeric(18, 4)",
4179 + "primaryKey": false,
4180 + "notNull": true
4181 + },
4182 + "observation_date": {
4183 + "name": "observation_date",
4184 + "type": "date",
4185 + "primaryKey": false,
4186 + "notNull": true
4187 + },
4188 + "sample_size": {
4189 + "name": "sample_size",
4190 + "type": "integer",
4191 + "primaryKey": false,
4192 + "notNull": false
4193 + },
4194 + "dedupe_key": {
4195 + "name": "dedupe_key",
4196 + "type": "text",
4197 + "primaryKey": false,
4198 + "notNull": true
4199 + },
4200 + "created_at": {
4201 + "name": "created_at",
4202 + "type": "timestamp with time zone",
4203 + "primaryKey": false,
4204 + "notNull": true,
4205 + "default": "now()"
4206 + }
4207 + },
4208 + "indexes": {
4209 + "price_observations_dedupe_uq": {
4210 + "name": "price_observations_dedupe_uq",
4211 + "columns": [
4212 + {
4213 + "expression": "dedupe_key",
4214 + "isExpression": false,
4215 + "asc": true,
4216 + "nulls": "last"
4217 + }
4218 + ],
4219 + "isUnique": true,
4220 + "concurrently": false,
4221 + "method": "btree",
4222 + "with": {}
4223 + },
4224 + "price_observations_asset_date_idx": {
4225 + "name": "price_observations_asset_date_idx",
4226 + "columns": [
4227 + {
4228 + "expression": "asset_id",
4229 + "isExpression": false,
4230 + "asc": true,
4231 + "nulls": "last"
4232 + },
4233 + {
4234 + "expression": "observation_date",
4235 + "isExpression": false,
4236 + "asc": true,
4237 + "nulls": "last"
4238 + }
4239 + ],
4240 + "isUnique": false,
4241 + "concurrently": false,
4242 + "method": "btree",
4243 + "with": {}
4244 + }
4245 + },
4246 + "foreignKeys": {},
4247 + "compositePrimaryKeys": {},
4248 + "uniqueConstraints": {},
4249 + "policies": {},
4250 + "checkConstraints": {},
4251 + "isRLSEnabled": false
4252 + },
4253 + "public.sales": {
4254 + "name": "sales",
4255 + "schema": "",
4256 + "columns": {
4257 + "id": {
4258 + "name": "id",
4259 + "type": "text",
4260 + "primaryKey": true,
4261 + "notNull": true
4262 + },
4263 + "asset_id": {
4264 + "name": "asset_id",
4265 + "type": "text",
4266 + "primaryKey": false,
4267 + "notNull": true
4268 + },
4269 + "variant_id": {
4270 + "name": "variant_id",
4271 + "type": "text",
4272 + "primaryKey": false,
4273 + "notNull": false
4274 + },
4275 + "source_id": {
4276 + "name": "source_id",
4277 + "type": "text",
4278 + "primaryKey": false,
4279 + "notNull": true
4280 + },
4281 + "connector_id": {
4282 + "name": "connector_id",
4283 + "type": "text",
4284 + "primaryKey": false,
4285 + "notNull": true
4286 + },
4287 + "raw_record_id": {
4288 + "name": "raw_record_id",
4289 + "type": "text",
4290 + "primaryKey": false,
4291 + "notNull": false
4292 + },
4293 + "normalized_record_id": {
4294 + "name": "normalized_record_id",
4295 + "type": "text",
4296 + "primaryKey": false,
4297 + "notNull": false
4298 + },
4299 + "source_url": {
4300 + "name": "source_url",
4301 + "type": "text",
4302 + "primaryKey": false,
4303 + "notNull": true
4304 + },
4305 + "external_id": {
4306 + "name": "external_id",
4307 + "type": "text",
4308 + "primaryKey": false,
4309 + "notNull": false
4310 + },
4311 + "sale_type": {
4312 + "name": "sale_type",
4313 + "type": "text",
4314 + "primaryKey": false,
4315 + "notNull": true,
4316 + "default": "'unknown'"
4317 + },
4318 + "sale_date": {
4319 + "name": "sale_date",
4320 + "type": "timestamp with time zone",
4321 + "primaryKey": false,
4322 + "notNull": true
4323 + },
4324 + "price": {
4325 + "name": "price",
4326 + "type": "numeric(18, 4)",
4327 + "primaryKey": false,
4328 + "notNull": true
4329 + },
4330 + "currency": {
4331 + "name": "currency",
4332 + "type": "text",
4333 + "primaryKey": false,
4334 + "notNull": true
4335 + },
4336 + "price_usd": {
4337 + "name": "price_usd",
4338 + "type": "numeric(18, 4)",
4339 + "primaryKey": false,
4340 + "notNull": true
4341 + },
4342 + "fx_rate": {
4343 + "name": "fx_rate",
4344 + "type": "real",
4345 + "primaryKey": false,
4346 + "notNull": false
4347 + },
4348 + "fx_date": {
4349 + "name": "fx_date",
4350 + "type": "date",
4351 + "primaryKey": false,
4352 + "notNull": false
4353 + },
4354 + "buyer_premium_included": {
4355 + "name": "buyer_premium_included",
4356 + "type": "boolean",
4357 + "primaryKey": false,
4358 + "notNull": false
4359 + },
4360 + "quantity": {
4361 + "name": "quantity",
4362 + "type": "integer",
4363 + "primaryKey": false,
4364 + "notNull": true,
4365 + "default": 1
4366 + },
4367 + "is_bundle": {
4368 + "name": "is_bundle",
4369 + "type": "boolean",
4370 + "primaryKey": false,
4371 + "notNull": true,
4372 + "default": false
4373 + },
4374 + "condition": {
4375 + "name": "condition",
4376 + "type": "text",
4377 + "primaryKey": false,
4378 + "notNull": false
4379 + },
4380 + "grader": {
4381 + "name": "grader",
4382 + "type": "text",
4383 + "primaryKey": false,
4384 + "notNull": false
4385 + },
4386 + "grade": {
4387 + "name": "grade",
4388 + "type": "text",
4389 + "primaryKey": false,
4390 + "notNull": false
4391 + },
4392 + "certification_number": {
4393 + "name": "certification_number",
4394 + "type": "text",
4395 + "primaryKey": false,
4396 + "notNull": false
4397 + },
4398 + "location": {
4399 + "name": "location",
4400 + "type": "text",
4401 + "primaryKey": false,
4402 + "notNull": false
4403 + },
4404 + "auction_house": {
4405 + "name": "auction_house",
4406 + "type": "text",
4407 + "primaryKey": false,
4408 + "notNull": false
4409 + },
4410 + "lot_number": {
4411 + "name": "lot_number",
4412 + "type": "text",
4413 + "primaryKey": false,
4414 + "notNull": false
4415 + },
4416 + "image_urls": {
4417 + "name": "image_urls",
4418 + "type": "jsonb",
4419 + "primaryKey": false,
4420 + "notNull": true,
4421 + "default": "'[]'::jsonb"
4422 + },
4423 + "raw_title": {
4424 + "name": "raw_title",
4425 + "type": "text",
4426 + "primaryKey": false,
4427 + "notNull": true
4428 + },
4429 + "confidence": {
4430 + "name": "confidence",
4431 + "type": "numeric(8, 6)",
4432 + "primaryKey": false,
4433 + "notNull": true,
4434 + "default": 0.8
4435 + },
4436 + "data_quality": {
4437 + "name": "data_quality",
4438 + "type": "real",
4439 + "primaryKey": false,
4440 + "notNull": true,
4441 + "default": 0
4442 + },
4443 + "status": {
4444 + "name": "status",
4445 + "type": "text",
4446 + "primaryKey": false,
4447 + "notNull": true,
4448 + "default": "'valid'"
4449 + },
4450 + "flags": {
4451 + "name": "flags",
4452 + "type": "text[]",
4453 + "primaryKey": false,
4454 + "notNull": true,
4455 + "default": "'{}'::text[]"
4456 + },
4457 + "dedupe_key": {
4458 + "name": "dedupe_key",
4459 + "type": "text",
4460 + "primaryKey": false,
4461 + "notNull": true
4462 + },
4463 + "created_at": {
4464 + "name": "created_at",
4465 + "type": "timestamp with time zone",
4466 + "primaryKey": false,
4467 + "notNull": true,
4468 + "default": "now()"
4469 + }
4470 + },
4471 + "indexes": {
4472 + "sales_dedupe_uq": {
4473 + "name": "sales_dedupe_uq",
4474 + "columns": [
4475 + {
4476 + "expression": "dedupe_key",
4477 + "isExpression": false,
4478 + "asc": true,
4479 + "nulls": "last"
4480 + }
4481 + ],
4482 + "isUnique": true,
4483 + "concurrently": false,
4484 + "method": "btree",
4485 + "with": {}
4486 + },
4487 + "sales_asset_date_idx": {
4488 + "name": "sales_asset_date_idx",
4489 + "columns": [
4490 + {
4491 + "expression": "asset_id",
4492 + "isExpression": false,
4493 + "asc": true,
4494 + "nulls": "last"
4495 + },
4496 + {
4497 + "expression": "sale_date",
4498 + "isExpression": false,
4499 + "asc": true,
4500 + "nulls": "last"
4501 + }
4502 + ],
4503 + "isUnique": false,
4504 + "concurrently": false,
4505 + "method": "btree",
4506 + "with": {}
4507 + },
4508 + "sales_variant_date_idx": {
4509 + "name": "sales_variant_date_idx",
4510 + "columns": [
4511 + {
4512 + "expression": "variant_id",
4513 + "isExpression": false,
4514 + "asc": true,
4515 + "nulls": "last"
4516 + },
4517 + {
4518 + "expression": "sale_date",
4519 + "isExpression": false,
4520 + "asc": true,
4521 + "nulls": "last"
4522 + }
4523 + ],
4524 + "isUnique": false,
4525 + "concurrently": false,
4526 + "method": "btree",
4527 + "with": {}
4528 + },
4529 + "sales_source_idx": {
4530 + "name": "sales_source_idx",
4531 + "columns": [
4532 + {
4533 + "expression": "source_id",
4534 + "isExpression": false,
4535 + "asc": true,
4536 + "nulls": "last"
4537 + },
4538 + {
4539 + "expression": "sale_date",
4540 + "isExpression": false,
4541 + "asc": true,
4542 + "nulls": "last"
4543 + }
4544 + ],
4545 + "isUnique": false,
4546 + "concurrently": false,
4547 + "method": "btree",
4548 + "with": {}
4549 + },
4550 + "sales_date_idx": {
4551 + "name": "sales_date_idx",
4552 + "columns": [
4553 + {
4554 + "expression": "sale_date",
4555 + "isExpression": false,
4556 + "asc": true,
4557 + "nulls": "last"
4558 + }
4559 + ],
4560 + "isUnique": false,
4561 + "concurrently": false,
4562 + "method": "btree",
4563 + "with": {}
4564 + },
4565 + "sales_price_idx": {
4566 + "name": "sales_price_idx",
4567 + "columns": [
4568 + {
4569 + "expression": "price_usd",
4570 + "isExpression": false,
4571 + "asc": true,
4572 + "nulls": "last"
4573 + }
4574 + ],
4575 + "isUnique": false,
4576 + "concurrently": false,
4577 + "method": "btree",
4578 + "with": {}
4579 + }
4580 + },
4581 + "foreignKeys": {},
4582 + "compositePrimaryKeys": {},
4583 + "uniqueConstraints": {},
4584 + "policies": {},
4585 + "checkConstraints": {},
4586 + "isRLSEnabled": false
4587 + },
4588 + "public.benchmarks": {
4589 + "name": "benchmarks",
4590 + "schema": "",
4591 + "columns": {
4592 + "ticker": {
4593 + "name": "ticker",
4594 + "type": "text",
4595 + "primaryKey": false,
4596 + "notNull": true
4597 + },
4598 + "date": {
4599 + "name": "date",
4600 + "type": "date",
4601 + "primaryKey": false,
4602 + "notNull": true
4603 + },
4604 + "value": {
4605 + "name": "value",
4606 + "type": "real",
4607 + "primaryKey": false,
4608 + "notNull": true
4609 + },
4610 + "source": {
4611 + "name": "source",
4612 + "type": "text",
4613 + "primaryKey": false,
4614 + "notNull": true
4615 + }
4616 + },
4617 + "indexes": {},
4618 + "foreignKeys": {},
4619 + "compositePrimaryKeys": {
4620 + "benchmarks_ticker_date_pk": {
4621 + "name": "benchmarks_ticker_date_pk",
4622 + "columns": [
4623 + "ticker",
4624 + "date"
4625 + ]
4626 + }
4627 + },
4628 + "uniqueConstraints": {},
4629 + "policies": {},
4630 + "checkConstraints": {},
4631 + "isRLSEnabled": false
4632 + },
4633 + "public.category_snapshots": {
4634 + "name": "category_snapshots",
4635 + "schema": "",
4636 + "columns": {
4637 + "category_slug": {
4638 + "name": "category_slug",
4639 + "type": "text",
4640 + "primaryKey": false,
4641 + "notNull": true
4642 + },
4643 + "date": {
4644 + "name": "date",
4645 + "type": "date",
4646 + "primaryKey": false,
4647 + "notNull": true
4648 + },
4649 + "index_value": {
4650 + "name": "index_value",
4651 + "type": "real",
4652 + "primaryKey": false,
4653 + "notNull": false
4654 + },
4655 + "tracked_assets": {
4656 + "name": "tracked_assets",
4657 + "type": "integer",
4658 + "primaryKey": false,
4659 + "notNull": true,
4660 + "default": 0
4661 + },
4662 + "assets_with_valuation": {
4663 + "name": "assets_with_valuation",
4664 + "type": "integer",
4665 + "primaryKey": false,
4666 + "notNull": true,
4667 + "default": 0
4668 + },
4669 + "sales": {
4670 + "name": "sales",
4671 + "type": "integer",
4672 + "primaryKey": false,
4673 + "notNull": true,
4674 + "default": 0
4675 + },
4676 + "volume_usd": {
4677 + "name": "volume_usd",
4678 + "type": "numeric(18, 4)",
4679 + "primaryKey": false,
4680 + "notNull": false
4681 + },
4682 + "median_sale_usd": {
4683 + "name": "median_sale_usd",
4684 + "type": "numeric(18, 4)",
4685 + "primaryKey": false,
4686 + "notNull": false
4687 + },
4688 + "active_listings": {
4689 + "name": "active_listings",
4690 + "type": "integer",
4691 + "primaryKey": false,
4692 + "notNull": true,
4693 + "default": 0
4694 + },
4695 + "market_cap_est_usd": {
4696 + "name": "market_cap_est_usd",
4697 + "type": "numeric(18, 4)",
4698 + "primaryKey": false,
4699 + "notNull": false
4700 + },
4701 + "liquidity_score": {
4702 + "name": "liquidity_score",
4703 + "type": "real",
4704 + "primaryKey": false,
4705 + "notNull": false
4706 + },
4707 + "change_1d": {
4708 + "name": "change_1d",
4709 + "type": "numeric(8, 6)",
4710 + "primaryKey": false,
4711 + "notNull": false
4712 + },
4713 + "change_7d": {
4714 + "name": "change_7d",
4715 + "type": "numeric(8, 6)",
4716 + "primaryKey": false,
4717 + "notNull": false
4718 + },
4719 + "change_30d": {
4720 + "name": "change_30d",
4721 + "type": "numeric(8, 6)",
4722 + "primaryKey": false,
4723 + "notNull": false
4724 + },
4725 + "change_1y": {
4726 + "name": "change_1y",
4727 + "type": "numeric(8, 6)",
4728 + "primaryKey": false,
4729 + "notNull": false
4730 + }
4731 + },
4732 + "indexes": {},
4733 + "foreignKeys": {},
4734 + "compositePrimaryKeys": {
4735 + "category_snapshots_category_slug_date_pk": {
4736 + "name": "category_snapshots_category_slug_date_pk",
4737 + "columns": [
4738 + "category_slug",
4739 + "date"
4740 + ]
4741 + }
4742 + },
4743 + "uniqueConstraints": {},
4744 + "policies": {},
4745 + "checkConstraints": {},
4746 + "isRLSEnabled": false
4747 + },
4748 + "public.correlations": {
4749 + "name": "correlations",
4750 + "schema": "",
4751 + "columns": {
4752 + "a": {
4753 + "name": "a",
4754 + "type": "text",
4755 + "primaryKey": false,
4756 + "notNull": true
4757 + },
4758 + "b": {
4759 + "name": "b",
4760 + "type": "text",
4761 + "primaryKey": false,
4762 + "notNull": true
4763 + },
4764 + "window_days": {
4765 + "name": "window_days",
4766 + "type": "integer",
4767 + "primaryKey": false,
4768 + "notNull": true
4769 + },
4770 + "coefficient": {
4771 + "name": "coefficient",
4772 + "type": "real",
4773 + "primaryKey": false,
4774 + "notNull": true
4775 + },
4776 + "observations": {
4777 + "name": "observations",
4778 + "type": "integer",
4779 + "primaryKey": false,
4780 + "notNull": true
4781 + },
4782 + "computed_at": {
4783 + "name": "computed_at",
4784 + "type": "timestamp with time zone",
4785 + "primaryKey": false,
4786 + "notNull": true
4787 + }
4788 + },
4789 + "indexes": {},
4790 + "foreignKeys": {},
4791 + "compositePrimaryKeys": {
4792 + "correlations_a_b_window_days_pk": {
4793 + "name": "correlations_a_b_window_days_pk",
4794 + "columns": [
4795 + "a",
4796 + "b",
4797 + "window_days"
4798 + ]
4799 + }
4800 + },
4801 + "uniqueConstraints": {},
4802 + "policies": {},
4803 + "checkConstraints": {},
4804 + "isRLSEnabled": false
4805 + },
4806 + "public.index_constituents": {
4807 + "name": "index_constituents",
4808 + "schema": "",
4809 + "columns": {
4810 + "index_id": {
4811 + "name": "index_id",
4812 + "type": "text",
4813 + "primaryKey": false,
4814 + "notNull": true
4815 + },
4816 + "asset_id": {
4817 + "name": "asset_id",
4818 + "type": "text",
4819 + "primaryKey": false,
4820 + "notNull": true
4821 + },
4822 + "variant_id": {
4823 + "name": "variant_id",
4824 + "type": "text",
4825 + "primaryKey": false,
4826 + "notNull": true,
4827 + "default": "''"
4828 + },
4829 + "weight": {
4830 + "name": "weight",
4831 + "type": "real",
4832 + "primaryKey": false,
4833 + "notNull": true,
4834 + "default": 1
4835 + },
4836 + "added_at": {
4837 + "name": "added_at",
4838 + "type": "date",
4839 + "primaryKey": false,
4840 + "notNull": true
4841 + },
4842 + "removed_at": {
4843 + "name": "removed_at",
4844 + "type": "date",
4845 + "primaryKey": false,
4846 + "notNull": false
4847 + },
4848 + "reason": {
4849 + "name": "reason",
4850 + "type": "text",
4851 + "primaryKey": false,
4852 + "notNull": false
4853 + }
4854 + },
4855 + "indexes": {
4856 + "index_constituents_asset_idx": {
4857 + "name": "index_constituents_asset_idx",
4858 + "columns": [
4859 + {
4860 + "expression": "asset_id",
4861 + "isExpression": false,
4862 + "asc": true,
4863 + "nulls": "last"
4864 + }
4865 + ],
4866 + "isUnique": false,
4867 + "concurrently": false,
4868 + "method": "btree",
4869 + "with": {}
4870 + }
4871 + },
4872 + "foreignKeys": {},
4873 + "compositePrimaryKeys": {
4874 + "index_constituents_index_id_asset_id_variant_id_added_at_pk": {
4875 + "name": "index_constituents_index_id_asset_id_variant_id_added_at_pk",
4876 + "columns": [
4877 + "index_id",
4878 + "asset_id",
4879 + "variant_id",
4880 + "added_at"
4881 + ]
4882 + }
4883 + },
4884 + "uniqueConstraints": {},
4885 + "policies": {},
4886 + "checkConstraints": {},
4887 + "isRLSEnabled": false
4888 + },
4889 + "public.index_values": {
4890 + "name": "index_values",
4891 + "schema": "",
4892 + "columns": {
4893 + "index_id": {
4894 + "name": "index_id",
4895 + "type": "text",
4896 + "primaryKey": false,
4897 + "notNull": true
4898 + },
4899 + "date": {
4900 + "name": "date",
4901 + "type": "date",
4902 + "primaryKey": false,
4903 + "notNull": true
4904 + },
4905 + "value": {
4906 + "name": "value",
4907 + "type": "real",
4908 + "primaryKey": false,
4909 + "notNull": true
4910 + },
4911 + "constituents_count": {
4912 + "name": "constituents_count",
4913 + "type": "integer",
4914 + "primaryKey": false,
4915 + "notNull": true,
4916 + "default": 0
4917 + },
4918 + "transactions": {
4919 + "name": "transactions",
4920 + "type": "integer",
4921 + "primaryKey": false,
4922 + "notNull": true,
4923 + "default": 0
4924 + },
4925 + "volume_usd": {
4926 + "name": "volume_usd",
4927 + "type": "numeric(18, 4)",
4928 + "primaryKey": false,
4929 + "notNull": false
4930 + },
4931 + "median_sale_usd": {
4932 + "name": "median_sale_usd",
4933 + "type": "numeric(18, 4)",
4934 + "primaryKey": false,
4935 + "notNull": false
4936 + },
4937 + "avg_sale_usd": {
4938 + "name": "avg_sale_usd",
4939 + "type": "numeric(18, 4)",
4940 + "primaryKey": false,
4941 + "notNull": false
4942 + },
4943 + "market_cap_est_usd": {
4944 + "name": "market_cap_est_usd",
4945 + "type": "numeric(18, 4)",
4946 + "primaryKey": false,
4947 + "notNull": false
4948 + },
4949 + "market_cap_confidence": {
4950 + "name": "market_cap_confidence",
4951 + "type": "text",
4952 + "primaryKey": false,
4953 + "notNull": false
4954 + },
4955 + "liquidity_score": {
4956 + "name": "liquidity_score",
4957 + "type": "real",
4958 + "primaryKey": false,
4959 + "notNull": false
4960 + },
4961 + "momentum": {
4962 + "name": "momentum",
4963 + "type": "real",
4964 + "primaryKey": false,
4965 + "notNull": false
4966 + },
4967 + "breadth": {
4968 + "name": "breadth",
4969 + "type": "integer",
4970 + "primaryKey": false,
4971 + "notNull": false
4972 + },
4973 + "tracked_assets": {
4974 + "name": "tracked_assets",
4975 + "type": "integer",
4976 + "primaryKey": false,
4977 + "notNull": false
4978 + },
4979 + "coverage": {
4980 + "name": "coverage",
4981 + "type": "real",
4982 + "primaryKey": false,
4983 + "notNull": false
4984 + }
4985 + },
4986 + "indexes": {},
4987 + "foreignKeys": {},
4988 + "compositePrimaryKeys": {
4989 + "index_values_index_id_date_pk": {
4990 + "name": "index_values_index_id_date_pk",
4991 + "columns": [
4992 + "index_id",
4993 + "date"
4994 + ]
4995 + }
4996 + },
4997 + "uniqueConstraints": {},
4998 + "policies": {},
4999 + "checkConstraints": {},
5000 + "isRLSEnabled": false
5001 + },
5002 + "public.indices": {
5003 + "name": "indices",
5004 + "schema": "",
5005 + "columns": {
5006 + "id": {
5007 + "name": "id",
5008 + "type": "text",
5009 + "primaryKey": true,
5010 + "notNull": true
5011 + },
5012 + "ticker": {
5013 + "name": "ticker",
5014 + "type": "text",
5015 + "primaryKey": false,
5016 + "notNull": true
5017 + },
5018 + "name": {
5019 + "name": "name",
5020 + "type": "text",
5021 + "primaryKey": false,
5022 + "notNull": true
5023 + },
5024 + "description": {
5025 + "name": "description",
5026 + "type": "text",
5027 + "primaryKey": false,
5028 + "notNull": false
5029 + },
5030 + "category_slugs": {
5031 + "name": "category_slugs",
5032 + "type": "text[]",
5033 + "primaryKey": false,
5034 + "notNull": true,
5035 + "default": "'{}'::text[]"
5036 + },
5037 + "family_slugs": {
5038 + "name": "family_slugs",
5039 + "type": "text[]",
5040 + "primaryKey": false,
5041 + "notNull": true,
5042 + "default": "'{}'::text[]"
5043 + },
5044 + "parent_ticker": {
5045 + "name": "parent_ticker",
5046 + "type": "text",
5047 + "primaryKey": false,
5048 + "notNull": false
5049 + },
5050 + "methodology": {
5051 + "name": "methodology",
5052 + "type": "text",
5053 + "primaryKey": false,
5054 + "notNull": true,
5055 + "default": "'chain_linked_equal_weight_v1'"
5056 + },
5057 + "weighting": {
5058 + "name": "weighting",
5059 + "type": "text",
5060 + "primaryKey": false,
5061 + "notNull": true,
5062 + "default": "'equal'"
5063 + },
5064 + "base_date": {
5065 + "name": "base_date",
5066 + "type": "date",
5067 + "primaryKey": false,
5068 + "notNull": true
5069 + },
5070 + "base_value": {
5071 + "name": "base_value",
5072 + "type": "real",
5073 + "primaryKey": false,
5074 + "notNull": true,
5075 + "default": 1000
5076 + },
5077 + "min_constituents": {
5078 + "name": "min_constituents",
5079 + "type": "integer",
5080 + "primaryKey": false,
5081 + "notNull": true,
5082 + "default": 10
5083 + },
5084 + "active": {
5085 + "name": "active",
5086 + "type": "boolean",
5087 + "primaryKey": false,
5088 + "notNull": true,
5089 + "default": true
5090 + },
5091 + "is_flagship": {
5092 + "name": "is_flagship",
5093 + "type": "boolean",
5094 + "primaryKey": false,
5095 + "notNull": true,
5096 + "default": false
5097 + },
5098 + "color": {
5099 + "name": "color",
5100 + "type": "text",
5101 + "primaryKey": false,
5102 + "notNull": false
5103 + },
5104 + "created_at": {
5105 + "name": "created_at",
5106 + "type": "timestamp with time zone",
5107 + "primaryKey": false,
5108 + "notNull": true,
5109 + "default": "now()"
5110 + }
5111 + },
5112 + "indexes": {},
5113 + "foreignKeys": {},
5114 + "compositePrimaryKeys": {},
5115 + "uniqueConstraints": {
5116 + "indices_ticker_unique": {
5117 + "name": "indices_ticker_unique",
5118 + "nullsNotDistinct": false,
5119 + "columns": [
5120 + "ticker"
5121 + ]
5122 + }
5123 + },
5124 + "policies": {},
5125 + "checkConstraints": {},
5126 + "isRLSEnabled": false
5127 + },
5128 + "public.price_snapshots": {
5129 + "name": "price_snapshots",
5130 + "schema": "",
5131 + "columns": {
5132 + "asset_id": {
5133 + "name": "asset_id",
5134 + "type": "text",
5135 + "primaryKey": false,
5136 + "notNull": true
5137 + },
5138 + "variant_id": {
5139 + "name": "variant_id",
5140 + "type": "text",
5141 + "primaryKey": false,
5142 + "notNull": true,
5143 + "default": "''"
5144 + },
5145 + "date": {
5146 + "name": "date",
5147 + "type": "date",
5148 + "primaryKey": false,
5149 + "notNull": true
5150 + },
5151 + "riv_usd": {
5152 + "name": "riv_usd",
5153 + "type": "numeric(18, 4)",
5154 + "primaryKey": false,
5155 + "notNull": false
5156 + },
5157 + "latest_sale_usd": {
5158 + "name": "latest_sale_usd",
5159 + "type": "numeric(18, 4)",
5160 + "primaryKey": false,
5161 + "notNull": false
5162 + },
5163 + "median_usd": {
5164 + "name": "median_usd",
5165 + "type": "numeric(18, 4)",
5166 + "primaryKey": false,
5167 + "notNull": false
5168 + },
5169 + "sales_count": {
5170 + "name": "sales_count",
5171 + "type": "integer",
5172 + "primaryKey": false,
5173 + "notNull": true,
5174 + "default": 0
5175 + },
5176 + "volume_usd": {
5177 + "name": "volume_usd",
5178 + "type": "numeric(18, 4)",
5179 + "primaryKey": false,
5180 + "notNull": false
5181 + },
5182 + "listings_count": {
5183 + "name": "listings_count",
5184 + "type": "integer",
5185 + "primaryKey": false,
5186 + "notNull": true,
5187 + "default": 0
5188 + },
5189 + "min_ask_usd": {
5190 + "name": "min_ask_usd",
5191 + "type": "numeric(18, 4)",
5192 + "primaryKey": false,
5193 + "notNull": false
5194 + },
5195 + "observation_usd": {
5196 + "name": "observation_usd",
5197 + "type": "numeric(18, 4)",
5198 + "primaryKey": false,
5199 + "notNull": false
5200 + }
5201 + },
5202 + "indexes": {
5203 + "price_snapshots_date_idx": {
5204 + "name": "price_snapshots_date_idx",
5205 + "columns": [
5206 + {
5207 + "expression": "date",
5208 + "isExpression": false,
5209 + "asc": true,
5210 + "nulls": "last"
5211 + }
5212 + ],
5213 + "isUnique": false,
5214 + "concurrently": false,
5215 + "method": "btree",
5216 + "with": {}
5217 + }
5218 + },
5219 + "foreignKeys": {},
5220 + "compositePrimaryKeys": {
5221 + "price_snapshots_asset_id_variant_id_date_pk": {
5222 + "name": "price_snapshots_asset_id_variant_id_date_pk",
5223 + "columns": [
5224 + "asset_id",
5225 + "variant_id",
5226 + "date"
5227 + ]
5228 + }
5229 + },
5230 + "uniqueConstraints": {},
5231 + "policies": {},
5232 + "checkConstraints": {},
5233 + "isRLSEnabled": false
5234 + },
5235 + "public.radar_findings": {
5236 + "name": "radar_findings",
5237 + "schema": "",
5238 + "columns": {
5239 + "id": {
5240 + "name": "id",
5241 + "type": "text",
5242 + "primaryKey": true,
5243 + "notNull": true
5244 + },
5245 + "asset_id": {
5246 + "name": "asset_id",
5247 + "type": "text",
5248 + "primaryKey": false,
5249 + "notNull": true
5250 + },
5251 + "kind": {
5252 + "name": "kind",
5253 + "type": "text",
5254 + "primaryKey": false,
5255 + "notNull": true
5256 + },
5257 + "score": {
5258 + "name": "score",
5259 + "type": "real",
5260 + "primaryKey": false,
5261 + "notNull": true
5262 + },
5263 + "evidence": {
5264 + "name": "evidence",
5265 + "type": "jsonb",
5266 + "primaryKey": false,
5267 + "notNull": true,
5268 + "default": "'{}'::jsonb"
5269 + },
5270 + "entity_type": {
5271 + "name": "entity_type",
5272 + "type": "text",
5273 + "primaryKey": false,
5274 + "notNull": false
5275 + },
5276 + "entity_id": {
5277 + "name": "entity_id",
5278 + "type": "text",
5279 + "primaryKey": false,
5280 + "notNull": false
5281 + },
5282 + "detected_at": {
5283 + "name": "detected_at",
5284 + "type": "timestamp with time zone",
5285 + "primaryKey": false,
5286 + "notNull": true
5287 + },
5288 + "expires_at": {
5289 + "name": "expires_at",
5290 + "type": "timestamp with time zone",
5291 + "primaryKey": false,
5292 + "notNull": false
5293 + }
5294 + },
5295 + "indexes": {
5296 + "radar_kind_idx": {
5297 + "name": "radar_kind_idx",
5298 + "columns": [
5299 + {
5300 + "expression": "kind",
5301 + "isExpression": false,
5302 + "asc": true,
5303 + "nulls": "last"
5304 + },
5305 + {
5306 + "expression": "detected_at",
5307 + "isExpression": false,
5308 + "asc": true,
5309 + "nulls": "last"
5310 + }
5311 + ],
5312 + "isUnique": false,
5313 + "concurrently": false,
5314 + "method": "btree",
5315 + "with": {}
5316 + },
5317 + "radar_entity_uq": {
5318 + "name": "radar_entity_uq",
5319 + "columns": [
5320 + {
5321 + "expression": "kind",
5322 + "isExpression": false,
5323 + "asc": true,
5324 + "nulls": "last"
5325 + },
5326 + {
5327 + "expression": "entity_type",
5328 + "isExpression": false,
5329 + "asc": true,
5330 + "nulls": "last"
5331 + },
5332 + {
5333 + "expression": "entity_id",
5334 + "isExpression": false,
5335 + "asc": true,
5336 + "nulls": "last"
5337 + }
5338 + ],
5339 + "isUnique": true,
5340 + "concurrently": false,
5341 + "method": "btree",
5342 + "with": {}
5343 + }
5344 + },
5345 + "foreignKeys": {},
5346 + "compositePrimaryKeys": {},
5347 + "uniqueConstraints": {},
5348 + "policies": {},
5349 + "checkConstraints": {},
5350 + "isRLSEnabled": false
5351 + },
5352 + "public.valuations": {
5353 + "name": "valuations",
5354 + "schema": "",
5355 + "columns": {
5356 + "id": {
5357 + "name": "id",
5358 + "type": "text",
5359 + "primaryKey": true,
5360 + "notNull": true
5361 + },
5362 + "asset_id": {
5363 + "name": "asset_id",
5364 + "type": "text",
5365 + "primaryKey": false,
5366 + "notNull": true
5367 + },
5368 + "variant_id": {
5369 + "name": "variant_id",
5370 + "type": "text",
5371 + "primaryKey": false,
5372 + "notNull": false
5373 + },
5374 + "computed_at": {
5375 + "name": "computed_at",
5376 + "type": "timestamp with time zone",
5377 + "primaryKey": false,
5378 + "notNull": true
5379 + },
5380 + "riv_usd": {
5381 + "name": "riv_usd",
5382 + "type": "numeric(18, 4)",
5383 + "primaryKey": false,
5384 + "notNull": false
5385 + },
5386 + "low_usd": {
5387 + "name": "low_usd",
5388 + "type": "numeric(18, 4)",
5389 + "primaryKey": false,
5390 + "notNull": false
5391 + },
5392 + "high_usd": {
5393 + "name": "high_usd",
5394 + "type": "numeric(18, 4)",
5395 + "primaryKey": false,
5396 + "notNull": false
5397 + },
5398 + "confidence": {
5399 + "name": "confidence",
5400 + "type": "numeric(8, 6)",
5401 + "primaryKey": false,
5402 + "notNull": true,
5403 + "default": 0
5404 + },
5405 + "confidence_label": {
5406 + "name": "confidence_label",
5407 + "type": "text",
5408 + "primaryKey": false,
5409 + "notNull": true,
5410 + "default": "'insufficient'"
5411 + },
5412 + "sample_size": {
5413 + "name": "sample_size",
5414 + "type": "integer",
5415 + "primaryKey": false,
5416 + "notNull": true,
5417 + "default": 0
5418 + },
5419 + "window_days": {
5420 + "name": "window_days",
5421 + "type": "integer",
5422 + "primaryKey": false,
5423 + "notNull": true,
5424 + "default": 365
5425 + },
5426 + "methods": {
5427 + "name": "methods",
5428 + "type": "jsonb",
5429 + "primaryKey": false,
5430 + "notNull": true,
5431 + "default": "'{}'::jsonb"
5432 + },
5433 + "sales_used": {
5434 + "name": "sales_used",
5435 + "type": "text[]",
5436 + "primaryKey": false,
5437 + "notNull": true,
5438 + "default": "'{}'::text[]"
5439 + },
5440 + "observations_used": {
5441 + "name": "observations_used",
5442 + "type": "integer",
5443 + "primaryKey": false,
5444 + "notNull": true,
5445 + "default": 0
5446 + },
5447 + "method": {
5448 + "name": "method",
5449 + "type": "text",
5450 + "primaryKey": false,
5451 + "notNull": true,
5452 + "default": "'ensemble_v1'"
5453 + },
5454 + "notes": {
5455 + "name": "notes",
5456 + "type": "text[]",
5457 + "primaryKey": false,
5458 + "notNull": true,
5459 + "default": "'{}'::text[]"
5460 + }
5461 + },
5462 + "indexes": {
5463 + "valuations_asset_idx": {
5464 + "name": "valuations_asset_idx",
5465 + "columns": [
5466 + {
5467 + "expression": "asset_id",
5468 + "isExpression": false,
5469 + "asc": true,
5470 + "nulls": "last"
5471 + },
5472 + {
5473 + "expression": "computed_at",
5474 + "isExpression": false,
5475 + "asc": true,
5476 + "nulls": "last"
5477 + }
5478 + ],
5479 + "isUnique": false,
5480 + "concurrently": false,
5481 + "method": "btree",
5482 + "with": {}
5483 + },
5484 + "valuations_variant_idx": {
5485 + "name": "valuations_variant_idx",
5486 + "columns": [
5487 + {
5488 + "expression": "variant_id",
5489 + "isExpression": false,
5490 + "asc": true,
5491 + "nulls": "last"
5492 + },
5493 + {
5494 + "expression": "computed_at",
5495 + "isExpression": false,
5496 + "asc": true,
5497 + "nulls": "last"
5498 + }
5499 + ],
5500 + "isUnique": false,
5501 + "concurrently": false,
5502 + "method": "btree",
5503 + "with": {}
5504 + }
5505 + },
5506 + "foreignKeys": {},
5507 + "compositePrimaryKeys": {},
5508 + "uniqueConstraints": {},
5509 + "policies": {},
5510 + "checkConstraints": {},
5511 + "isRLSEnabled": false
5512 + },
5513 + "public.alert_events": {
5514 + "name": "alert_events",
5515 + "schema": "",
5516 + "columns": {
5517 + "id": {
5518 + "name": "id",
5519 + "type": "text",
5520 + "primaryKey": true,
5521 + "notNull": true
5522 + },
5523 + "alert_id": {
5524 + "name": "alert_id",
5525 + "type": "text",
5526 + "primaryKey": false,
5527 + "notNull": true
5528 + },
5529 + "user_id": {
5530 + "name": "user_id",
5531 + "type": "text",
5532 + "primaryKey": false,
5533 + "notNull": true
5534 + },
5535 + "message": {
5536 + "name": "message",
5537 + "type": "text",
5538 + "primaryKey": false,
5539 + "notNull": true
5540 + },
5541 + "payload": {
5542 + "name": "payload",
5543 + "type": "jsonb",
5544 + "primaryKey": false,
5545 + "notNull": true,
5546 + "default": "'{}'::jsonb"
5547 + },
5548 + "read_at": {
5549 + "name": "read_at",
5550 + "type": "timestamp with time zone",
5551 + "primaryKey": false,
5552 + "notNull": false
5553 + },
5554 + "created_at": {
5555 + "name": "created_at",
5556 + "type": "timestamp with time zone",
5557 + "primaryKey": false,
5558 + "notNull": true,
5559 + "default": "now()"
5560 + }
5561 + },
5562 + "indexes": {
5563 + "alert_events_user_idx": {
5564 + "name": "alert_events_user_idx",
5565 + "columns": [
5566 + {
5567 + "expression": "user_id",
5568 + "isExpression": false,
5569 + "asc": true,
5570 + "nulls": "last"
5571 + },
5572 + {
5573 + "expression": "created_at",
5574 + "isExpression": false,
5575 + "asc": true,
5576 + "nulls": "last"
5577 + }
5578 + ],
5579 + "isUnique": false,
5580 + "concurrently": false,
5581 + "method": "btree",
5582 + "with": {}
5583 + }
5584 + },
5585 + "foreignKeys": {},
5586 + "compositePrimaryKeys": {},
5587 + "uniqueConstraints": {},
5588 + "policies": {},
5589 + "checkConstraints": {},
5590 + "isRLSEnabled": false
5591 + },
5592 + "public.alerts": {
5593 + "name": "alerts",
5594 + "schema": "",
5595 + "columns": {
5596 + "id": {
5597 + "name": "id",
5598 + "type": "text",
5599 + "primaryKey": true,
5600 + "notNull": true
5601 + },
5602 + "user_id": {
5603 + "name": "user_id",
5604 + "type": "text",
5605 + "primaryKey": false,
5606 + "notNull": true
5607 + },
5608 + "alert_type": {
5609 + "name": "alert_type",
5610 + "type": "text",
5611 + "primaryKey": false,
5612 + "notNull": true
5613 + },
5614 + "target_type": {
5615 + "name": "target_type",
5616 + "type": "text",
5617 + "primaryKey": false,
5618 + "notNull": true
5619 + },
5620 + "target_id": {
5621 + "name": "target_id",
5622 + "type": "text",
5623 + "primaryKey": false,
5624 + "notNull": true
5625 + },
5626 + "threshold": {
5627 + "name": "threshold",
5628 + "type": "numeric(18, 4)",
5629 + "primaryKey": false,
5630 + "notNull": false
5631 + },
5632 + "currency": {
5633 + "name": "currency",
5634 + "type": "text",
5635 + "primaryKey": false,
5636 + "notNull": false
5637 + },
5638 + "params": {
5639 + "name": "params",
5640 + "type": "jsonb",
5641 + "primaryKey": false,
5642 + "notNull": true,
5643 + "default": "'{}'::jsonb"
5644 + },
5645 + "channel": {
5646 + "name": "channel",
5647 + "type": "text",
5648 + "primaryKey": false,
5649 + "notNull": true,
5650 + "default": "'inapp'"
5651 + },
5652 + "active": {
5653 + "name": "active",
5654 + "type": "boolean",
5655 + "primaryKey": false,
5656 + "notNull": true,
5657 + "default": true
5658 + },
5659 + "name": {
5660 + "name": "name",
5661 + "type": "text",
5662 + "primaryKey": false,
5663 + "notNull": false
5664 + },
5665 + "cooldown_minutes": {
5666 + "name": "cooldown_minutes",
5667 + "type": "integer",
5668 + "primaryKey": false,
5669 + "notNull": true,
5670 + "default": 1440
5671 + },
5672 + "last_triggered_at": {
5673 + "name": "last_triggered_at",
5674 + "type": "timestamp with time zone",
5675 + "primaryKey": false,
5676 + "notNull": false
5677 + },
5678 + "trigger_count": {
5679 + "name": "trigger_count",
5680 + "type": "integer",
5681 + "primaryKey": false,
5682 + "notNull": true,
5683 + "default": 0
5684 + },
5685 + "created_at": {
5686 + "name": "created_at",
5687 + "type": "timestamp with time zone",
5688 + "primaryKey": false,
5689 + "notNull": true,
5690 + "default": "now()"
5691 + }
5692 + },
5693 + "indexes": {
5694 + "alerts_user_idx": {
5695 + "name": "alerts_user_idx",
5696 + "columns": [
5697 + {
5698 + "expression": "user_id",
5699 + "isExpression": false,
5700 + "asc": true,
5701 + "nulls": "last"
5702 + }
5703 + ],
5704 + "isUnique": false,
5705 + "concurrently": false,
5706 + "method": "btree",
5707 + "with": {}
5708 + },
5709 + "alerts_target_idx": {
5710 + "name": "alerts_target_idx",
5711 + "columns": [
5712 + {
5713 + "expression": "target_type",
5714 + "isExpression": false,
5715 + "asc": true,
5716 + "nulls": "last"
5717 + },
5718 + {
5719 + "expression": "target_id",
5720 + "isExpression": false,
5721 + "asc": true,
5722 + "nulls": "last"
5723 + },
5724 + {
5725 + "expression": "active",
5726 + "isExpression": false,
5727 + "asc": true,
5728 + "nulls": "last"
5729 + }
5730 + ],
5731 + "isUnique": false,
5732 + "concurrently": false,
5733 + "method": "btree",
5734 + "with": {}
5735 + }
5736 + },
5737 + "foreignKeys": {},
5738 + "compositePrimaryKeys": {},
5739 + "uniqueConstraints": {},
5740 + "policies": {},
5741 + "checkConstraints": {},
5742 + "isRLSEnabled": false
5743 + },
5744 + "public.api_keys": {
5745 + "name": "api_keys",
5746 + "schema": "",
5747 + "columns": {
5748 + "id": {
5749 + "name": "id",
5750 + "type": "text",
5751 + "primaryKey": true,
5752 + "notNull": true
5753 + },
5754 + "user_id": {
5755 + "name": "user_id",
5756 + "type": "text",
5757 + "primaryKey": false,
5758 + "notNull": false
5759 + },
5760 + "name": {
5761 + "name": "name",
5762 + "type": "text",
5763 + "primaryKey": false,
5764 + "notNull": true
5765 + },
5766 + "prefix": {
5767 + "name": "prefix",
5768 + "type": "text",
5769 + "primaryKey": false,
5770 + "notNull": true
5771 + },
5772 + "key_hash": {
5773 + "name": "key_hash",
5774 + "type": "text",
5775 + "primaryKey": false,
5776 + "notNull": true
5777 + },
5778 + "tier": {
5779 + "name": "tier",
5780 + "type": "text",
5781 + "primaryKey": false,
5782 + "notNull": true,
5783 + "default": "'free'"
5784 + },
5785 + "rate_limit_per_minute": {
5786 + "name": "rate_limit_per_minute",
5787 + "type": "integer",
5788 + "primaryKey": false,
5789 + "notNull": true,
5790 + "default": 60
5791 + },
5792 + "daily_quota": {
5793 + "name": "daily_quota",
5794 + "type": "integer",
5795 + "primaryKey": false,
5796 + "notNull": true,
5797 + "default": 1000
5798 + },
5799 + "created_at": {
5800 + "name": "created_at",
5801 + "type": "timestamp with time zone",
5802 + "primaryKey": false,
5803 + "notNull": true,
5804 + "default": "now()"
5805 + },
5806 + "last_used_at": {
5807 + "name": "last_used_at",
5808 + "type": "timestamp with time zone",
5809 + "primaryKey": false,
5810 + "notNull": false
5811 + },
5812 + "revoked_at": {
5813 + "name": "revoked_at",
5814 + "type": "timestamp with time zone",
5815 + "primaryKey": false,
5816 + "notNull": false
5817 + }
5818 + },
5819 + "indexes": {
5820 + "api_keys_user_idx": {
5821 + "name": "api_keys_user_idx",
5822 + "columns": [
5823 + {
5824 + "expression": "user_id",
5825 + "isExpression": false,
5826 + "asc": true,
5827 + "nulls": "last"
5828 + }
5829 + ],
5830 + "isUnique": false,
5831 + "concurrently": false,
5832 + "method": "btree",
5833 + "with": {}
5834 + }
5835 + },
5836 + "foreignKeys": {},
5837 + "compositePrimaryKeys": {},
5838 + "uniqueConstraints": {
5839 + "api_keys_key_hash_unique": {
5840 + "name": "api_keys_key_hash_unique",
5841 + "nullsNotDistinct": false,
5842 + "columns": [
5843 + "key_hash"
5844 + ]
5845 + }
5846 + },
5847 + "policies": {},
5848 + "checkConstraints": {},
5849 + "isRLSEnabled": false
5850 + },
5851 + "public.api_usage": {
5852 + "name": "api_usage",
5853 + "schema": "",
5854 + "columns": {
5855 + "key_id": {
5856 + "name": "key_id",
5857 + "type": "text",
5858 + "primaryKey": false,
5859 + "notNull": true
5860 + },
5861 + "date": {
5862 + "name": "date",
5863 + "type": "date",
5864 + "primaryKey": false,
5865 + "notNull": true
5866 + },
5867 + "endpoint": {
5868 + "name": "endpoint",
5869 + "type": "text",
5870 + "primaryKey": false,
5871 + "notNull": true
5872 + },
5873 + "count": {
5874 + "name": "count",
5875 + "type": "integer",
5876 + "primaryKey": false,
5877 + "notNull": true,
5878 + "default": 0
5879 + },
5880 + "latency_ms_avg": {
5881 + "name": "latency_ms_avg",
5882 + "type": "real",
5883 + "primaryKey": false,
5884 + "notNull": false
5885 + }
5886 + },
5887 + "indexes": {},
5888 + "foreignKeys": {},
5889 + "compositePrimaryKeys": {
5890 + "api_usage_key_id_date_endpoint_pk": {
5891 + "name": "api_usage_key_id_date_endpoint_pk",
5892 + "columns": [
5893 + "key_id",
5894 + "date",
5895 + "endpoint"
5896 + ]
5897 + }
5898 + },
5899 + "uniqueConstraints": {},
5900 + "policies": {},
5901 + "checkConstraints": {},
5902 + "isRLSEnabled": false
5903 + },
5904 + "public.asset_views": {
5905 + "name": "asset_views",
5906 + "schema": "",
5907 + "columns": {
5908 + "asset_id": {
5909 + "name": "asset_id",
5910 + "type": "text",
5911 + "primaryKey": false,
5912 + "notNull": true
5913 + },
5914 + "date": {
5915 + "name": "date",
5916 + "type": "date",
5917 + "primaryKey": false,
5918 + "notNull": true
5919 + },
5920 + "views": {
5921 + "name": "views",
5922 + "type": "integer",
5923 + "primaryKey": false,
5924 + "notNull": true,
5925 + "default": 0
5926 + }
5927 + },
5928 + "indexes": {},
5929 + "foreignKeys": {},
5930 + "compositePrimaryKeys": {
5931 + "asset_views_asset_id_date_pk": {
5932 + "name": "asset_views_asset_id_date_pk",
5933 + "columns": [
5934 + "asset_id",
5935 + "date"
5936 + ]
5937 + }
5938 + },
5939 + "uniqueConstraints": {},
5940 + "policies": {},
5941 + "checkConstraints": {},
5942 + "isRLSEnabled": false
5943 + },
5944 + "public.collection_items": {
5945 + "name": "collection_items",
5946 + "schema": "",
5947 + "columns": {
5948 + "id": {
5949 + "name": "id",
5950 + "type": "text",
5951 + "primaryKey": true,
5952 + "notNull": true
5953 + },
5954 + "collection_id": {
5955 + "name": "collection_id",
5956 + "type": "text",
5957 + "primaryKey": false,
5958 + "notNull": true
5959 + },
5960 + "asset_id": {
5961 + "name": "asset_id",
5962 + "type": "text",
5963 + "primaryKey": false,
5964 + "notNull": true
5965 + },
5966 + "variant_id": {
5967 + "name": "variant_id",
5968 + "type": "text",
5969 + "primaryKey": false,
5970 + "notNull": false
5971 + },
5972 + "quantity": {
5973 + "name": "quantity",
5974 + "type": "integer",
5975 + "primaryKey": false,
5976 + "notNull": true,
5977 + "default": 1
5978 + },
5979 + "acquired_at": {
5980 + "name": "acquired_at",
5981 + "type": "date",
5982 + "primaryKey": false,
5983 + "notNull": false
5984 + },
5985 + "purchase_price": {
5986 + "name": "purchase_price",
5987 + "type": "numeric(18, 4)",
5988 + "primaryKey": false,
5989 + "notNull": false
5990 + },
5991 + "purchase_currency": {
5992 + "name": "purchase_currency",
5993 + "type": "text",
5994 + "primaryKey": false,
5995 + "notNull": false
5996 + },
5997 + "purchase_price_usd": {
5998 + "name": "purchase_price_usd",
5999 + "type": "numeric(18, 4)",
6000 + "primaryKey": false,
6001 + "notNull": false
6002 + },
6003 + "source": {
6004 + "name": "source",
6005 + "type": "text",
6006 + "primaryKey": false,
6007 + "notNull": false
6008 + },
6009 + "grader": {
6010 + "name": "grader",
6011 + "type": "text",
6012 + "primaryKey": false,
6013 + "notNull": false
6014 + },
6015 + "grade": {
6016 + "name": "grade",
6017 + "type": "text",
6018 + "primaryKey": false,
6019 + "notNull": false
6020 + },
6021 + "certification_number": {
6022 + "name": "certification_number",
6023 + "type": "text",
6024 + "primaryKey": false,
6025 + "notNull": false
6026 + },
6027 + "serial": {
6028 + "name": "serial",
6029 + "type": "text",
6030 + "primaryKey": false,
6031 + "notNull": false
6032 + },
6033 + "photos": {
6034 + "name": "photos",
6035 + "type": "jsonb",
6036 + "primaryKey": false,
6037 + "notNull": true,
6038 + "default": "'[]'::jsonb"
6039 + },
6040 + "notes": {
6041 + "name": "notes",
6042 + "type": "text",
6043 + "primaryKey": false,
6044 + "notNull": false
6045 + },
6046 + "tags": {
6047 + "name": "tags",
6048 + "type": "jsonb",
6049 + "primaryKey": false,
6050 + "notNull": true,
6051 + "default": "'[]'::jsonb"
6052 + },
6053 + "condition": {
6054 + "name": "condition",
6055 + "type": "text",
6056 + "primaryKey": false,
6057 + "notNull": false
6058 + },
6059 + "manual_value_usd": {
6060 + "name": "manual_value_usd",
6061 + "type": "numeric(18, 4)",
6062 + "primaryKey": false,
6063 + "notNull": false
6064 + },
6065 + "sold_at": {
6066 + "name": "sold_at",
6067 + "type": "date",
6068 + "primaryKey": false,
6069 + "notNull": false
6070 + },
6071 + "sold_price_usd": {
6072 + "name": "sold_price_usd",
6073 + "type": "numeric(18, 4)",
6074 + "primaryKey": false,
6075 + "notNull": false
6076 + },
6077 + "created_at": {
6078 + "name": "created_at",
6079 + "type": "timestamp with time zone",
6080 + "primaryKey": false,
6081 + "notNull": true,
6082 + "default": "now()"
6083 + },
6084 + "updated_at": {
6085 + "name": "updated_at",
6086 + "type": "timestamp with time zone",
6087 + "primaryKey": false,
6088 + "notNull": true,
6089 + "default": "now()"
6090 + }
6091 + },
6092 + "indexes": {
6093 + "collection_items_collection_idx": {
6094 + "name": "collection_items_collection_idx",
6095 + "columns": [
6096 + {
6097 + "expression": "collection_id",
6098 + "isExpression": false,
6099 + "asc": true,
6100 + "nulls": "last"
6101 + }
6102 + ],
6103 + "isUnique": false,
6104 + "concurrently": false,
6105 + "method": "btree",
6106 + "with": {}
6107 + },
6108 + "collection_items_asset_idx": {
6109 + "name": "collection_items_asset_idx",
6110 + "columns": [
6111 + {
6112 + "expression": "asset_id",
6113 + "isExpression": false,
6114 + "asc": true,
6115 + "nulls": "last"
6116 + }
6117 + ],
6118 + "isUnique": false,
6119 + "concurrently": false,
6120 + "method": "btree",
6121 + "with": {}
6122 + }
6123 + },
6124 + "foreignKeys": {},
6125 + "compositePrimaryKeys": {},
6126 + "uniqueConstraints": {},
6127 + "policies": {},
6128 + "checkConstraints": {},
6129 + "isRLSEnabled": false
6130 + },
6131 + "public.collection_snapshots": {
6132 + "name": "collection_snapshots",
6133 + "schema": "",
6134 + "columns": {
6135 + "collection_id": {
6136 + "name": "collection_id",
6137 + "type": "text",
6138 + "primaryKey": false,
6139 + "notNull": true
6140 + },
6141 + "date": {
6142 + "name": "date",
6143 + "type": "date",
6144 + "primaryKey": false,
6145 + "notNull": true
6146 + },
6147 + "value_usd": {
6148 + "name": "value_usd",
6149 + "type": "numeric(18, 4)",
6150 + "primaryKey": false,
6151 + "notNull": true
6152 + },
6153 + "cost_basis_usd": {
6154 + "name": "cost_basis_usd",
6155 + "type": "numeric(18, 4)",
6156 + "primaryKey": false,
6157 + "notNull": true
6158 + },
6159 + "items": {
6160 + "name": "items",
6161 + "type": "integer",
6162 + "primaryKey": false,
6163 + "notNull": true
6164 + }
6165 + },
6166 + "indexes": {},
6167 + "foreignKeys": {},
6168 + "compositePrimaryKeys": {
6169 + "collection_snapshots_collection_id_date_pk": {
6170 + "name": "collection_snapshots_collection_id_date_pk",
6171 + "columns": [
6172 + "collection_id",
6173 + "date"
6174 + ]
6175 + }
6176 + },
6177 + "uniqueConstraints": {},
6178 + "policies": {},
6179 + "checkConstraints": {},
6180 + "isRLSEnabled": false
6181 + },
6182 + "public.collections": {
6183 + "name": "collections",
6184 + "schema": "",
6185 + "columns": {
6186 + "id": {
6187 + "name": "id",
6188 + "type": "text",
6189 + "primaryKey": true,
6190 + "notNull": true
6191 + },
6192 + "user_id": {
6193 + "name": "user_id",
6194 + "type": "text",
6195 + "primaryKey": false,
6196 + "notNull": true
6197 + },
6198 + "name": {
6199 + "name": "name",
6200 + "type": "text",
6201 + "primaryKey": false,
6202 + "notNull": true
6203 + },
6204 + "description": {
6205 + "name": "description",
6206 + "type": "text",
6207 + "primaryKey": false,
6208 + "notNull": false
6209 + },
6210 + "is_public": {
6211 + "name": "is_public",
6212 + "type": "boolean",
6213 + "primaryKey": false,
6214 + "notNull": true,
6215 + "default": false
6216 + },
6217 + "public_slug": {
6218 + "name": "public_slug",
6219 + "type": "text",
6220 + "primaryKey": false,
6221 + "notNull": false
6222 + },
6223 + "kind": {
6224 + "name": "kind",
6225 + "type": "text",
6226 + "primaryKey": false,
6227 + "notNull": true,
6228 + "default": "'collection'"
6229 + },
6230 + "budget_usd": {
6231 + "name": "budget_usd",
6232 + "type": "numeric(18, 4)",
6233 + "primaryKey": false,
6234 + "notNull": false
6235 + },
6236 + "color": {
6237 + "name": "color",
6238 + "type": "text",
6239 + "primaryKey": false,
6240 + "notNull": false
6241 + },
6242 + "created_at": {
6243 + "name": "created_at",
6244 + "type": "timestamp with time zone",
6245 + "primaryKey": false,
6246 + "notNull": true,
6247 + "default": "now()"
6248 + },
6249 + "updated_at": {
6250 + "name": "updated_at",
6251 + "type": "timestamp with time zone",
6252 + "primaryKey": false,
6253 + "notNull": true,
6254 + "default": "now()"
6255 + }
6256 + },
6257 + "indexes": {
6258 + "collections_user_idx": {
6259 + "name": "collections_user_idx",
6260 + "columns": [
6261 + {
6262 + "expression": "user_id",
6263 + "isExpression": false,
6264 + "asc": true,
6265 + "nulls": "last"
6266 + }
6267 + ],
6268 + "isUnique": false,
6269 + "concurrently": false,
6270 + "method": "btree",
6271 + "with": {}
6272 + },
6273 + "collections_public_slug_uq": {
6274 + "name": "collections_public_slug_uq",
6275 + "columns": [
6276 + {
6277 + "expression": "public_slug",
6278 + "isExpression": false,
6279 + "asc": true,
6280 + "nulls": "last"
6281 + }
6282 + ],
6283 + "isUnique": true,
6284 + "concurrently": false,
6285 + "method": "btree",
6286 + "with": {}
6287 + }
6288 + },
6289 + "foreignKeys": {},
6290 + "compositePrimaryKeys": {},
6291 + "uniqueConstraints": {},
6292 + "policies": {},
6293 + "checkConstraints": {},
6294 + "isRLSEnabled": false
6295 + },
6296 + "public.search_log": {
6297 + "name": "search_log",
6298 + "schema": "",
6299 + "columns": {
6300 + "id": {
6301 + "name": "id",
6302 + "type": "text",
6303 + "primaryKey": true,
6304 + "notNull": true
6305 + },
6306 + "query": {
6307 + "name": "query",
6308 + "type": "text",
6309 + "primaryKey": false,
6310 + "notNull": true
6311 + },
6312 + "normalized": {
6313 + "name": "normalized",
6314 + "type": "text",
6315 + "primaryKey": false,
6316 + "notNull": true
6317 + },
6318 + "results": {
6319 + "name": "results",
6320 + "type": "integer",
6321 + "primaryKey": false,
6322 + "notNull": true
6323 + },
6324 + "user_id": {
6325 + "name": "user_id",
6326 + "type": "text",
6327 + "primaryKey": false,
6328 + "notNull": false
6329 + },
6330 + "created_at": {
6331 + "name": "created_at",
6332 + "type": "timestamp with time zone",
6333 + "primaryKey": false,
6334 + "notNull": true,
6335 + "default": "now()"
6336 + }
6337 + },
6338 + "indexes": {
6339 + "search_log_created_idx": {
6340 + "name": "search_log_created_idx",
6341 + "columns": [
6342 + {
6343 + "expression": "created_at",
6344 + "isExpression": false,
6345 + "asc": true,
6346 + "nulls": "last"
6347 + }
6348 + ],
6349 + "isUnique": false,
6350 + "concurrently": false,
6351 + "method": "btree",
6352 + "with": {}
6353 + },
6354 + "search_log_normalized_idx": {
6355 + "name": "search_log_normalized_idx",
6356 + "columns": [
6357 + {
6358 + "expression": "normalized",
6359 + "isExpression": false,
6360 + "asc": true,
6361 + "nulls": "last"
6362 + }
6363 + ],
6364 + "isUnique": false,
6365 + "concurrently": false,
6366 + "method": "btree",
6367 + "with": {}
6368 + }
6369 + },
6370 + "foreignKeys": {},
6371 + "compositePrimaryKeys": {},
6372 + "uniqueConstraints": {},
6373 + "policies": {},
6374 + "checkConstraints": {},
6375 + "isRLSEnabled": false
6376 + },
6377 + "public.sessions": {
6378 + "name": "sessions",
6379 + "schema": "",
6380 + "columns": {
6381 + "id": {
6382 + "name": "id",
6383 + "type": "text",
6384 + "primaryKey": true,
6385 + "notNull": true
6386 + },
6387 + "user_id": {
6388 + "name": "user_id",
6389 + "type": "text",
6390 + "primaryKey": false,
6391 + "notNull": true
6392 + },
6393 + "expires_at": {
6394 + "name": "expires_at",
6395 + "type": "timestamp with time zone",
6396 + "primaryKey": false,
6397 + "notNull": true
6398 + },
6399 + "user_agent": {
6400 + "name": "user_agent",
6401 + "type": "text",
6402 + "primaryKey": false,
6403 + "notNull": false
6404 + },
6405 + "ip": {
6406 + "name": "ip",
6407 + "type": "text",
6408 + "primaryKey": false,
6409 + "notNull": false
6410 + },
6411 + "last_seen_at": {
6412 + "name": "last_seen_at",
6413 + "type": "timestamp with time zone",
6414 + "primaryKey": false,
6415 + "notNull": false
6416 + },
6417 + "revoked_at": {
6418 + "name": "revoked_at",
6419 + "type": "timestamp with time zone",
6420 + "primaryKey": false,
6421 + "notNull": false
6422 + },
6423 + "created_at": {
6424 + "name": "created_at",
6425 + "type": "timestamp with time zone",
6426 + "primaryKey": false,
6427 + "notNull": true,
6428 + "default": "now()"
6429 + }
6430 + },
6431 + "indexes": {
6432 + "sessions_user_idx": {
6433 + "name": "sessions_user_idx",
6434 + "columns": [
6435 + {
6436 + "expression": "user_id",
6437 + "isExpression": false,
6438 + "asc": true,
6439 + "nulls": "last"
6440 + }
6441 + ],
6442 + "isUnique": false,
6443 + "concurrently": false,
6444 + "method": "btree",
6445 + "with": {}
6446 + }
6447 + },
6448 + "foreignKeys": {},
6449 + "compositePrimaryKeys": {},
6450 + "uniqueConstraints": {},
6451 + "policies": {},
6452 + "checkConstraints": {},
6453 + "isRLSEnabled": false
6454 + },
6455 + "public.users": {
6456 + "name": "users",
6457 + "schema": "",
6458 + "columns": {
6459 + "id": {
6460 + "name": "id",
6461 + "type": "text",
6462 + "primaryKey": true,
6463 + "notNull": true
6464 + },
6465 + "email": {
6466 + "name": "email",
6467 + "type": "text",
6468 + "primaryKey": false,
6469 + "notNull": true
6470 + },
6471 + "email_verified_at": {
6472 + "name": "email_verified_at",
6473 + "type": "timestamp with time zone",
6474 + "primaryKey": false,
6475 + "notNull": false
6476 + },
6477 + "password_hash": {
6478 + "name": "password_hash",
6479 + "type": "text",
6480 + "primaryKey": false,
6481 + "notNull": false
6482 + },
6483 + "name": {
6484 + "name": "name",
6485 + "type": "text",
6486 + "primaryKey": false,
6487 + "notNull": false
6488 + },
6489 + "role": {
6490 + "name": "role",
6491 + "type": "text",
6492 + "primaryKey": false,
6493 + "notNull": true,
6494 + "default": "'user'"
6495 + },
6496 + "display_currency": {
6497 + "name": "display_currency",
6498 + "type": "text",
6499 + "primaryKey": false,
6500 + "notNull": true,
6501 + "default": "'USD'"
6502 + },
6503 + "providers": {
6504 + "name": "providers",
6505 + "type": "jsonb",
6506 + "primaryKey": false,
6507 + "notNull": true,
6508 + "default": "'[]'::jsonb"
6509 + },
6510 + "preferences": {
6511 + "name": "preferences",
6512 + "type": "jsonb",
6513 + "primaryKey": false,
6514 + "notNull": true,
6515 + "default": "'{}'::jsonb"
6516 + },
6517 + "handle": {
6518 + "name": "handle",
6519 + "type": "text",
6520 + "primaryKey": false,
6521 + "notNull": false
6522 + },
6523 + "avatar_url": {
6524 + "name": "avatar_url",
6525 + "type": "text",
6526 + "primaryKey": false,
6527 + "notNull": false
6528 + },
6529 + "bio": {
6530 + "name": "bio",
6531 + "type": "text",
6532 + "primaryKey": false,
6533 + "notNull": false
6534 + },
6535 + "mfa_enabled": {
6536 + "name": "mfa_enabled",
6537 + "type": "boolean",
6538 + "primaryKey": false,
6539 + "notNull": true,
6540 + "default": false
6541 + },
6542 + "totp_secret_enc": {
6543 + "name": "totp_secret_enc",
6544 + "type": "text",
6545 + "primaryKey": false,
6546 + "notNull": false
6547 + },
6548 + "always_ask_code": {
6549 + "name": "always_ask_code",
6550 + "type": "boolean",
6551 + "primaryKey": false,
6552 + "notNull": true,
6553 + "default": true
6554 + },
6555 + "password_changed_at": {
6556 + "name": "password_changed_at",
6557 + "type": "timestamp with time zone",
6558 + "primaryKey": false,
6559 + "notNull": false
6560 + },
6561 + "pending_email": {
6562 + "name": "pending_email",
6563 + "type": "text",
6564 + "primaryKey": false,
6565 + "notNull": false
6566 + },
6567 + "deleted_at": {
6568 + "name": "deleted_at",
6569 + "type": "timestamp with time zone",
6570 + "primaryKey": false,
6571 + "notNull": false
6572 + },
6573 + "purge_after": {
6574 + "name": "purge_after",
6575 + "type": "timestamp with time zone",
6576 + "primaryKey": false,
6577 + "notNull": false
6578 + },
6579 + "created_at": {
6580 + "name": "created_at",
6581 + "type": "timestamp with time zone",
6582 + "primaryKey": false,
6583 + "notNull": true,
6584 + "default": "now()"
6585 + },
6586 + "last_login_at": {
6587 + "name": "last_login_at",
6588 + "type": "timestamp with time zone",
6589 + "primaryKey": false,
6590 + "notNull": false
6591 + }
6592 + },
6593 + "indexes": {},
6594 + "foreignKeys": {},
6595 + "compositePrimaryKeys": {},
6596 + "uniqueConstraints": {
6597 + "users_email_unique": {
6598 + "name": "users_email_unique",
6599 + "nullsNotDistinct": false,
6600 + "columns": [
6601 + "email"
6602 + ]
6603 + },
6604 + "users_handle_unique": {
6605 + "name": "users_handle_unique",
6606 + "nullsNotDistinct": false,
6607 + "columns": [
6608 + "handle"
6609 + ]
6610 + }
6611 + },
6612 + "policies": {},
6613 + "checkConstraints": {},
6614 + "isRLSEnabled": false
6615 + },
6616 + "public.watchlist_items": {
6617 + "name": "watchlist_items",
6618 + "schema": "",
6619 + "columns": {
6620 + "id": {
6621 + "name": "id",
6622 + "type": "text",
6623 + "primaryKey": true,
6624 + "notNull": true
6625 + },
6626 + "watchlist_id": {
6627 + "name": "watchlist_id",
6628 + "type": "text",
6629 + "primaryKey": false,
6630 + "notNull": true
6631 + },
6632 + "target_type": {
6633 + "name": "target_type",
6634 + "type": "text",
6635 + "primaryKey": false,
6636 + "notNull": true
6637 + },
6638 + "target_id": {
6639 + "name": "target_id",
6640 + "type": "text",
6641 + "primaryKey": false,
6642 + "notNull": true
6643 + },
6644 + "label": {
6645 + "name": "label",
6646 + "type": "text",
6647 + "primaryKey": false,
6648 + "notNull": false
6649 + },
6650 + "note": {
6651 + "name": "note",
6652 + "type": "text",
6653 + "primaryKey": false,
6654 + "notNull": false
6655 + },
6656 + "target_price_usd": {
6657 + "name": "target_price_usd",
6658 + "type": "numeric(18, 4)",
6659 + "primaryKey": false,
6660 + "notNull": false
6661 + },
6662 + "baseline_usd": {
6663 + "name": "baseline_usd",
6664 + "type": "numeric(18, 4)",
6665 + "primaryKey": false,
6666 + "notNull": false
6667 + },
6668 + "created_at": {
6669 + "name": "created_at",
6670 + "type": "timestamp with time zone",
6671 + "primaryKey": false,
6672 + "notNull": true,
6673 + "default": "now()"
6674 + }
6675 + },
6676 + "indexes": {
6677 + "watchlist_items_uq": {
6678 + "name": "watchlist_items_uq",
6679 + "columns": [
6680 + {
6681 + "expression": "watchlist_id",
6682 + "isExpression": false,
6683 + "asc": true,
6684 + "nulls": "last"
6685 + },
6686 + {
6687 + "expression": "target_type",
6688 + "isExpression": false,
6689 + "asc": true,
6690 + "nulls": "last"
6691 + },
6692 + {
6693 + "expression": "target_id",
6694 + "isExpression": false,
6695 + "asc": true,
6696 + "nulls": "last"
6697 + }
6698 + ],
6699 + "isUnique": true,
6700 + "concurrently": false,
6701 + "method": "btree",
6702 + "with": {}
6703 + }
6704 + },
6705 + "foreignKeys": {},
6706 + "compositePrimaryKeys": {},
6707 + "uniqueConstraints": {},
6708 + "policies": {},
6709 + "checkConstraints": {},
6710 + "isRLSEnabled": false
6711 + },
6712 + "public.watchlists": {
6713 + "name": "watchlists",
6714 + "schema": "",
6715 + "columns": {
6716 + "id": {
6717 + "name": "id",
6718 + "type": "text",
6719 + "primaryKey": true,
6720 + "notNull": true
6721 + },
6722 + "user_id": {
6723 + "name": "user_id",
6724 + "type": "text",
6725 + "primaryKey": false,
6726 + "notNull": true
6727 + },
6728 + "name": {
6729 + "name": "name",
6730 + "type": "text",
6731 + "primaryKey": false,
6732 + "notNull": true,
6733 + "default": "'Watchlist'"
6734 + },
6735 + "created_at": {
6736 + "name": "created_at",
6737 + "type": "timestamp with time zone",
6738 + "primaryKey": false,
6739 + "notNull": true,
6740 + "default": "now()"
6741 + }
6742 + },
6743 + "indexes": {
6744 + "watchlists_user_idx": {
6745 + "name": "watchlists_user_idx",
6746 + "columns": [
6747 + {
6748 + "expression": "user_id",
6749 + "isExpression": false,
6750 + "asc": true,
6751 + "nulls": "last"
6752 + }
6753 + ],
6754 + "isUnique": false,
6755 + "concurrently": false,
6756 + "method": "btree",
6757 + "with": {}
6758 + }
6759 + },
6760 + "foreignKeys": {},
6761 + "compositePrimaryKeys": {},
6762 + "uniqueConstraints": {},
6763 + "policies": {},
6764 + "checkConstraints": {},
6765 + "isRLSEnabled": false
6766 + },
6767 + "public.ai_quotas": {
6768 + "name": "ai_quotas",
6769 + "schema": "",
6770 + "columns": {
6771 + "key": {
6772 + "name": "key",
6773 + "type": "text",
6774 + "primaryKey": false,
6775 + "notNull": true
6776 + },
6777 + "feature": {
6778 + "name": "feature",
6779 + "type": "text",
6780 + "primaryKey": false,
6781 + "notNull": true
6782 + },
6783 + "date": {
6784 + "name": "date",
6785 + "type": "text",
6786 + "primaryKey": false,
6787 + "notNull": true
6788 + },
6789 + "count": {
6790 + "name": "count",
6791 + "type": "integer",
6792 + "primaryKey": false,
6793 + "notNull": true,
6794 + "default": 0
6795 + }
6796 + },
6797 + "indexes": {
6798 + "ai_quotas_uq": {
6799 + "name": "ai_quotas_uq",
6800 + "columns": [
6801 + {
6802 + "expression": "key",
6803 + "isExpression": false,
6804 + "asc": true,
6805 + "nulls": "last"
6806 + },
6807 + {
6808 + "expression": "feature",
6809 + "isExpression": false,
6810 + "asc": true,
6811 + "nulls": "last"
6812 + },
6813 + {
6814 + "expression": "date",
6815 + "isExpression": false,
6816 + "asc": true,
6817 + "nulls": "last"
6818 + }
6819 + ],
6820 + "isUnique": false,
6821 + "concurrently": false,
6822 + "method": "btree",
6823 + "with": {}
6824 + }
6825 + },
6826 + "foreignKeys": {},
6827 + "compositePrimaryKeys": {},
6828 + "uniqueConstraints": {},
6829 + "policies": {},
6830 + "checkConstraints": {},
6831 + "isRLSEnabled": false
6832 + },
6833 + "public.research_messages": {
6834 + "name": "research_messages",
6835 + "schema": "",
6836 + "columns": {
6837 + "id": {
6838 + "name": "id",
6839 + "type": "text",
6840 + "primaryKey": true,
6841 + "notNull": true
6842 + },
6843 + "session_id": {
6844 + "name": "session_id",
6845 + "type": "text",
6846 + "primaryKey": false,
6847 + "notNull": true
6848 + },
6849 + "role": {
6850 + "name": "role",
6851 + "type": "text",
6852 + "primaryKey": false,
6853 + "notNull": true
6854 + },
6855 + "content": {
6856 + "name": "content",
6857 + "type": "text",
6858 + "primaryKey": false,
6859 + "notNull": true
6860 + },
6861 + "tool_calls": {
6862 + "name": "tool_calls",
6863 + "type": "jsonb",
6864 + "primaryKey": false,
6865 + "notNull": true,
6866 + "default": "'[]'::jsonb"
6867 + },
6868 + "usage": {
6869 + "name": "usage",
6870 + "type": "jsonb",
6871 + "primaryKey": false,
6872 + "notNull": true,
6873 + "default": "'{}'::jsonb"
6874 + },
6875 + "usd_est": {
6876 + "name": "usd_est",
6877 + "type": "real",
6878 + "primaryKey": false,
6879 + "notNull": true,
6880 + "default": 0
6881 + },
6882 + "model": {
6883 + "name": "model",
6884 + "type": "text",
6885 + "primaryKey": false,
6886 + "notNull": false
6887 + },
6888 + "created_at": {
6889 + "name": "created_at",
6890 + "type": "timestamp with time zone",
6891 + "primaryKey": false,
6892 + "notNull": true,
6893 + "default": "now()"
6894 + }
6895 + },
6896 + "indexes": {
6897 + "research_messages_session_idx": {
6898 + "name": "research_messages_session_idx",
6899 + "columns": [
6900 + {
6901 + "expression": "session_id",
6902 + "isExpression": false,
6903 + "asc": true,
6904 + "nulls": "last"
6905 + },
6906 + {
6907 + "expression": "created_at",
6908 + "isExpression": false,
6909 + "asc": true,
6910 + "nulls": "last"
6911 + }
6912 + ],
6913 + "isUnique": false,
6914 + "concurrently": false,
6915 + "method": "btree",
6916 + "with": {}
6917 + }
6918 + },
6919 + "foreignKeys": {},
6920 + "compositePrimaryKeys": {},
6921 + "uniqueConstraints": {},
6922 + "policies": {},
6923 + "checkConstraints": {},
6924 + "isRLSEnabled": false
6925 + },
6926 + "public.research_sessions": {
6927 + "name": "research_sessions",
6928 + "schema": "",
6929 + "columns": {
6930 + "id": {
6931 + "name": "id",
6932 + "type": "text",
6933 + "primaryKey": true,
6934 + "notNull": true
6935 + },
6936 + "user_id": {
6937 + "name": "user_id",
6938 + "type": "text",
6939 + "primaryKey": false,
6940 + "notNull": false
6941 + },
6942 + "anon_id": {
6943 + "name": "anon_id",
6944 + "type": "text",
6945 + "primaryKey": false,
6946 + "notNull": false
6947 + },
6948 + "title": {
6949 + "name": "title",
6950 + "type": "text",
6951 + "primaryKey": false,
6952 + "notNull": false
6953 + },
6954 + "model": {
6955 + "name": "model",
6956 + "type": "text",
6957 + "primaryKey": false,
6958 + "notNull": false
6959 + },
6960 + "message_count": {
6961 + "name": "message_count",
6962 + "type": "integer",
6963 + "primaryKey": false,
6964 + "notNull": true,
6965 + "default": 0
6966 + },
6967 + "usd_est": {
6968 + "name": "usd_est",
6969 + "type": "real",
6970 + "primaryKey": false,
6971 + "notNull": true,
6972 + "default": 0
6973 + },
6974 + "archived": {
6975 + "name": "archived",
6976 + "type": "boolean",
6977 + "primaryKey": false,
6978 + "notNull": true,
6979 + "default": false
6980 + },
6981 + "created_at": {
6982 + "name": "created_at",
6983 + "type": "timestamp with time zone",
6984 + "primaryKey": false,
6985 + "notNull": true,
6986 + "default": "now()"
6987 + },
6988 + "updated_at": {
6989 + "name": "updated_at",
6990 + "type": "timestamp with time zone",
6991 + "primaryKey": false,
6992 + "notNull": true,
6993 + "default": "now()"
6994 + }
6995 + },
6996 + "indexes": {
6997 + "research_sessions_anon_idx": {
6998 + "name": "research_sessions_anon_idx",
6999 + "columns": [
7000 + {
7001 + "expression": "anon_id",
7002 + "isExpression": false,
7003 + "asc": true,
7004 + "nulls": "last"
7005 + },
7006 + {
7007 + "expression": "updated_at",
7008 + "isExpression": false,
7009 + "asc": true,
7010 + "nulls": "last"
7011 + }
7012 + ],
7013 + "isUnique": false,
7014 + "concurrently": false,
7015 + "method": "btree",
7016 + "with": {}
7017 + },
7018 + "research_sessions_user_idx": {
7019 + "name": "research_sessions_user_idx",
7020 + "columns": [
7021 + {
7022 + "expression": "user_id",
7023 + "isExpression": false,
7024 + "asc": true,
7025 + "nulls": "last"
7026 + },
7027 + {
7028 + "expression": "updated_at",
7029 + "isExpression": false,
7030 + "asc": true,
7031 + "nulls": "last"
7032 + }
7033 + ],
7034 + "isUnique": false,
7035 + "concurrently": false,
7036 + "method": "btree",
7037 + "with": {}
7038 + }
7039 + },
7040 + "foreignKeys": {},
7041 + "compositePrimaryKeys": {},
7042 + "uniqueConstraints": {},
7043 + "policies": {},
7044 + "checkConstraints": {},
7045 + "isRLSEnabled": false
7046 + },
7047 + "public.scanner_sessions": {
7048 + "name": "scanner_sessions",
7049 + "schema": "",
7050 + "columns": {
7051 + "id": {
7052 + "name": "id",
7053 + "type": "text",
7054 + "primaryKey": true,
7055 + "notNull": true
7056 + },
7057 + "user_id": {
7058 + "name": "user_id",
7059 + "type": "text",
7060 + "primaryKey": false,
7061 + "notNull": false
7062 + },
7063 + "anon_id": {
7064 + "name": "anon_id",
7065 + "type": "text",
7066 + "primaryKey": false,
7067 + "notNull": false
7068 + },
7069 + "ip_hash": {
7070 + "name": "ip_hash",
7071 + "type": "text",
7072 + "primaryKey": false,
7073 + "notNull": false
7074 + },
7075 + "mode": {
7076 + "name": "mode",
7077 + "type": "text",
7078 + "primaryKey": false,
7079 + "notNull": true
7080 + },
7081 + "input_url": {
7082 + "name": "input_url",
7083 + "type": "text",
7084 + "primaryKey": false,
7085 + "notNull": false
7086 + },
7087 + "input_text": {
7088 + "name": "input_text",
7089 + "type": "text",
7090 + "primaryKey": false,
7091 + "notNull": false
7092 + },
7093 + "image_count": {
7094 + "name": "image_count",
7095 + "type": "integer",
7096 + "primaryKey": false,
7097 + "notNull": true,
7098 + "default": 0
7099 + },
7100 + "thumbnails": {
7101 + "name": "thumbnails",
7102 + "type": "jsonb",
7103 + "primaryKey": false,
7104 + "notNull": true,
7105 + "default": "'[]'::jsonb"
7106 + },
7107 + "guess": {
7108 + "name": "guess",
7109 + "type": "jsonb",
7110 + "primaryKey": false,
7111 + "notNull": true,
7112 + "default": "'{}'::jsonb"
7113 + },
7114 + "guess_confidence": {
7115 + "name": "guess_confidence",
7116 + "type": "real",
7117 + "primaryKey": false,
7118 + "notNull": false
7119 + },
7120 + "candidates": {
7121 + "name": "candidates",
7122 + "type": "jsonb",
7123 + "primaryKey": false,
7124 + "notNull": true,
7125 + "default": "'[]'::jsonb"
7126 + },
7127 + "chosen_asset_id": {
7128 + "name": "chosen_asset_id",
7129 + "type": "text",
7130 + "primaryKey": false,
7131 + "notNull": false
7132 + },
7133 + "listing": {
7134 + "name": "listing",
7135 + "type": "jsonb",
7136 + "primaryKey": false,
7137 + "notNull": true,
7138 + "default": "'{}'::jsonb"
7139 + },
7140 + "model": {
7141 + "name": "model",
7142 + "type": "text",
7143 + "primaryKey": false,
7144 + "notNull": false
7145 + },
7146 + "usd_est": {
7147 + "name": "usd_est",
7148 + "type": "real",
7149 + "primaryKey": false,
7150 + "notNull": true,
7151 + "default": 0
7152 + },
7153 + "duration_ms": {
7154 + "name": "duration_ms",
7155 + "type": "integer",
7156 + "primaryKey": false,
7157 + "notNull": false
7158 + },
7159 + "error": {
7160 + "name": "error",
7161 + "type": "text",
7162 + "primaryKey": false,
7163 + "notNull": false
7164 + },
7165 + "created_at": {
7166 + "name": "created_at",
7167 + "type": "timestamp with time zone",
7168 + "primaryKey": false,
7169 + "notNull": true,
7170 + "default": "now()"
7171 + },
7172 + "chosen_at": {
7173 + "name": "chosen_at",
7174 + "type": "timestamp with time zone",
7175 + "primaryKey": false,
7176 + "notNull": false
7177 + }
7178 + },
7179 + "indexes": {
7180 + "scanner_sessions_created_idx": {
7181 + "name": "scanner_sessions_created_idx",
7182 + "columns": [
7183 + {
7184 + "expression": "created_at",
7185 + "isExpression": false,
7186 + "asc": true,
7187 + "nulls": "last"
7188 + }
7189 + ],
7190 + "isUnique": false,
7191 + "concurrently": false,
7192 + "method": "btree",
7193 + "with": {}
7194 + },
7195 + "scanner_sessions_ip_idx": {
7196 + "name": "scanner_sessions_ip_idx",
7197 + "columns": [
7198 + {
7199 + "expression": "ip_hash",
7200 + "isExpression": false,
7201 + "asc": true,
7202 + "nulls": "last"
7203 + },
7204 + {
7205 + "expression": "created_at",
7206 + "isExpression": false,
7207 + "asc": true,
7208 + "nulls": "last"
7209 + }
7210 + ],
7211 + "isUnique": false,
7212 + "concurrently": false,
7213 + "method": "btree",
7214 + "with": {}
7215 + },
7216 + "scanner_sessions_user_idx": {
7217 + "name": "scanner_sessions_user_idx",
7218 + "columns": [
7219 + {
7220 + "expression": "user_id",
7221 + "isExpression": false,
7222 + "asc": true,
7223 + "nulls": "last"
7224 + }
7225 + ],
7226 + "isUnique": false,
7227 + "concurrently": false,
7228 + "method": "btree",
7229 + "with": {}
7230 + }
7231 + },
7232 + "foreignKeys": {},
7233 + "compositePrimaryKeys": {},
7234 + "uniqueConstraints": {},
7235 + "policies": {},
7236 + "checkConstraints": {},
7237 + "isRLSEnabled": false
7238 + },
7239 + "public.auth_codes": {
7240 + "name": "auth_codes",
7241 + "schema": "",
7242 + "columns": {
7243 + "id": {
7244 + "name": "id",
7245 + "type": "text",
7246 + "primaryKey": true,
7247 + "notNull": true
7248 + },
7249 + "user_id": {
7250 + "name": "user_id",
7251 + "type": "text",
7252 + "primaryKey": false,
7253 + "notNull": false
7254 + },
7255 + "email": {
7256 + "name": "email",
7257 + "type": "text",
7258 + "primaryKey": false,
7259 + "notNull": true
7260 + },
7261 + "purpose": {
7262 + "name": "purpose",
7263 + "type": "text",
7264 + "primaryKey": false,
7265 + "notNull": true
7266 + },
7267 + "code_hash": {
7268 + "name": "code_hash",
7269 + "type": "text",
7270 + "primaryKey": false,
7271 + "notNull": true
7272 + },
7273 + "expires_at": {
7274 + "name": "expires_at",
7275 + "type": "timestamp with time zone",
7276 + "primaryKey": false,
7277 + "notNull": true
7278 + },
7279 + "attempts": {
7280 + "name": "attempts",
7281 + "type": "integer",
7282 + "primaryKey": false,
7283 + "notNull": true,
7284 + "default": 0
7285 + },
7286 + "consumed_at": {
7287 + "name": "consumed_at",
7288 + "type": "timestamp with time zone",
7289 + "primaryKey": false,
7290 + "notNull": false
7291 + },
7292 + "payload": {
7293 + "name": "payload",
7294 + "type": "jsonb",
7295 + "primaryKey": false,
7296 + "notNull": true,
7297 + "default": "'{}'::jsonb"
7298 + },
7299 + "created_at": {
7300 + "name": "created_at",
7301 + "type": "timestamp with time zone",
7302 + "primaryKey": false,
7303 + "notNull": true,
7304 + "default": "now()"
7305 + }
7306 + },
7307 + "indexes": {
7308 + "auth_codes_lookup_idx": {
7309 + "name": "auth_codes_lookup_idx",
7310 + "columns": [
7311 + {
7312 + "expression": "email",
7313 + "isExpression": false,
7314 + "asc": true,
7315 + "nulls": "last"
7316 + },
7317 + {
7318 + "expression": "purpose",
7319 + "isExpression": false,
7320 + "asc": true,
7321 + "nulls": "last"
7322 + },
7323 + {
7324 + "expression": "created_at",
7325 + "isExpression": false,
7326 + "asc": true,
7327 + "nulls": "last"
7328 + }
7329 + ],
7330 + "isUnique": false,
7331 + "concurrently": false,
7332 + "method": "btree",
7333 + "with": {}
7334 + }
7335 + },
7336 + "foreignKeys": {},
7337 + "compositePrimaryKeys": {},
7338 + "uniqueConstraints": {},
7339 + "policies": {},
7340 + "checkConstraints": {},
7341 + "isRLSEnabled": false
7342 + },
7343 + "public.login_events": {
7344 + "name": "login_events",
7345 + "schema": "",
7346 + "columns": {
7347 + "id": {
7348 + "name": "id",
7349 + "type": "text",
7350 + "primaryKey": true,
7351 + "notNull": true
7352 + },
7353 + "user_id": {
7354 + "name": "user_id",
7355 + "type": "text",
7356 + "primaryKey": false,
7357 + "notNull": false
7358 + },
7359 + "email": {
7360 + "name": "email",
7361 + "type": "text",
7362 + "primaryKey": false,
7363 + "notNull": false
7364 + },
7365 + "ip": {
7366 + "name": "ip",
7367 + "type": "text",
7368 + "primaryKey": false,
7369 + "notNull": false
7370 + },
7371 + "user_agent": {
7372 + "name": "user_agent",
7373 + "type": "text",
7374 + "primaryKey": false,
7375 + "notNull": false
7376 + },
7377 + "outcome": {
7378 + "name": "outcome",
7379 + "type": "text",
7380 + "primaryKey": false,
7381 + "notNull": true
7382 + },
7383 + "method": {
7384 + "name": "method",
7385 + "type": "text",
7386 + "primaryKey": false,
7387 + "notNull": false
7388 + },
7389 + "created_at": {
7390 + "name": "created_at",
7391 + "type": "timestamp with time zone",
7392 + "primaryKey": false,
7393 + "notNull": true,
7394 + "default": "now()"
7395 + }
7396 + },
7397 + "indexes": {
7398 + "login_events_user_idx": {
7399 + "name": "login_events_user_idx",
7400 + "columns": [
7401 + {
7402 + "expression": "user_id",
7403 + "isExpression": false,
7404 + "asc": true,
7405 + "nulls": "last"
7406 + },
7407 + {
7408 + "expression": "created_at",
7409 + "isExpression": false,
7410 + "asc": true,
7411 + "nulls": "last"
7412 + }
7413 + ],
7414 + "isUnique": false,
7415 + "concurrently": false,
7416 + "method": "btree",
7417 + "with": {}
7418 + }
7419 + },
7420 + "foreignKeys": {},
7421 + "compositePrimaryKeys": {},
7422 + "uniqueConstraints": {},
7423 + "policies": {},
7424 + "checkConstraints": {},
7425 + "isRLSEnabled": false
7426 + },
7427 + "public.notifications": {
7428 + "name": "notifications",
7429 + "schema": "",
7430 + "columns": {
7431 + "id": {
7432 + "name": "id",
7433 + "type": "text",
7434 + "primaryKey": true,
7435 + "notNull": true
7436 + },
7437 + "user_id": {
7438 + "name": "user_id",
7439 + "type": "text",
7440 + "primaryKey": false,
7441 + "notNull": true
7442 + },
7443 + "kind": {
7444 + "name": "kind",
7445 + "type": "text",
7446 + "primaryKey": false,
7447 + "notNull": true
7448 + },
7449 + "title": {
7450 + "name": "title",
7451 + "type": "text",
7452 + "primaryKey": false,
7453 + "notNull": true
7454 + },
7455 + "body": {
7456 + "name": "body",
7457 + "type": "text",
7458 + "primaryKey": false,
7459 + "notNull": false
7460 + },
7461 + "href": {
7462 + "name": "href",
7463 + "type": "text",
7464 + "primaryKey": false,
7465 + "notNull": false
7466 + },
7467 + "payload": {
7468 + "name": "payload",
7469 + "type": "jsonb",
7470 + "primaryKey": false,
7471 + "notNull": true,
7472 + "default": "'{}'::jsonb"
7473 + },
7474 + "read_at": {
7475 + "name": "read_at",
7476 + "type": "timestamp with time zone",
7477 + "primaryKey": false,
7478 + "notNull": false
7479 + },
7480 + "emailed_at": {
7481 + "name": "emailed_at",
7482 + "type": "timestamp with time zone",
7483 + "primaryKey": false,
7484 + "notNull": false
7485 + },
7486 + "created_at": {
7487 + "name": "created_at",
7488 + "type": "timestamp with time zone",
7489 + "primaryKey": false,
7490 + "notNull": true,
7491 + "default": "now()"
7492 + }
7493 + },
7494 + "indexes": {
7495 + "notifications_user_idx": {
7496 + "name": "notifications_user_idx",
7497 + "columns": [
7498 + {
7499 + "expression": "user_id",
7500 + "isExpression": false,
7501 + "asc": true,
7502 + "nulls": "last"
7503 + },
7504 + {
7505 + "expression": "created_at",
7506 + "isExpression": false,
7507 + "asc": true,
7508 + "nulls": "last"
7509 + }
7510 + ],
7511 + "isUnique": false,
7512 + "concurrently": false,
7513 + "method": "btree",
7514 + "with": {}
7515 + },
7516 + "notifications_unread_idx": {
7517 + "name": "notifications_unread_idx",
7518 + "columns": [
7519 + {
7520 + "expression": "user_id",
7521 + "isExpression": false,
7522 + "asc": true,
7523 + "nulls": "last"
7524 + },
7525 + {
7526 + "expression": "read_at",
7527 + "isExpression": false,
7528 + "asc": true,
7529 + "nulls": "last"
7530 + }
7531 + ],
7532 + "isUnique": false,
7533 + "concurrently": false,
7534 + "method": "btree",
7535 + "with": {}
7536 + }
7537 + },
7538 + "foreignKeys": {},
7539 + "compositePrimaryKeys": {},
7540 + "uniqueConstraints": {},
7541 + "policies": {},
7542 + "checkConstraints": {},
7543 + "isRLSEnabled": false
7544 + },
7545 + "public.price_targets": {
7546 + "name": "price_targets",
7547 + "schema": "",
7548 + "columns": {
7549 + "id": {
7550 + "name": "id",
7551 + "type": "text",
7552 + "primaryKey": true,
7553 + "notNull": true
7554 + },
7555 + "user_id": {
7556 + "name": "user_id",
7557 + "type": "text",
7558 + "primaryKey": false,
7559 + "notNull": true
7560 + },
7561 + "asset_id": {
7562 + "name": "asset_id",
7563 + "type": "text",
7564 + "primaryKey": false,
7565 + "notNull": true
7566 + },
7567 + "variant_id": {
7568 + "name": "variant_id",
7569 + "type": "text",
7570 + "primaryKey": false,
7571 + "notNull": false
7572 + },
7573 + "direction": {
7574 + "name": "direction",
7575 + "type": "text",
7576 + "primaryKey": false,
7577 + "notNull": true,
7578 + "default": "'above'"
7579 + },
7580 + "target_usd": {
7581 + "name": "target_usd",
7582 + "type": "numeric(18, 4)",
7583 + "primaryKey": false,
7584 + "notNull": true
7585 + },
7586 + "baseline_usd": {
7587 + "name": "baseline_usd",
7588 + "type": "numeric(18, 4)",
7589 + "primaryKey": false,
7590 + "notNull": false
7591 + },
7592 + "note": {
7593 + "name": "note",
7594 + "type": "text",
7595 + "primaryKey": false,
7596 + "notNull": false
7597 + },
7598 + "hit_at": {
7599 + "name": "hit_at",
7600 + "type": "timestamp with time zone",
7601 + "primaryKey": false,
7602 + "notNull": false
7603 + },
7604 + "notified_at": {
7605 + "name": "notified_at",
7606 + "type": "timestamp with time zone",
7607 + "primaryKey": false,
7608 + "notNull": false
7609 + },
7610 + "created_at": {
7611 + "name": "created_at",
7612 + "type": "timestamp with time zone",
7613 + "primaryKey": false,
7614 + "notNull": true,
7615 + "default": "now()"
7616 + }
7617 + },
7618 + "indexes": {
7619 + "price_targets_user_idx": {
7620 + "name": "price_targets_user_idx",
7621 + "columns": [
7622 + {
7623 + "expression": "user_id",
7624 + "isExpression": false,
7625 + "asc": true,
7626 + "nulls": "last"
7627 + }
7628 + ],
7629 + "isUnique": false,
7630 + "concurrently": false,
7631 + "method": "btree",
7632 + "with": {}
7633 + },
7634 + "price_targets_asset_idx": {
7635 + "name": "price_targets_asset_idx",
7636 + "columns": [
7637 + {
7638 + "expression": "asset_id",
7639 + "isExpression": false,
7640 + "asc": true,
7641 + "nulls": "last"
7642 + },
7643 + {
7644 + "expression": "hit_at",
7645 + "isExpression": false,
7646 + "asc": true,
7647 + "nulls": "last"
7648 + }
7649 + ],
7650 + "isUnique": false,
7651 + "concurrently": false,
7652 + "method": "btree",
7653 + "with": {}
7654 + }
7655 + },
7656 + "foreignKeys": {},
7657 + "compositePrimaryKeys": {},
7658 + "uniqueConstraints": {},
7659 + "policies": {},
7660 + "checkConstraints": {},
7661 + "isRLSEnabled": false
7662 + },
7663 + "public.rate_limits": {
7664 + "name": "rate_limits",
7665 + "schema": "",
7666 + "columns": {
7667 + "key": {
7668 + "name": "key",
7669 + "type": "text",
7670 + "primaryKey": true,
7671 + "notNull": true
7672 + },
7673 + "count": {
7674 + "name": "count",
7675 + "type": "integer",
7676 + "primaryKey": false,
7677 + "notNull": true,
7678 + "default": 0
7679 + },
7680 + "reset_at": {
7681 + "name": "reset_at",
7682 + "type": "timestamp with time zone",
7683 + "primaryKey": false,
7684 + "notNull": true
7685 + }
7686 + },
7687 + "indexes": {},
7688 + "foreignKeys": {},
7689 + "compositePrimaryKeys": {},
7690 + "uniqueConstraints": {},
7691 + "policies": {},
7692 + "checkConstraints": {},
7693 + "isRLSEnabled": false
7694 + },
7695 + "public.recovery_codes": {
7696 + "name": "recovery_codes",
7697 + "schema": "",
7698 + "columns": {
7699 + "id": {
7700 + "name": "id",
7701 + "type": "text",
7702 + "primaryKey": true,
7703 + "notNull": true
7704 + },
7705 + "user_id": {
7706 + "name": "user_id",
7707 + "type": "text",
7708 + "primaryKey": false,
7709 + "notNull": true
7710 + },
7711 + "code_hash": {
7712 + "name": "code_hash",
7713 + "type": "text",
7714 + "primaryKey": false,
7715 + "notNull": true
7716 + },
7717 + "used_at": {
7718 + "name": "used_at",
7719 + "type": "timestamp with time zone",
7720 + "primaryKey": false,
7721 + "notNull": false
7722 + },
7723 + "created_at": {
7724 + "name": "created_at",
7725 + "type": "timestamp with time zone",
7726 + "primaryKey": false,
7727 + "notNull": true,
7728 + "default": "now()"
7729 + }
7730 + },
7731 + "indexes": {
7732 + "recovery_codes_user_idx": {
7733 + "name": "recovery_codes_user_idx",
7734 + "columns": [
7735 + {
7736 + "expression": "user_id",
7737 + "isExpression": false,
7738 + "asc": true,
7739 + "nulls": "last"
7740 + }
7741 + ],
7742 + "isUnique": false,
7743 + "concurrently": false,
7744 + "method": "btree",
7745 + "with": {}
7746 + }
7747 + },
7748 + "foreignKeys": {},
7749 + "compositePrimaryKeys": {},
7750 + "uniqueConstraints": {},
7751 + "policies": {},
7752 + "checkConstraints": {},
7753 + "isRLSEnabled": false
7754 + },
7755 + "public.saved_searches": {
7756 + "name": "saved_searches",
7757 + "schema": "",
7758 + "columns": {
7759 + "id": {
7760 + "name": "id",
7761 + "type": "text",
7762 + "primaryKey": true,
7763 + "notNull": true
7764 + },
7765 + "user_id": {
7766 + "name": "user_id",
7767 + "type": "text",
7768 + "primaryKey": false,
7769 + "notNull": true
7770 + },
7771 + "name": {
7772 + "name": "name",
7773 + "type": "text",
7774 + "primaryKey": false,
7775 + "notNull": true
7776 + },
7777 + "url": {
7778 + "name": "url",
7779 + "type": "text",
7780 + "primaryKey": false,
7781 + "notNull": true
7782 + },
7783 + "params": {
7784 + "name": "params",
7785 + "type": "jsonb",
7786 + "primaryKey": false,
7787 + "notNull": true,
7788 + "default": "'{}'::jsonb"
7789 + },
7790 + "notify": {
7791 + "name": "notify",
7792 + "type": "boolean",
7793 + "primaryKey": false,
7794 + "notNull": true,
7795 + "default": false
7796 + },
7797 + "last_run_at": {
7798 + "name": "last_run_at",
7799 + "type": "timestamp with time zone",
7800 + "primaryKey": false,
7801 + "notNull": false
7802 + },
7803 + "last_count": {
7804 + "name": "last_count",
7805 + "type": "integer",
7806 + "primaryKey": false,
7807 + "notNull": false
7808 + },
7809 + "created_at": {
7810 + "name": "created_at",
7811 + "type": "timestamp with time zone",
7812 + "primaryKey": false,
7813 + "notNull": true,
7814 + "default": "now()"
7815 + }
7816 + },
7817 + "indexes": {
7818 + "saved_searches_user_idx": {
7819 + "name": "saved_searches_user_idx",
7820 + "columns": [
7821 + {
7822 + "expression": "user_id",
7823 + "isExpression": false,
7824 + "asc": true,
7825 + "nulls": "last"
7826 + }
7827 + ],
7828 + "isUnique": false,
7829 + "concurrently": false,
7830 + "method": "btree",
7831 + "with": {}
7832 + }
7833 + },
7834 + "foreignKeys": {},
7835 + "compositePrimaryKeys": {},
7836 + "uniqueConstraints": {},
7837 + "policies": {},
7838 + "checkConstraints": {},
7839 + "isRLSEnabled": false
7840 + },
7841 + "public.trusted_devices": {
7842 + "name": "trusted_devices",
7843 + "schema": "",
7844 + "columns": {
7845 + "id": {
7846 + "name": "id",
7847 + "type": "text",
7848 + "primaryKey": true,
7849 + "notNull": true
7850 + },
7851 + "user_id": {
7852 + "name": "user_id",
7853 + "type": "text",
7854 + "primaryKey": false,
7855 + "notNull": true
7856 + },
7857 + "token_hash": {
7858 + "name": "token_hash",
7859 + "type": "text",
7860 + "primaryKey": false,
7861 + "notNull": true
7862 + },
7863 + "label": {
7864 + "name": "label",
7865 + "type": "text",
7866 + "primaryKey": false,
7867 + "notNull": false
7868 + },
7869 + "user_agent": {
7870 + "name": "user_agent",
7871 + "type": "text",
7872 + "primaryKey": false,
7873 + "notNull": false
7874 + },
7875 + "ip": {
7876 + "name": "ip",
7877 + "type": "text",
7878 + "primaryKey": false,
7879 + "notNull": false
7880 + },
7881 + "created_at": {
7882 + "name": "created_at",
7883 + "type": "timestamp with time zone",
7884 + "primaryKey": false,
7885 + "notNull": true,
7886 + "default": "now()"
7887 + },
7888 + "last_used_at": {
7889 + "name": "last_used_at",
7890 + "type": "timestamp with time zone",
7891 + "primaryKey": false,
7892 + "notNull": false
7893 + },
7894 + "expires_at": {
7895 + "name": "expires_at",
7896 + "type": "timestamp with time zone",
7897 + "primaryKey": false,
7898 + "notNull": true
7899 + },
7900 + "revoked_at": {
7901 + "name": "revoked_at",
7902 + "type": "timestamp with time zone",
7903 + "primaryKey": false,
7904 + "notNull": false
7905 + }
7906 + },
7907 + "indexes": {
7908 + "trusted_devices_user_idx": {
7909 + "name": "trusted_devices_user_idx",
7910 + "columns": [
7911 + {
7912 + "expression": "user_id",
7913 + "isExpression": false,
7914 + "asc": true,
7915 + "nulls": "last"
7916 + }
7917 + ],
7918 + "isUnique": false,
7919 + "concurrently": false,
7920 + "method": "btree",
7921 + "with": {}
7922 + },
7923 + "trusted_devices_token_uq": {
7924 + "name": "trusted_devices_token_uq",
7925 + "columns": [
7926 + {
7927 + "expression": "token_hash",
7928 + "isExpression": false,
7929 + "asc": true,
7930 + "nulls": "last"
7931 + }
7932 + ],
7933 + "isUnique": true,
7934 + "concurrently": false,
7935 + "method": "btree",
7936 + "with": {}
7937 + }
7938 + },
7939 + "foreignKeys": {},
7940 + "compositePrimaryKeys": {},
7941 + "uniqueConstraints": {},
7942 + "policies": {},
7943 + "checkConstraints": {},
7944 + "isRLSEnabled": false
7945 + },
7946 + "public.uploads": {
7947 + "name": "uploads",
7948 + "schema": "",
7949 + "columns": {
7950 + "id": {
7951 + "name": "id",
7952 + "type": "text",
7953 + "primaryKey": true,
7954 + "notNull": true
7955 + },
7956 + "user_id": {
7957 + "name": "user_id",
7958 + "type": "text",
7959 + "primaryKey": false,
7960 + "notNull": true
7961 + },
7962 + "kind": {
7963 + "name": "kind",
7964 + "type": "text",
7965 + "primaryKey": false,
7966 + "notNull": true
7967 + },
7968 + "path": {
7969 + "name": "path",
7970 + "type": "text",
7971 + "primaryKey": false,
7972 + "notNull": true
7973 + },
7974 + "mime": {
7975 + "name": "mime",
7976 + "type": "text",
7977 + "primaryKey": false,
7978 + "notNull": true
7979 + },
7980 + "bytes": {
7981 + "name": "bytes",
7982 + "type": "integer",
7983 + "primaryKey": false,
7984 + "notNull": true
7985 + },
7986 + "width": {
7987 + "name": "width",
7988 + "type": "integer",
7989 + "primaryKey": false,
7990 + "notNull": false
7991 + },
7992 + "height": {
7993 + "name": "height",
7994 + "type": "integer",
7995 + "primaryKey": false,
7996 + "notNull": false
7997 + },
7998 + "created_at": {
7999 + "name": "created_at",
8000 + "type": "timestamp with time zone",
8001 + "primaryKey": false,
8002 + "notNull": true,
8003 + "default": "now()"
8004 + }
8005 + },
8006 + "indexes": {
8007 + "uploads_user_idx": {
8008 + "name": "uploads_user_idx",
8009 + "columns": [
8010 + {
8011 + "expression": "user_id",
8012 + "isExpression": false,
8013 + "asc": true,
8014 + "nulls": "last"
8015 + }
8016 + ],
8017 + "isUnique": false,
8018 + "concurrently": false,
8019 + "method": "btree",
8020 + "with": {}
8021 + }
8022 + },
8023 + "foreignKeys": {},
8024 + "compositePrimaryKeys": {},
8025 + "uniqueConstraints": {},
8026 + "policies": {},
8027 + "checkConstraints": {},
8028 + "isRLSEnabled": false
8029 + },
8030 + "public.user_badges": {
8031 + "name": "user_badges",
8032 + "schema": "",
8033 + "columns": {
8034 + "user_id": {
8035 + "name": "user_id",
8036 + "type": "text",
8037 + "primaryKey": false,
8038 + "notNull": true
8039 + },
8040 + "badge": {
8041 + "name": "badge",
8042 + "type": "text",
8043 + "primaryKey": false,
8044 + "notNull": true
8045 + },
8046 + "evidence": {
8047 + "name": "evidence",
8048 + "type": "jsonb",
8049 + "primaryKey": false,
8050 + "notNull": true,
8051 + "default": "'{}'::jsonb"
8052 + },
8053 + "created_at": {
8054 + "name": "created_at",
8055 + "type": "timestamp with time zone",
8056 + "primaryKey": false,
8057 + "notNull": true,
8058 + "default": "now()"
8059 + }
8060 + },
8061 + "indexes": {
8062 + "user_badges_uq": {
8063 + "name": "user_badges_uq",
8064 + "columns": [
8065 + {
8066 + "expression": "user_id",
8067 + "isExpression": false,
8068 + "asc": true,
8069 + "nulls": "last"
8070 + },
8071 + {
8072 + "expression": "badge",
8073 + "isExpression": false,
8074 + "asc": true,
8075 + "nulls": "last"
8076 + }
8077 + ],
8078 + "isUnique": true,
8079 + "concurrently": false,
8080 + "method": "btree",
8081 + "with": {}
8082 + }
8083 + },
8084 + "foreignKeys": {},
8085 + "compositePrimaryKeys": {},
8086 + "uniqueConstraints": {},
8087 + "policies": {},
8088 + "checkConstraints": {},
8089 + "isRLSEnabled": false
8090 + }
8091 + },
8092 + "enums": {},
8093 + "schemas": {},
8094 + "sequences": {},
8095 + "roles": {},
8096 + "policies": {},
8097 + "views": {},
8098 + "_meta": {
8099 + "columns": {},
8100 + "schemas": {},
8101 + "tables": {}
8102 + }
8103 +}
\ No newline at end of file
modified packages/database/migrations/meta/_journal.json +7 −0
@@ -8,6 +8,13 @@
8 8 "when": 1788754246505,
9 9 "tag": "0000_clear_unicorn",
10 10 "breakpoints": true
11 + },
12 + {
13 + "idx": 1,
14 + "version": "7",
15 + "when": 1788757658711,
16 + "tag": "0001_living_prima",
17 + "breakpoints": true
11 18 }
12 19 ]
13 20 }
\ No newline at end of file
modified pnpm-lock.yaml +237 −0
@@ -81,6 +81,9 @@ importers:
81 81 '@rareindex/database':
82 82 specifier: workspace:*
83 83 version: link:../../packages/database
84 + '@rareindex/notify':
85 + specifier: workspace:*
86 + version: link:../../packages/notify
84 87 '@rareindex/search':
85 88 specifier: workspace:*
86 89 version: link:../../packages/search
@@ -102,9 +105,15 @@ importers:
102 105 next:
103 106 specifier: 16.3.4
104 107 version: 16.3.4(@babel/core@7.29.7)(@types/node@24.13.3)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
108 + otpauth:
109 + specifier: ^9.5.2
110 + version: 9.5.2
105 111 pg-boss:
106 112 specifier: ^12.30.0
107 113 version: 12.30.0
114 + qrcode:
115 + specifier: ^1.5.4
116 + version: 1.5.4
108 117 react:
109 118 specifier: 19.2.8
110 119 version: 19.2.8
@@ -124,6 +133,9 @@ importers:
124 133 '@types/node':
125 134 specifier: ^24.0.0
126 135 version: 24.13.3
136 + '@types/qrcode':
137 + specifier: ^1.5.6
138 + version: 1.5.6
127 139 '@types/react':
128 140 specifier: ^19
129 141 version: 19.2.18
@@ -274,6 +286,22 @@ importers:
274 286 specifier: ^3.2.0
275 287 version: 3.2.7(@types/node@24.13.3)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.23.13)
276 288
289 + packages/notify:
290 + dependencies:
291 + '@rareindex/shared':
292 + specifier: workspace:*
293 + version: link:../shared
294 + devDependencies:
295 + '@types/node':
296 + specifier: ^24.0.0
297 + version: 24.13.3
298 + typescript:
299 + specifier: ^5.9.3
300 + version: 5.9.3
301 + vitest:
302 + specifier: ^3.2.0
303 + version: 3.2.7(@types/node@24.13.3)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.23.13)
304 +
277 305 packages/search:
278 306 dependencies:
279 307 '@rareindex/database':
@@ -367,6 +395,9 @@ importers:
367 395 '@rareindex/indices':
368 396 specifier: workspace:*
369 397 version: link:../packages/indices
398 + '@rareindex/notify':
399 + specifier: workspace:*
400 + version: link:../packages/notify
370 401 '@rareindex/shared':
371 402 specifier: workspace:*
372 403 version: link:../packages/shared
@@ -1306,6 +1337,10 @@ packages:
1306 1337 cpu: [x64]
1307 1338 os: [win32]
1308 1339
1340 + '@noble/hashes@2.4.0':
1341 + resolution: {integrity: sha512-X5XaVWZIBCT7HHZGm5I7ZQXDwLG+bGXuSrMQAW+7Zvl87h1kmc1ZB1VSRJcpUfoUrGQp4Fkoxm5kZ+Ms+aW+eA==}
1342 + engines: {node: '>= 20.19.0'}
1343 +
1309 1344 '@nodelib/fs.scandir@2.1.5':
1310 1345 resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
1311 1346 engines: {node: '>= 8'}
@@ -1593,6 +1628,9 @@ packages:
1593 1628 '@types/node@24.13.3':
1594 1629 resolution: {integrity: sha512-Dh8vAsV36ig5wa9OX4pXvMc9D3Veibfw2wix0CUwYODLD8nkj9UsLjASr49nPg+2eKzxhBV+v7L8pXvT4e639Q==}
1595 1630
1631 + '@types/qrcode@1.5.6':
1632 + resolution: {integrity: sha512-te7NQcV2BOvdj2b1hCAHzAoMNuj65kNBMz0KBaxM6c3VGBOhU0dURQKOtH8CFNI/dsKkwlv32p26qYQTWoB5bw==}
1633 +
1596 1634 '@types/react-dom@19.2.7':
1597 1635 resolution: {integrity: sha512-I8bPpDLcHBv1qiIiXDCy71Rt8eQDKJP0sMSWJphDdAcdqiJ1sGpZamavoEIRZmYzjia9LuEb2HlYdDpmoENpvQ==}
1598 1636 peerDependencies:
@@ -1840,6 +1878,10 @@ packages:
1840 1878 ajv@8.20.0:
1841 1879 resolution: {integrity: sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==}
1842 1880
1881 + ansi-regex@5.0.1:
1882 + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
1883 + engines: {node: '>=8'}
1884 +
1843 1885 ansi-styles@4.3.0:
1844 1886 resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
1845 1887 engines: {node: '>=8'}
@@ -1973,6 +2015,10 @@ packages:
1973 2015 resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
1974 2016 engines: {node: '>=6'}
1975 2017
2018 + camelcase@5.3.1:
2019 + resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==}
2020 + engines: {node: '>=6'}
2021 +
1976 2022 caniuse-lite@1.0.30001810:
1977 2023 resolution: {integrity: sha512-TITQPUkaz+aVk5GL6NhOdwk1aEaNTSDPsGFWrTuhKGtjTF70jL/Oht2W4c6rXUe5fu7Ie19VIahAXHIIiWWNeg==}
1978 2024
@@ -1998,6 +2044,9 @@ packages:
1998 2044 client-only@0.0.1:
1999 2045 resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==}
2000 2046
2047 + cliui@6.0.0:
2048 + resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==}
2049 +
2001 2050 color-convert@2.0.1:
2002 2051 resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
2003 2052 engines: {node: '>=7.0.0'}
@@ -2065,6 +2114,10 @@ packages:
2065 2114 supports-color:
2066 2115 optional: true
2067 2116
2117 + decamelize@1.2.0:
2118 + resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==}
2119 + engines: {node: '>=0.10.0'}
2120 +
2068 2121 deep-eql@5.0.2:
2069 2122 resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==}
2070 2123 engines: {node: '>=6'}
@@ -2088,6 +2141,9 @@ packages:
2088 2141 resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==}
2089 2142 engines: {node: '>=8'}
2090 2143
2144 + dijkstrajs@1.0.3:
2145 + resolution: {integrity: sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA==}
2146 +
2091 2147 doctrine@2.1.0:
2092 2148 resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==}
2093 2149 engines: {node: '>=0.10.0'}
@@ -2208,6 +2264,9 @@ packages:
2208 2264 electron-to-chromium@1.5.422:
2209 2265 resolution: {integrity: sha512-UvA/32XqrLDdZSn7Jllo1AYNcWji/G0d5M0GTViE7KoGBiMunw3a34Sb2KO4ZZyrSEhqsxFoVhWWJshdyfKqJA==}
2210 2266
2267 + emoji-regex@8.0.0:
2268 + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
2269 +
2211 2270 emoji-regex@9.2.2:
2212 2271 resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==}
2213 2272
@@ -2489,6 +2548,10 @@ packages:
2489 2548 resolution: {integrity: sha512-sJsgZ1sQH2UDuowPuMKg8az7Qc8F0jnj+SKkFWU/+T0xcFlgV5skgXOGUqmQzOdmW6ALA7AhJINWx3qFBkbLHA==}
2490 2549 engines: {node: '>=20'}
2491 2550
2551 + find-up@4.1.0:
2552 + resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==}
2553 + engines: {node: '>=8'}
2554 +
2492 2555 find-up@5.0.0:
2493 2556 resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==}
2494 2557 engines: {node: '>=10'}
@@ -2527,6 +2590,10 @@ packages:
2527 2590 resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==}
2528 2591 engines: {node: '>=6.9.0'}
2529 2592
2593 + get-caller-file@2.0.5:
2594 + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==}
2595 + engines: {node: 6.* || 8.* || >= 10.*}
2596 +
2530 2597 get-intrinsic@1.3.0:
2531 2598 resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==}
2532 2599 engines: {node: '>= 0.4'}
@@ -2687,6 +2754,10 @@ packages:
2687 2754 resolution: {integrity: sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==}
2688 2755 engines: {node: '>= 0.4'}
2689 2756
2757 + is-fullwidth-code-point@3.0.0:
2758 + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==}
2759 + engines: {node: '>=8'}
2760 +
2690 2761 is-generator-function@1.1.2:
2691 2762 resolution: {integrity: sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==}
2692 2763 engines: {node: '>= 0.4'}
@@ -2899,6 +2970,10 @@ packages:
2899 2970 resolution: {integrity: sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==}
2900 2971 engines: {node: '>= 12.0.0'}
2901 2972
2973 + locate-path@5.0.0:
2974 + resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==}
2975 + engines: {node: '>=8'}
2976 +
2902 2977 locate-path@6.0.0:
2903 2978 resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==}
2904 2979 engines: {node: '>=10'}
@@ -3074,18 +3149,33 @@ packages:
3074 3149 resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==}
3075 3150 engines: {node: '>= 0.8.0'}
3076 3151
3152 + otpauth@9.5.2:
3153 + resolution: {integrity: sha512-GQ5emWR/x1tcExT62IBT0UfO95wZzJZyxYOJOGVeQF47SYEN9vmh0vISvDZaNMuFJRG+IaWCKtfm+t9Bfoal6w==}
3154 +
3077 3155 own-keys@1.0.2:
3078 3156 resolution: {integrity: sha512-19YVAg7T+WTrxggPukVq7DjTv6+PJ867TmhCvBsYwmbFCsZd344rq2Ld1p0wo8f8Qrrhgp82c6FJRqdXWtSEhg==}
3079 3157 engines: {node: '>= 0.4'}
3080 3158
3159 + p-limit@2.3.0:
3160 + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==}
3161 + engines: {node: '>=6'}
3162 +
3081 3163 p-limit@3.1.0:
3082 3164 resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==}
3083 3165 engines: {node: '>=10'}
3084 3166
3167 + p-locate@4.1.0:
3168 + resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==}
3169 + engines: {node: '>=8'}
3170 +
3085 3171 p-locate@5.0.0:
3086 3172 resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==}
3087 3173 engines: {node: '>=10'}
3088 3174
3175 + p-try@2.2.0:
3176 + resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==}
3177 + engines: {node: '>=6'}
3178 +
3089 3179 parent-module@1.0.1:
3090 3180 resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==}
3091 3181 engines: {node: '>=6'}
@@ -3177,6 +3267,10 @@ packages:
3177 3267 resolution: {integrity: sha512-8OEwKp5juEvb/MjpIc4hjqfgCNysrS94RIOMXYvpYCdm/jglrKEiAYmiumbmGhCvs+IcInsphYDFwqrjr7398w==}
3178 3268 hasBin: true
3179 3269
3270 + pngjs@5.0.0:
3271 + resolution: {integrity: sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==}
3272 + engines: {node: '>=10.13.0'}
3273 +
3180 3274 possible-typed-array-names@1.1.0:
3181 3275 resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==}
3182 3276 engines: {node: '>= 0.4'}
@@ -3230,6 +3324,11 @@ packages:
3230 3324 resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==}
3231 3325 engines: {node: '>=6'}
3232 3326
3327 + qrcode@1.5.4:
3328 + resolution: {integrity: sha512-1ca71Zgiu6ORjHqFBDpnSMTR2ReToX4l1Au1VFLyVeBTFavzQnv5JxMFr3ukHVKpSrSA2MCk0lNJSykjUfz7Zg==}
3329 + engines: {node: '>=10.13.0'}
3330 + hasBin: true
3331 +
3233 3332 queue-microtask@1.2.3:
3234 3333 resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
3235 3334
@@ -3264,10 +3363,17 @@ packages:
3264 3363 resolution: {integrity: sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==}
3265 3364 engines: {node: '>= 0.4'}
3266 3365
3366 + require-directory@2.1.1:
3367 + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==}
3368 + engines: {node: '>=0.10.0'}
3369 +
3267 3370 require-from-string@2.0.2:
3268 3371 resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==}
3269 3372 engines: {node: '>=0.10.0'}
3270 3373
3374 + require-main-filename@2.0.0:
3375 + resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==}
3376 +
3271 3377 resolve-from@4.0.0:
3272 3378 resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
3273 3379 engines: {node: '>=4'}
@@ -3347,6 +3453,9 @@ packages:
3347 3453 server-only@0.0.1:
3348 3454 resolution: {integrity: sha512-qepMx2JxAa5jjfzxG79yPPq+8BuFToHd1hm7kI+Z4zAq1ftQiP7HcxMhDDItrbtwVeLg/cY2JnKnrcFkmiswNA==}
3349 3455
3456 + set-blocking@2.0.0:
3457 + resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==}
3458 +
3350 3459 set-cookie-parser@2.7.2:
3351 3460 resolution: {integrity: sha512-oeM1lpU/UvhTxw+g3cIfxXHyJRc/uidd3yK1P242gzHds0udQBYzs3y8j4gCCW+ZJ7ad0yctld8RYO+bdurlvw==}
3352 3461
@@ -3432,6 +3541,10 @@ packages:
3432 3541 resolution: {integrity: sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==}
3433 3542 engines: {node: '>= 0.4'}
3434 3543
3544 + string-width@4.2.3:
3545 + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}
3546 + engines: {node: '>=8'}
3547 +
3435 3548 string.prototype.includes@2.0.1:
3436 3549 resolution: {integrity: sha512-o7+c9bW6zpAdJHTtujeePODAhkuicdAryFsfVKwA+wGw89wJ4GTY484WTucM9hLtDEOpOvI+aHnzqnC5lHp4Rg==}
3437 3550 engines: {node: '>= 0.4'}
@@ -3458,6 +3571,10 @@ packages:
3458 3571 string_decoder@1.3.0:
3459 3572 resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==}
3460 3573
3574 + strip-ansi@6.0.1:
3575 + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
3576 + engines: {node: '>=8'}
3577 +
3461 3578 strip-bom@3.0.0:
3462 3579 resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==}
3463 3580 engines: {node: '>=4'}
@@ -3707,6 +3824,9 @@ packages:
3707 3824 resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==}
3708 3825 engines: {node: '>= 0.4'}
3709 3826
3827 + which-module@2.0.1:
3828 + resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==}
3829 +
3710 3830 which-typed-array@1.1.22:
3711 3831 resolution: {integrity: sha512-fvO4ExWMFsqyhG3AiPAObMuY1lxaqgYcxbc49CNdWDDECOJNgQyvsOWVwbZc+qf3rzRtxojBK+CMEv0Ld5CYpw==}
3712 3832 engines: {node: '>= 0.4'}
@@ -3725,13 +3845,28 @@ packages:
3725 3845 resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==}
3726 3846 engines: {node: '>=0.10.0'}
3727 3847
3848 + wrap-ansi@6.2.0:
3849 + resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==}
3850 + engines: {node: '>=8'}
3851 +
3728 3852 xtend@4.0.2:
3729 3853 resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==}
3730 3854 engines: {node: '>=0.4'}
3731 3855
3856 + y18n@4.0.3:
3857 + resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==}
3858 +
3732 3859 yallist@3.1.1:
3733 3860 resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==}
3734 3861
3862 + yargs-parser@18.1.3:
3863 + resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==}
3864 + engines: {node: '>=6'}
3865 +
3866 + yargs@15.4.1:
3867 + resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==}
3868 + engines: {node: '>=8'}
3869 +
3735 3870 yocto-queue@0.1.0:
3736 3871 resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}
3737 3872 engines: {node: '>=10'}
@@ -4400,6 +4535,8 @@ snapshots:
4400 4535 '@next/swc-win32-x64-msvc@16.3.4':
4401 4536 optional: true
4402 4537
4538 + '@noble/hashes@2.4.0': {}
4539 +
4403 4540 '@nodelib/fs.scandir@2.1.5':
4404 4541 dependencies:
4405 4542 '@nodelib/fs.stat': 2.0.5
@@ -4597,6 +4734,10 @@ snapshots:
4597 4734 dependencies:
4598 4735 undici-types: 7.18.2
4599 4736
4737 + '@types/qrcode@1.5.6':
4738 + dependencies:
4739 + '@types/node': 24.13.3
4740 +
4600 4741 '@types/react-dom@19.2.7(@types/react@19.2.18)':
4601 4742 dependencies:
4602 4743 '@types/react': 19.2.18
@@ -4838,6 +4979,8 @@ snapshots:
4838 4979 json-schema-traverse: 1.0.0
4839 4980 require-from-string: 2.0.2
4840 4981
4982 + ansi-regex@5.0.1: {}
4983 +
4841 4984 ansi-styles@4.3.0:
4842 4985 dependencies:
4843 4986 color-convert: 2.0.1
@@ -4993,6 +5136,8 @@ snapshots:
4993 5136
4994 5137 callsites@3.1.0: {}
4995 5138
5139 + camelcase@5.3.1: {}
5140 +
4996 5141 caniuse-lite@1.0.30001810: {}
4997 5142
4998 5143 chai@5.3.3:
@@ -5035,6 +5180,12 @@ snapshots:
5035 5180
5036 5181 client-only@0.0.1: {}
5037 5182
5183 + cliui@6.0.0:
5184 + dependencies:
5185 + string-width: 4.2.3
5186 + strip-ansi: 6.0.1
5187 + wrap-ansi: 6.2.0
5188 +
5038 5189 color-convert@2.0.1:
5039 5190 dependencies:
5040 5191 color-name: 1.1.4
@@ -5097,6 +5248,8 @@ snapshots:
5097 5248 dependencies:
5098 5249 ms: 2.1.3
5099 5250
5251 + decamelize@1.2.0: {}
5252 +
5100 5253 deep-eql@5.0.2: {}
5101 5254
5102 5255 deep-is@0.1.4: {}
@@ -5117,6 +5270,8 @@ snapshots:
5117 5270
5118 5271 detect-libc@2.1.2: {}
5119 5272
5273 + dijkstrajs@1.0.3: {}
5274 +
5120 5275 doctrine@2.1.0:
5121 5276 dependencies:
5122 5277 esutils: 2.0.3
@@ -5159,6 +5314,8 @@ snapshots:
5159 5314
5160 5315 electron-to-chromium@1.5.422: {}
5161 5316
5317 + emoji-regex@8.0.0: {}
5318 +
5162 5319 emoji-regex@9.2.2: {}
5163 5320
5164 5321 encoding-sniffer@0.2.1:
@@ -5669,6 +5826,11 @@ snapshots:
5669 5826 fast-querystring: 1.1.2
5670 5827 safe-regex2: 5.1.1
5671 5828
5829 + find-up@4.1.0:
5830 + dependencies:
5831 + locate-path: 5.0.0
5832 + path-exists: 4.0.0
5833 +
5672 5834 find-up@5.0.0:
5673 5835 dependencies:
5674 5836 locate-path: 6.0.0
@@ -5708,6 +5870,8 @@ snapshots:
5708 5870
5709 5871 gensync@1.0.0-beta.2: {}
5710 5872
5873 + get-caller-file@2.0.5: {}
5874 +
5711 5875 get-intrinsic@1.3.0:
5712 5876 dependencies:
5713 5877 call-bind-apply-helpers: 1.0.2
@@ -5873,6 +6037,8 @@ snapshots:
5873 6037 dependencies:
5874 6038 call-bound: 1.0.4
5875 6039
6040 + is-fullwidth-code-point@3.0.0: {}
6041 +
5876 6042 is-generator-function@1.1.2:
5877 6043 dependencies:
5878 6044 call-bound: 1.0.4
@@ -6060,6 +6226,10 @@ snapshots:
6060 6226 lightningcss-win32-arm64-msvc: 1.32.0
6061 6227 lightningcss-win32-x64-msvc: 1.32.0
6062 6228
6229 + locate-path@5.0.0:
6230 + dependencies:
6231 + p-locate: 4.1.0
6232 +
6063 6233 locate-path@6.0.0:
6064 6234 dependencies:
6065 6235 p-locate: 5.0.0
@@ -6215,6 +6385,10 @@ snapshots:
6215 6385 type-check: 0.4.0
6216 6386 word-wrap: 1.2.5
6217 6387
6388 + otpauth@9.5.2:
6389 + dependencies:
6390 + '@noble/hashes': 2.4.0
6391 +
6218 6392 own-keys@1.0.2:
6219 6393 dependencies:
6220 6394 call-bound: 1.0.4
@@ -6222,14 +6396,24 @@ snapshots:
6222 6396 object-keys: 1.1.1
6223 6397 safe-push-apply: 1.0.0
6224 6398
6399 + p-limit@2.3.0:
6400 + dependencies:
6401 + p-try: 2.2.0
6402 +
6225 6403 p-limit@3.1.0:
6226 6404 dependencies:
6227 6405 yocto-queue: 0.1.0
6228 6406
6407 + p-locate@4.1.0:
6408 + dependencies:
6409 + p-limit: 2.3.0
6410 +
6229 6411 p-locate@5.0.0:
6230 6412 dependencies:
6231 6413 p-limit: 3.1.0
6232 6414
6415 + p-try@2.2.0: {}
6416 +
6233 6417 parent-module@1.0.1:
6234 6418 dependencies:
6235 6419 callsites: 3.1.0
@@ -6326,6 +6510,8 @@ snapshots:
6326 6510 sonic-boom: 4.2.1
6327 6511 thread-stream: 3.2.0
6328 6512
6513 + pngjs@5.0.0: {}
6514 +
6329 6515 possible-typed-array-names@1.1.0: {}
6330 6516
6331 6517 postcss@8.5.23:
@@ -6368,6 +6554,12 @@ snapshots:
6368 6554
6369 6555 punycode@2.3.1: {}
6370 6556
6557 + qrcode@1.5.4:
6558 + dependencies:
6559 + dijkstrajs: 1.0.3
6560 + pngjs: 5.0.0
6561 + yargs: 15.4.1
6562 +
6371 6563 queue-microtask@1.2.3: {}
6372 6564
6373 6565 quick-format-unescaped@4.0.4: {}
@@ -6411,8 +6603,12 @@ snapshots:
6411 6603 gopd: 1.2.0
6412 6604 set-function-name: 2.0.2
6413 6605
6606 + require-directory@2.1.1: {}
6607 +
6414 6608 require-from-string@2.0.2: {}
6415 6609
6610 + require-main-filename@2.0.0: {}
6611 +
6416 6612 resolve-from@4.0.0: {}
6417 6613
6418 6614 resolve-pkg-maps@1.0.0: {}
@@ -6512,6 +6708,8 @@ snapshots:
6512 6708
6513 6709 server-only@0.0.1: {}
6514 6710
6711 + set-blocking@2.0.0: {}
6712 +
6515 6713 set-cookie-parser@2.7.2: {}
6516 6714
6517 6715 set-function-length@1.2.2:
@@ -6637,6 +6835,12 @@ snapshots:
6637 6835 es-errors: 1.3.0
6638 6836 internal-slot: 1.1.0
6639 6837
6838 + string-width@4.2.3:
6839 + dependencies:
6840 + emoji-regex: 8.0.0
6841 + is-fullwidth-code-point: 3.0.0
6842 + strip-ansi: 6.0.1
6843 +
6640 6844 string.prototype.includes@2.0.1:
6641 6845 dependencies:
6642 6846 call-bind: 1.0.9
@@ -6692,6 +6896,10 @@ snapshots:
6692 6896 dependencies:
6693 6897 safe-buffer: 5.2.1
6694 6898
6899 + strip-ansi@6.0.1:
6900 + dependencies:
6901 + ansi-regex: 5.0.1
6902 +
6695 6903 strip-bom@3.0.0: {}
6696 6904
6697 6905 strip-json-comments@3.1.1: {}
@@ -6981,6 +7189,8 @@ snapshots:
6981 7189 is-weakmap: 2.0.2
6982 7190 is-weakset: 2.0.4
6983 7191
7192 + which-module@2.0.1: {}
7193 +
6984 7194 which-typed-array@1.1.22:
6985 7195 dependencies:
6986 7196 available-typed-arrays: 1.0.7
@@ -7002,10 +7212,37 @@ snapshots:
7002 7212
7003 7213 word-wrap@1.2.5: {}
7004 7214
7215 + wrap-ansi@6.2.0:
7216 + dependencies:
7217 + ansi-styles: 4.3.0
7218 + string-width: 4.2.3
7219 + strip-ansi: 6.0.1
7220 +
7005 7221 xtend@4.0.2: {}
7006 7222
7223 + y18n@4.0.3: {}
7224 +
7007 7225 yallist@3.1.1: {}
7008 7226
7227 + yargs-parser@18.1.3:
7228 + dependencies:
7229 + camelcase: 5.3.1
7230 + decamelize: 1.2.0
7231 +
7232 + yargs@15.4.1:
7233 + dependencies:
7234 + cliui: 6.0.0
7235 + decamelize: 1.2.0
7236 + find-up: 4.1.0
7237 + get-caller-file: 2.0.5
7238 + require-directory: 2.1.1
7239 + require-main-filename: 2.0.0
7240 + set-blocking: 2.0.0
7241 + string-width: 4.2.3
7242 + which-module: 2.0.1
7243 + y18n: 4.0.3
7244 + yargs-parser: 18.1.3
7245 +
7009 7246 yocto-queue@0.1.0: {}
7010 7247
7011 7248 zod-validation-error@4.0.2(zod@4.5.4):
7012 7249