SPB Git forge

spb/spinza

Public
8commits 1branches 0releases
1.6 MBsize
maindefault branch
16 days agolast push
TypeScript 97.6% SQL 1.4% JavaScript 0.5%
70.5 KB · 2,801 lines json
Raw Blame History
1{2  "id": "423e47ca-9681-4a28-97a8-d582818cd2d7",3  "prevId": "ce701f34-3e3b-4c96-a7b0-2d2f90472e21",4  "version": "7",5  "dialect": "postgresql",6  "tables": {7    "public.achievements": {8      "name": "achievements",9      "schema": "",10      "columns": {11        "key": {12          "name": "key",13          "type": "varchar(48)",14          "primaryKey": true,15          "notNull": true16        },17        "name": {18          "name": "name",19          "type": "varchar(80)",20          "primaryKey": false,21          "notNull": true22        },23        "description": {24          "name": "description",25          "type": "text",26          "primaryKey": false,27          "notNull": true28        },29        "category": {30          "name": "category",31          "type": "varchar(24)",32          "primaryKey": false,33          "notNull": true34        },35        "metric": {36          "name": "metric",37          "type": "varchar(32)",38          "primaryKey": false,39          "notNull": true40        },41        "target": {42          "name": "target",43          "type": "bigint",44          "primaryKey": false,45          "notNull": true46        },47        "reward_credits": {48          "name": "reward_credits",49          "type": "integer",50          "primaryKey": false,51          "notNull": true,52          "default": 053        },54        "reward_xp": {55          "name": "reward_xp",56          "type": "integer",57          "primaryKey": false,58          "notNull": true,59          "default": 060        },61        "icon": {62          "name": "icon",63          "type": "varchar(32)",64          "primaryKey": false,65          "notNull": true,66          "default": "'star'"67        },68        "sort_order": {69          "name": "sort_order",70          "type": "integer",71          "primaryKey": false,72          "notNull": true,73          "default": 074        },75        "enabled": {76          "name": "enabled",77          "type": "boolean",78          "primaryKey": false,79          "notNull": true,80          "default": true81        }82      },83      "indexes": {},84      "foreignKeys": {},85      "compositePrimaryKeys": {},86      "uniqueConstraints": {},87      "policies": {},88      "checkConstraints": {},89      "isRLSEnabled": false90    },91    "public.admin_sessions": {92      "name": "admin_sessions",93      "schema": "",94      "columns": {95        "id": {96          "name": "id",97          "type": "uuid",98          "primaryKey": true,99          "notNull": true,100          "default": "gen_random_uuid()"101        },102        "admin_id": {103          "name": "admin_id",104          "type": "uuid",105          "primaryKey": false,106          "notNull": true107        },108        "token_hash": {109          "name": "token_hash",110          "type": "text",111          "primaryKey": false,112          "notNull": true113        },114        "created_at": {115          "name": "created_at",116          "type": "timestamp with time zone",117          "primaryKey": false,118          "notNull": true,119          "default": "now()"120        },121        "expires_at": {122          "name": "expires_at",123          "type": "timestamp with time zone",124          "primaryKey": false,125          "notNull": true126        },127        "ip": {128          "name": "ip",129          "type": "varchar(64)",130          "primaryKey": false,131          "notNull": false132        }133      },134      "indexes": {135        "admin_sessions_token_idx": {136          "name": "admin_sessions_token_idx",137          "columns": [138            {139              "expression": "token_hash",140              "isExpression": false,141              "asc": true,142              "nulls": "last"143            }144          ],145          "isUnique": true,146          "concurrently": false,147          "method": "btree",148          "with": {}149        }150      },151      "foreignKeys": {152        "admin_sessions_admin_id_admin_users_id_fk": {153          "name": "admin_sessions_admin_id_admin_users_id_fk",154          "tableFrom": "admin_sessions",155          "tableTo": "admin_users",156          "columnsFrom": [157            "admin_id"158          ],159          "columnsTo": [160            "id"161          ],162          "onDelete": "cascade",163          "onUpdate": "no action"164        }165      },166      "compositePrimaryKeys": {},167      "uniqueConstraints": {},168      "policies": {},169      "checkConstraints": {},170      "isRLSEnabled": false171    },172    "public.admin_users": {173      "name": "admin_users",174      "schema": "",175      "columns": {176        "id": {177          "name": "id",178          "type": "uuid",179          "primaryKey": true,180          "notNull": true,181          "default": "gen_random_uuid()"182        },183        "username": {184          "name": "username",185          "type": "varchar(32)",186          "primaryKey": false,187          "notNull": true188        },189        "password_hash": {190          "name": "password_hash",191          "type": "text",192          "primaryKey": false,193          "notNull": true194        },195        "totp_secret": {196          "name": "totp_secret",197          "type": "text",198          "primaryKey": false,199          "notNull": true200        },201        "role": {202          "name": "role",203          "type": "varchar(16)",204          "primaryKey": false,205          "notNull": true,206          "default": "'admin'"207        },208        "created_at": {209          "name": "created_at",210          "type": "timestamp with time zone",211          "primaryKey": false,212          "notNull": true,213          "default": "now()"214        },215        "last_login_at": {216          "name": "last_login_at",217          "type": "timestamp with time zone",218          "primaryKey": false,219          "notNull": false220        },221        "disabled": {222          "name": "disabled",223          "type": "boolean",224          "primaryKey": false,225          "notNull": true,226          "default": false227        }228      },229      "indexes": {230        "admin_users_username_idx": {231          "name": "admin_users_username_idx",232          "columns": [233            {234              "expression": "username",235              "isExpression": false,236              "asc": true,237              "nulls": "last"238            }239          ],240          "isUnique": true,241          "concurrently": false,242          "method": "btree",243          "with": {}244        }245      },246      "foreignKeys": {},247      "compositePrimaryKeys": {},248      "uniqueConstraints": {},249      "policies": {},250      "checkConstraints": {},251      "isRLSEnabled": false252    },253    "public.crash_rounds": {254      "name": "crash_rounds",255      "schema": "",256      "columns": {257        "id": {258          "name": "id",259          "type": "uuid",260          "primaryKey": true,261          "notNull": true,262          "default": "gen_random_uuid()"263        },264        "round_id": {265          "name": "round_id",266          "type": "varchar(32)",267          "primaryKey": false,268          "notNull": true269        },270        "user_id": {271          "name": "user_id",272          "type": "uuid",273          "primaryKey": false,274          "notNull": true275        },276        "game_id": {277          "name": "game_id",278          "type": "uuid",279          "primaryKey": false,280          "notNull": true281        },282        "game_slug": {283          "name": "game_slug",284          "type": "varchar(64)",285          "primaryKey": false,286          "notNull": true287        },288        "game_version": {289          "name": "game_version",290          "type": "varchar(16)",291          "primaryKey": false,292          "notNull": true293        },294        "client_round_id": {295          "name": "client_round_id",296          "type": "uuid",297          "primaryKey": false,298          "notNull": true299        },300        "bet": {301          "name": "bet",302          "type": "bigint",303          "primaryKey": false,304          "notNull": true305        },306        "crash_multiplier": {307          "name": "crash_multiplier",308          "type": "numeric(12, 2)",309          "primaryKey": false,310          "notNull": true311        },312        "crash_at_ms": {313          "name": "crash_at_ms",314          "type": "integer",315          "primaryKey": false,316          "notNull": true317        },318        "seed": {319          "name": "seed",320          "type": "text",321          "primaryKey": false,322          "notNull": true323        },324        "commitment": {325          "name": "commitment",326          "type": "varchar(64)",327          "primaryKey": false,328          "notNull": true329        },330        "events": {331          "name": "events",332          "type": "jsonb",333          "primaryKey": false,334          "notNull": true,335          "default": "'[]'::jsonb"336        },337        "auto_cashout": {338          "name": "auto_cashout",339          "type": "numeric(12, 2)",340          "primaryKey": false,341          "notNull": false342        },343        "status": {344          "name": "status",345          "type": "varchar(12)",346          "primaryKey": false,347          "notNull": true,348          "default": "'running'"349        },350        "cashout_multiplier": {351          "name": "cashout_multiplier",352          "type": "numeric(12, 2)",353          "primaryKey": false,354          "notNull": false355        },356        "win": {357          "name": "win",358          "type": "bigint",359          "primaryKey": false,360          "notNull": true,361          "default": 0362        },363        "started_at": {364          "name": "started_at",365          "type": "timestamp with time zone",366          "primaryKey": false,367          "notNull": true,368          "default": "now()"369        },370        "settled_at": {371          "name": "settled_at",372          "type": "timestamp with time zone",373          "primaryKey": false,374          "notNull": false375        }376      },377      "indexes": {378        "crash_rounds_round_id_idx": {379          "name": "crash_rounds_round_id_idx",380          "columns": [381            {382              "expression": "round_id",383              "isExpression": false,384              "asc": true,385              "nulls": "last"386            }387          ],388          "isUnique": true,389          "concurrently": false,390          "method": "btree",391          "with": {}392        },393        "crash_rounds_user_client_idx": {394          "name": "crash_rounds_user_client_idx",395          "columns": [396            {397              "expression": "user_id",398              "isExpression": false,399              "asc": true,400              "nulls": "last"401            },402            {403              "expression": "client_round_id",404              "isExpression": false,405              "asc": true,406              "nulls": "last"407            }408          ],409          "isUnique": true,410          "concurrently": false,411          "method": "btree",412          "with": {}413        },414        "crash_rounds_user_status_idx": {415          "name": "crash_rounds_user_status_idx",416          "columns": [417            {418              "expression": "user_id",419              "isExpression": false,420              "asc": true,421              "nulls": "last"422            },423            {424              "expression": "status",425              "isExpression": false,426              "asc": true,427              "nulls": "last"428            }429          ],430          "isUnique": false,431          "concurrently": false,432          "method": "btree",433          "with": {}434        }435      },436      "foreignKeys": {437        "crash_rounds_user_id_users_id_fk": {438          "name": "crash_rounds_user_id_users_id_fk",439          "tableFrom": "crash_rounds",440          "tableTo": "users",441          "columnsFrom": [442            "user_id"443          ],444          "columnsTo": [445            "id"446          ],447          "onDelete": "cascade",448          "onUpdate": "no action"449        },450        "crash_rounds_game_id_games_id_fk": {451          "name": "crash_rounds_game_id_games_id_fk",452          "tableFrom": "crash_rounds",453          "tableTo": "games",454          "columnsFrom": [455            "game_id"456          ],457          "columnsTo": [458            "id"459          ],460          "onDelete": "no action",461          "onUpdate": "no action"462        }463      },464      "compositePrimaryKeys": {},465      "uniqueConstraints": {},466      "policies": {},467      "checkConstraints": {},468      "isRLSEnabled": false469    },470    "public.credit_transactions": {471      "name": "credit_transactions",472      "schema": "",473      "columns": {474        "id": {475          "name": "id",476          "type": "uuid",477          "primaryKey": true,478          "notNull": true,479          "default": "gen_random_uuid()"480        },481        "user_id": {482          "name": "user_id",483          "type": "uuid",484          "primaryKey": false,485          "notNull": true486        },487        "type": {488          "name": "type",489          "type": "varchar(24)",490          "primaryKey": false,491          "notNull": true492        },493        "amount": {494          "name": "amount",495          "type": "bigint",496          "primaryKey": false,497          "notNull": true498        },499        "balance_after": {500          "name": "balance_after",501          "type": "bigint",502          "primaryKey": false,503          "notNull": true504        },505        "reference": {506          "name": "reference",507          "type": "text",508          "primaryKey": false,509          "notNull": false510        },511        "meta": {512          "name": "meta",513          "type": "jsonb",514          "primaryKey": false,515          "notNull": false516        },517        "created_at": {518          "name": "created_at",519          "type": "timestamp with time zone",520          "primaryKey": false,521          "notNull": true,522          "default": "now()"523        }524      },525      "indexes": {526        "ctx_user_created_idx": {527          "name": "ctx_user_created_idx",528          "columns": [529            {530              "expression": "user_id",531              "isExpression": false,532              "asc": true,533              "nulls": "last"534            },535            {536              "expression": "created_at",537              "isExpression": false,538              "asc": true,539              "nulls": "last"540            }541          ],542          "isUnique": false,543          "concurrently": false,544          "method": "btree",545          "with": {}546        },547        "ctx_type_idx": {548          "name": "ctx_type_idx",549          "columns": [550            {551              "expression": "type",552              "isExpression": false,553              "asc": true,554              "nulls": "last"555            }556          ],557          "isUnique": false,558          "concurrently": false,559          "method": "btree",560          "with": {}561        },562        "ctx_reference_idx": {563          "name": "ctx_reference_idx",564          "columns": [565            {566              "expression": "reference",567              "isExpression": false,568              "asc": true,569              "nulls": "last"570            }571          ],572          "isUnique": false,573          "concurrently": false,574          "method": "btree",575          "with": {}576        }577      },578      "foreignKeys": {579        "credit_transactions_user_id_users_id_fk": {580          "name": "credit_transactions_user_id_users_id_fk",581          "tableFrom": "credit_transactions",582          "tableTo": "users",583          "columnsFrom": [584            "user_id"585          ],586          "columnsTo": [587            "id"588          ],589          "onDelete": "cascade",590          "onUpdate": "no action"591        }592      },593      "compositePrimaryKeys": {},594      "uniqueConstraints": {},595      "policies": {},596      "checkConstraints": {},597      "isRLSEnabled": false598    },599    "public.daily_rewards": {600      "name": "daily_rewards",601      "schema": "",602      "columns": {603        "user_id": {604          "name": "user_id",605          "type": "uuid",606          "primaryKey": true,607          "notNull": true608        },609        "streak_day": {610          "name": "streak_day",611          "type": "integer",612          "primaryKey": false,613          "notNull": true,614          "default": 0615        },616        "last_claimed_at": {617          "name": "last_claimed_at",618          "type": "timestamp with time zone",619          "primaryKey": false,620          "notNull": false621        },622        "next_available_at": {623          "name": "next_available_at",624          "type": "timestamp with time zone",625          "primaryKey": false,626          "notNull": false627        },628        "total_claimed": {629          "name": "total_claimed",630          "type": "bigint",631          "primaryKey": false,632          "notNull": true,633          "default": 0634        },635        "claims": {636          "name": "claims",637          "type": "integer",638          "primaryKey": false,639          "notNull": true,640          "default": 0641        }642      },643      "indexes": {},644      "foreignKeys": {645        "daily_rewards_user_id_users_id_fk": {646          "name": "daily_rewards_user_id_users_id_fk",647          "tableFrom": "daily_rewards",648          "tableTo": "users",649          "columnsFrom": [650            "user_id"651          ],652          "columnsTo": [653            "id"654          ],655          "onDelete": "cascade",656          "onUpdate": "no action"657        }658      },659      "compositePrimaryKeys": {},660      "uniqueConstraints": {},661      "policies": {},662      "checkConstraints": {},663      "isRLSEnabled": false664    },665    "public.favorites": {666      "name": "favorites",667      "schema": "",668      "columns": {669        "user_id": {670          "name": "user_id",671          "type": "uuid",672          "primaryKey": false,673          "notNull": true674        },675        "game_id": {676          "name": "game_id",677          "type": "uuid",678          "primaryKey": false,679          "notNull": true680        },681        "created_at": {682          "name": "created_at",683          "type": "timestamp with time zone",684          "primaryKey": false,685          "notNull": true,686          "default": "now()"687        }688      },689      "indexes": {},690      "foreignKeys": {691        "favorites_user_id_users_id_fk": {692          "name": "favorites_user_id_users_id_fk",693          "tableFrom": "favorites",694          "tableTo": "users",695          "columnsFrom": [696            "user_id"697          ],698          "columnsTo": [699            "id"700          ],701          "onDelete": "cascade",702          "onUpdate": "no action"703        },704        "favorites_game_id_games_id_fk": {705          "name": "favorites_game_id_games_id_fk",706          "tableFrom": "favorites",707          "tableTo": "games",708          "columnsFrom": [709            "game_id"710          ],711          "columnsTo": [712            "id"713          ],714          "onDelete": "cascade",715          "onUpdate": "no action"716        }717      },718      "compositePrimaryKeys": {719        "favorites_user_id_game_id_pk": {720          "name": "favorites_user_id_game_id_pk",721          "columns": [722            "user_id",723            "game_id"724          ]725        }726      },727      "uniqueConstraints": {},728      "policies": {},729      "checkConstraints": {},730      "isRLSEnabled": false731    },732    "public.feature_flags": {733      "name": "feature_flags",734      "schema": "",735      "columns": {736        "key": {737          "name": "key",738          "type": "varchar(64)",739          "primaryKey": true,740          "notNull": true741        },742        "enabled": {743          "name": "enabled",744          "type": "boolean",745          "primaryKey": false,746          "notNull": true,747          "default": true748        },749        "description": {750          "name": "description",751          "type": "text",752          "primaryKey": false,753          "notNull": false754        },755        "updated_at": {756          "name": "updated_at",757          "type": "timestamp with time zone",758          "primaryKey": false,759          "notNull": true,760          "default": "now()"761        }762      },763      "indexes": {},764      "foreignKeys": {},765      "compositePrimaryKeys": {},766      "uniqueConstraints": {},767      "policies": {},768      "checkConstraints": {},769      "isRLSEnabled": false770    },771    "public.game_rounds": {772      "name": "game_rounds",773      "schema": "",774      "columns": {775        "id": {776          "name": "id",777          "type": "uuid",778          "primaryKey": true,779          "notNull": true,780          "default": "gen_random_uuid()"781        },782        "round_id": {783          "name": "round_id",784          "type": "varchar(32)",785          "primaryKey": false,786          "notNull": true787        },788        "user_id": {789          "name": "user_id",790          "type": "uuid",791          "primaryKey": false,792          "notNull": true793        },794        "game_id": {795          "name": "game_id",796          "type": "uuid",797          "primaryKey": false,798          "notNull": true799        },800        "game_slug": {801          "name": "game_slug",802          "type": "varchar(64)",803          "primaryKey": false,804          "notNull": true805        },806        "game_version": {807          "name": "game_version",808          "type": "varchar(16)",809          "primaryKey": false,810          "notNull": true811        },812        "client_round_id": {813          "name": "client_round_id",814          "type": "uuid",815          "primaryKey": false,816          "notNull": true817        },818        "bet": {819          "name": "bet",820          "type": "bigint",821          "primaryKey": false,822          "notNull": true823        },824        "win": {825          "name": "win",826          "type": "bigint",827          "primaryKey": false,828          "notNull": true829        },830        "multiplier": {831          "name": "multiplier",832          "type": "numeric(12, 4)",833          "primaryKey": false,834          "notNull": true835        },836        "balance_after": {837          "name": "balance_after",838          "type": "bigint",839          "primaryKey": false,840          "notNull": true841        },842        "result": {843          "name": "result",844          "type": "jsonb",845          "primaryKey": false,846          "notNull": true847        },848        "features": {849          "name": "features",850          "type": "text[]",851          "primaryKey": false,852          "notNull": true,853          "default": "'{}'::text[]"854        },855        "free_spins": {856          "name": "free_spins",857          "type": "boolean",858          "primaryKey": false,859          "notNull": true,860          "default": false861        },862        "bonus": {863          "name": "bonus",864          "type": "boolean",865          "primaryKey": false,866          "notNull": true,867          "default": false868        },869        "jackpot_tier": {870          "name": "jackpot_tier",871          "type": "varchar(8)",872          "primaryKey": false,873          "notNull": false874        },875        "rng_reference": {876          "name": "rng_reference",877          "type": "text",878          "primaryKey": false,879          "notNull": true880        },881        "duration_ms": {882          "name": "duration_ms",883          "type": "integer",884          "primaryKey": false,885          "notNull": false886        },887        "created_at": {888          "name": "created_at",889          "type": "timestamp with time zone",890          "primaryKey": false,891          "notNull": true,892          "default": "now()"893        }894      },895      "indexes": {896        "game_rounds_round_id_idx": {897          "name": "game_rounds_round_id_idx",898          "columns": [899            {900              "expression": "round_id",901              "isExpression": false,902              "asc": true,903              "nulls": "last"904            }905          ],906          "isUnique": true,907          "concurrently": false,908          "method": "btree",909          "with": {}910        },911        "game_rounds_user_client_idx": {912          "name": "game_rounds_user_client_idx",913          "columns": [914            {915              "expression": "user_id",916              "isExpression": false,917              "asc": true,918              "nulls": "last"919            },920            {921              "expression": "client_round_id",922              "isExpression": false,923              "asc": true,924              "nulls": "last"925            }926          ],927          "isUnique": true,928          "concurrently": false,929          "method": "btree",930          "with": {}931        },932        "game_rounds_user_created_idx": {933          "name": "game_rounds_user_created_idx",934          "columns": [935            {936              "expression": "user_id",937              "isExpression": false,938              "asc": true,939              "nulls": "last"940            },941            {942              "expression": "created_at",943              "isExpression": false,944              "asc": true,945              "nulls": "last"946            }947          ],948          "isUnique": false,949          "concurrently": false,950          "method": "btree",951          "with": {}952        },953        "game_rounds_game_created_idx": {954          "name": "game_rounds_game_created_idx",955          "columns": [956            {957              "expression": "game_id",958              "isExpression": false,959              "asc": true,960              "nulls": "last"961            },962            {963              "expression": "created_at",964              "isExpression": false,965              "asc": true,966              "nulls": "last"967            }968          ],969          "isUnique": false,970          "concurrently": false,971          "method": "btree",972          "with": {}973        },974        "game_rounds_created_idx": {975          "name": "game_rounds_created_idx",976          "columns": [977            {978              "expression": "created_at",979              "isExpression": false,980              "asc": true,981              "nulls": "last"982            }983          ],984          "isUnique": false,985          "concurrently": false,986          "method": "btree",987          "with": {}988        },989        "game_rounds_win_idx": {990          "name": "game_rounds_win_idx",991          "columns": [992            {993              "expression": "win",994              "isExpression": false,995              "asc": true,996              "nulls": "last"997            }998          ],999          "isUnique": false,1000          "concurrently": false,1001          "method": "btree",1002          "with": {}1003        }1004      },1005      "foreignKeys": {1006        "game_rounds_user_id_users_id_fk": {1007          "name": "game_rounds_user_id_users_id_fk",1008          "tableFrom": "game_rounds",1009          "tableTo": "users",1010          "columnsFrom": [1011            "user_id"1012          ],1013          "columnsTo": [1014            "id"1015          ],1016          "onDelete": "cascade",1017          "onUpdate": "no action"1018        },1019        "game_rounds_game_id_games_id_fk": {1020          "name": "game_rounds_game_id_games_id_fk",1021          "tableFrom": "game_rounds",1022          "tableTo": "games",1023          "columnsFrom": [1024            "game_id"1025          ],1026          "columnsTo": [1027            "id"1028          ],1029          "onDelete": "no action",1030          "onUpdate": "no action"1031        }1032      },1033      "compositePrimaryKeys": {},1034      "uniqueConstraints": {},1035      "policies": {},1036      "checkConstraints": {},1037      "isRLSEnabled": false1038    },1039    "public.game_states": {1040      "name": "game_states",1041      "schema": "",1042      "columns": {1043        "user_id": {1044          "name": "user_id",1045          "type": "uuid",1046          "primaryKey": false,1047          "notNull": true1048        },1049        "game_id": {1050          "name": "game_id",1051          "type": "uuid",1052          "primaryKey": false,1053          "notNull": true1054        },1055        "state": {1056          "name": "state",1057          "type": "jsonb",1058          "primaryKey": false,1059          "notNull": true1060        },1061        "updated_at": {1062          "name": "updated_at",1063          "type": "timestamp with time zone",1064          "primaryKey": false,1065          "notNull": true,1066          "default": "now()"1067        }1068      },1069      "indexes": {},1070      "foreignKeys": {1071        "game_states_user_id_users_id_fk": {1072          "name": "game_states_user_id_users_id_fk",1073          "tableFrom": "game_states",1074          "tableTo": "users",1075          "columnsFrom": [1076            "user_id"1077          ],1078          "columnsTo": [1079            "id"1080          ],1081          "onDelete": "cascade",1082          "onUpdate": "no action"1083        },1084        "game_states_game_id_games_id_fk": {1085          "name": "game_states_game_id_games_id_fk",1086          "tableFrom": "game_states",1087          "tableTo": "games",1088          "columnsFrom": [1089            "game_id"1090          ],1091          "columnsTo": [1092            "id"1093          ],1094          "onDelete": "cascade",1095          "onUpdate": "no action"1096        }1097      },1098      "compositePrimaryKeys": {1099        "game_states_user_id_game_id_pk": {1100          "name": "game_states_user_id_game_id_pk",1101          "columns": [1102            "user_id",1103            "game_id"1104          ]1105        }1106      },1107      "uniqueConstraints": {},1108      "policies": {},1109      "checkConstraints": {},1110      "isRLSEnabled": false1111    },1112    "public.game_statistics": {1113      "name": "game_statistics",1114      "schema": "",1115      "columns": {1116        "game_id": {1117          "name": "game_id",1118          "type": "uuid",1119          "primaryKey": true,1120          "notNull": true1121        },1122        "launches": {1123          "name": "launches",1124          "type": "bigint",1125          "primaryKey": false,1126          "notNull": true,1127          "default": 01128        },1129        "spins": {1130          "name": "spins",1131          "type": "bigint",1132          "primaryKey": false,1133          "notNull": true,1134          "default": 01135        },1136        "wagered": {1137          "name": "wagered",1138          "type": "bigint",1139          "primaryKey": false,1140          "notNull": true,1141          "default": 01142        },1143        "won": {1144          "name": "won",1145          "type": "bigint",1146          "primaryKey": false,1147          "notNull": true,1148          "default": 01149        },1150        "wins": {1151          "name": "wins",1152          "type": "bigint",1153          "primaryKey": false,1154          "notNull": true,1155          "default": 01156        },1157        "bonuses": {1158          "name": "bonuses",1159          "type": "bigint",1160          "primaryKey": false,1161          "notNull": true,1162          "default": 01163        },1164        "free_spins": {1165          "name": "free_spins",1166          "type": "bigint",1167          "primaryKey": false,1168          "notNull": true,1169          "default": 01170        },1171        "big_wins": {1172          "name": "big_wins",1173          "type": "bigint",1174          "primaryKey": false,1175          "notNull": true,1176          "default": 01177        },1178        "max_win": {1179          "name": "max_win",1180          "type": "bigint",1181          "primaryKey": false,1182          "notNull": true,1183          "default": 01184        },1185        "max_multiplier": {1186          "name": "max_multiplier",1187          "type": "numeric(12, 2)",1188          "primaryKey": false,1189          "notNull": true,1190          "default": "'0'"1191        },1192        "favorites": {1193          "name": "favorites",1194          "type": "integer",1195          "primaryKey": false,1196          "notNull": true,1197          "default": 01198        },1199        "updated_at": {1200          "name": "updated_at",1201          "type": "timestamp with time zone",1202          "primaryKey": false,1203          "notNull": true,1204          "default": "now()"1205        }1206      },1207      "indexes": {},1208      "foreignKeys": {1209        "game_statistics_game_id_games_id_fk": {1210          "name": "game_statistics_game_id_games_id_fk",1211          "tableFrom": "game_statistics",1212          "tableTo": "games",1213          "columnsFrom": [1214            "game_id"1215          ],1216          "columnsTo": [1217            "id"1218          ],1219          "onDelete": "cascade",1220          "onUpdate": "no action"1221        }1222      },1223      "compositePrimaryKeys": {},1224      "uniqueConstraints": {},1225      "policies": {},1226      "checkConstraints": {},1227      "isRLSEnabled": false1228    },1229    "public.game_versions": {1230      "name": "game_versions",1231      "schema": "",1232      "columns": {1233        "id": {1234          "name": "id",1235          "type": "uuid",1236          "primaryKey": true,1237          "notNull": true,1238          "default": "gen_random_uuid()"1239        },1240        "game_id": {1241          "name": "game_id",1242          "type": "uuid",1243          "primaryKey": false,1244          "notNull": true1245        },1246        "version": {1247          "name": "version",1248          "type": "varchar(16)",1249          "primaryKey": false,1250          "notNull": true1251        },1252        "definition": {1253          "name": "definition",1254          "type": "jsonb",1255          "primaryKey": false,1256          "notNull": true1257        },1258        "definition_hash": {1259          "name": "definition_hash",1260          "type": "varchar(64)",1261          "primaryKey": false,1262          "notNull": true1263        },1264        "certification": {1265          "name": "certification",1266          "type": "jsonb",1267          "primaryKey": false,1268          "notNull": false1269        },1270        "status": {1271          "name": "status",1272          "type": "varchar(16)",1273          "primaryKey": false,1274          "notNull": true,1275          "default": "'draft'"1276        },1277        "created_at": {1278          "name": "created_at",1279          "type": "timestamp with time zone",1280          "primaryKey": false,1281          "notNull": true,1282          "default": "now()"1283        }1284      },1285      "indexes": {1286        "game_versions_game_version_idx": {1287          "name": "game_versions_game_version_idx",1288          "columns": [1289            {1290              "expression": "game_id",1291              "isExpression": false,1292              "asc": true,1293              "nulls": "last"1294            },1295            {1296              "expression": "version",1297              "isExpression": false,1298              "asc": true,1299              "nulls": "last"1300            }1301          ],1302          "isUnique": true,1303          "concurrently": false,1304          "method": "btree",1305          "with": {}1306        }1307      },1308      "foreignKeys": {1309        "game_versions_game_id_games_id_fk": {1310          "name": "game_versions_game_id_games_id_fk",1311          "tableFrom": "game_versions",1312          "tableTo": "games",1313          "columnsFrom": [1314            "game_id"1315          ],1316          "columnsTo": [1317            "id"1318          ],1319          "onDelete": "cascade",1320          "onUpdate": "no action"1321        }1322      },1323      "compositePrimaryKeys": {},1324      "uniqueConstraints": {},1325      "policies": {},1326      "checkConstraints": {},1327      "isRLSEnabled": false1328    },1329    "public.games": {1330      "name": "games",1331      "schema": "",1332      "columns": {1333        "id": {1334          "name": "id",1335          "type": "uuid",1336          "primaryKey": true,1337          "notNull": true,1338          "default": "gen_random_uuid()"1339        },1340        "slug": {1341          "name": "slug",1342          "type": "varchar(64)",1343          "primaryKey": false,1344          "notNull": true1345        },1346        "name": {1347          "name": "name",1348          "type": "varchar(80)",1349          "primaryKey": false,1350          "notNull": true1351        },1352        "version": {1353          "name": "version",1354          "type": "varchar(16)",1355          "primaryKey": false,1356          "notNull": true1357        },1358        "lifecycle": {1359          "name": "lifecycle",1360          "type": "varchar(16)",1361          "primaryKey": false,1362          "notNull": true,1363          "default": "'draft'"1364        },1365        "sort_order": {1366          "name": "sort_order",1367          "type": "integer",1368          "primaryKey": false,1369          "notNull": true,1370          "default": 01371        },1372        "is_featured": {1373          "name": "is_featured",1374          "type": "boolean",1375          "primaryKey": false,1376          "notNull": true,1377          "default": false1378        },1379        "is_new": {1380          "name": "is_new",1381          "type": "boolean",1382          "primaryKey": false,1383          "notNull": true,1384          "default": true1385        },1386        "summary": {1387          "name": "summary",1388          "type": "jsonb",1389          "primaryKey": false,1390          "notNull": true1391        },1392        "created_at": {1393          "name": "created_at",1394          "type": "timestamp with time zone",1395          "primaryKey": false,1396          "notNull": true,1397          "default": "now()"1398        },1399        "published_at": {1400          "name": "published_at",1401          "type": "timestamp with time zone",1402          "primaryKey": false,1403          "notNull": false1404        },1405        "updated_at": {1406          "name": "updated_at",1407          "type": "timestamp with time zone",1408          "primaryKey": false,1409          "notNull": true,1410          "default": "now()"1411        }1412      },1413      "indexes": {1414        "games_slug_idx": {1415          "name": "games_slug_idx",1416          "columns": [1417            {1418              "expression": "slug",1419              "isExpression": false,1420              "asc": true,1421              "nulls": "last"1422            }1423          ],1424          "isUnique": true,1425          "concurrently": false,1426          "method": "btree",1427          "with": {}1428        }1429      },1430      "foreignKeys": {},1431      "compositePrimaryKeys": {},1432      "uniqueConstraints": {},1433      "policies": {},1434      "checkConstraints": {},1435      "isRLSEnabled": false1436    },1437    "public.leaderboards": {1438      "name": "leaderboards",1439      "schema": "",1440      "columns": {1441        "id": {1442          "name": "id",1443          "type": "uuid",1444          "primaryKey": true,1445          "notNull": true,1446          "default": "gen_random_uuid()"1447        },1448        "category": {1449          "name": "category",1450          "type": "varchar(32)",1451          "primaryKey": false,1452          "notNull": true1453        },1454        "period_key": {1455          "name": "period_key",1456          "type": "varchar(16)",1457          "primaryKey": false,1458          "notNull": true1459        },1460        "user_id": {1461          "name": "user_id",1462          "type": "uuid",1463          "primaryKey": false,1464          "notNull": true1465        },1466        "value": {1467          "name": "value",1468          "type": "numeric(18, 2)",1469          "primaryKey": false,1470          "notNull": true1471        },1472        "game_slug": {1473          "name": "game_slug",1474          "type": "varchar(64)",1475          "primaryKey": false,1476          "notNull": false1477        },1478        "round_id": {1479          "name": "round_id",1480          "type": "varchar(32)",1481          "primaryKey": false,1482          "notNull": false1483        },1484        "updated_at": {1485          "name": "updated_at",1486          "type": "timestamp with time zone",1487          "primaryKey": false,1488          "notNull": true,1489          "default": "now()"1490        }1491      },1492      "indexes": {1493        "leaderboards_unique_idx": {1494          "name": "leaderboards_unique_idx",1495          "columns": [1496            {1497              "expression": "category",1498              "isExpression": false,1499              "asc": true,1500              "nulls": "last"1501            },1502            {1503              "expression": "period_key",1504              "isExpression": false,1505              "asc": true,1506              "nulls": "last"1507            },1508            {1509              "expression": "user_id",1510              "isExpression": false,1511              "asc": true,1512              "nulls": "last"1513            }1514          ],1515          "isUnique": true,1516          "concurrently": false,1517          "method": "btree",1518          "with": {}1519        },1520        "leaderboards_rank_idx": {1521          "name": "leaderboards_rank_idx",1522          "columns": [1523            {1524              "expression": "category",1525              "isExpression": false,1526              "asc": true,1527              "nulls": "last"1528            },1529            {1530              "expression": "period_key",1531              "isExpression": false,1532              "asc": true,1533              "nulls": "last"1534            },1535            {1536              "expression": "value",1537              "isExpression": false,1538              "asc": true,1539              "nulls": "last"1540            }1541          ],1542          "isUnique": false,1543          "concurrently": false,1544          "method": "btree",1545          "with": {}1546        }1547      },1548      "foreignKeys": {1549        "leaderboards_user_id_users_id_fk": {1550          "name": "leaderboards_user_id_users_id_fk",1551          "tableFrom": "leaderboards",1552          "tableTo": "users",1553          "columnsFrom": [1554            "user_id"1555          ],1556          "columnsTo": [1557            "id"1558          ],1559          "onDelete": "cascade",1560          "onUpdate": "no action"1561        }1562      },1563      "compositePrimaryKeys": {},1564      "uniqueConstraints": {},1565      "policies": {},1566      "checkConstraints": {},1567      "isRLSEnabled": false1568    },1569    "public.missions": {1570      "name": "missions",1571      "schema": "",1572      "columns": {1573        "key": {1574          "name": "key",1575          "type": "varchar(48)",1576          "primaryKey": true,1577          "notNull": true1578        },1579        "name": {1580          "name": "name",1581          "type": "varchar(80)",1582          "primaryKey": false,1583          "notNull": true1584        },1585        "description": {1586          "name": "description",1587          "type": "text",1588          "primaryKey": false,1589          "notNull": true1590        },1591        "period": {1592          "name": "period",1593          "type": "varchar(8)",1594          "primaryKey": false,1595          "notNull": true1596        },1597        "metric": {1598          "name": "metric",1599          "type": "varchar(32)",1600          "primaryKey": false,1601          "notNull": true1602        },1603        "target": {1604          "name": "target",1605          "type": "bigint",1606          "primaryKey": false,1607          "notNull": true1608        },1609        "reward_credits": {1610          "name": "reward_credits",1611          "type": "integer",1612          "primaryKey": false,1613          "notNull": true,1614          "default": 01615        },1616        "reward_xp": {1617          "name": "reward_xp",1618          "type": "integer",1619          "primaryKey": false,1620          "notNull": true,1621          "default": 01622        },1623        "enabled": {1624          "name": "enabled",1625          "type": "boolean",1626          "primaryKey": false,1627          "notNull": true,1628          "default": true1629        },1630        "sort_order": {1631          "name": "sort_order",1632          "type": "integer",1633          "primaryKey": false,1634          "notNull": true,1635          "default": 01636        }1637      },1638      "indexes": {},1639      "foreignKeys": {},1640      "compositePrimaryKeys": {},1641      "uniqueConstraints": {},1642      "policies": {},1643      "checkConstraints": {},1644      "isRLSEnabled": false1645    },1646    "public.platform_settings": {1647      "name": "platform_settings",1648      "schema": "",1649      "columns": {1650        "key": {1651          "name": "key",1652          "type": "varchar(64)",1653          "primaryKey": true,1654          "notNull": true1655        },1656        "value": {1657          "name": "value",1658          "type": "jsonb",1659          "primaryKey": false,1660          "notNull": true1661        },1662        "updated_at": {1663          "name": "updated_at",1664          "type": "timestamp with time zone",1665          "primaryKey": false,1666          "notNull": true,1667          "default": "now()"1668        }1669      },1670      "indexes": {},1671      "foreignKeys": {},1672      "compositePrimaryKeys": {},1673      "uniqueConstraints": {},1674      "policies": {},1675      "checkConstraints": {},1676      "isRLSEnabled": false1677    },1678    "public.player_levels": {1679      "name": "player_levels",1680      "schema": "",1681      "columns": {1682        "level": {1683          "name": "level",1684          "type": "integer",1685          "primaryKey": true,1686          "notNull": true1687        },1688        "xp_required": {1689          "name": "xp_required",1690          "type": "bigint",1691          "primaryKey": false,1692          "notNull": true1693        },1694        "xp_cumulative": {1695          "name": "xp_cumulative",1696          "type": "bigint",1697          "primaryKey": false,1698          "notNull": true1699        },1700        "reward_credits": {1701          "name": "reward_credits",1702          "type": "integer",1703          "primaryKey": false,1704          "notNull": true1705        },1706        "title": {1707          "name": "title",1708          "type": "varchar(48)",1709          "primaryKey": false,1710          "notNull": true1711        }1712      },1713      "indexes": {},1714      "foreignKeys": {},1715      "compositePrimaryKeys": {},1716      "uniqueConstraints": {},1717      "policies": {},1718      "checkConstraints": {},1719      "isRLSEnabled": false1720    },1721    "public.recovery_codes": {1722      "name": "recovery_codes",1723      "schema": "",1724      "columns": {1725        "user_id": {1726          "name": "user_id",1727          "type": "uuid",1728          "primaryKey": true,1729          "notNull": true1730        },1731        "code_hash": {1732          "name": "code_hash",1733          "type": "text",1734          "primaryKey": false,1735          "notNull": true1736        },1737        "created_at": {1738          "name": "created_at",1739          "type": "timestamp with time zone",1740          "primaryKey": false,1741          "notNull": true,1742          "default": "now()"1743        },1744        "rotated_at": {1745          "name": "rotated_at",1746          "type": "timestamp with time zone",1747          "primaryKey": false,1748          "notNull": false1749        },1750        "used_at": {1751          "name": "used_at",1752          "type": "timestamp with time zone",1753          "primaryKey": false,1754          "notNull": false1755        },1756        "use_count": {1757          "name": "use_count",1758          "type": "integer",1759          "primaryKey": false,1760          "notNull": true,1761          "default": 01762        }1763      },1764      "indexes": {},1765      "foreignKeys": {1766        "recovery_codes_user_id_users_id_fk": {1767          "name": "recovery_codes_user_id_users_id_fk",1768          "tableFrom": "recovery_codes",1769          "tableTo": "users",1770          "columnsFrom": [1771            "user_id"1772          ],1773          "columnsTo": [1774            "id"1775          ],1776          "onDelete": "cascade",1777          "onUpdate": "no action"1778        }1779      },1780      "compositePrimaryKeys": {},1781      "uniqueConstraints": {},1782      "policies": {},1783      "checkConstraints": {},1784      "isRLSEnabled": false1785    },1786    "public.security_events": {1787      "name": "security_events",1788      "schema": "",1789      "columns": {1790        "id": {1791          "name": "id",1792          "type": "uuid",1793          "primaryKey": true,1794          "notNull": true,1795          "default": "gen_random_uuid()"1796        },1797        "user_id": {1798          "name": "user_id",1799          "type": "uuid",1800          "primaryKey": false,1801          "notNull": false1802        },1803        "admin_id": {1804          "name": "admin_id",1805          "type": "uuid",1806          "primaryKey": false,1807          "notNull": false1808        },1809        "type": {1810          "name": "type",1811          "type": "varchar(48)",1812          "primaryKey": false,1813          "notNull": true1814        },1815        "severity": {1816          "name": "severity",1817          "type": "varchar(8)",1818          "primaryKey": false,1819          "notNull": true,1820          "default": "'info'"1821        },1822        "ip": {1823          "name": "ip",1824          "type": "varchar(64)",1825          "primaryKey": false,1826          "notNull": false1827        },1828        "user_agent": {1829          "name": "user_agent",1830          "type": "text",1831          "primaryKey": false,1832          "notNull": false1833        },1834        "meta": {1835          "name": "meta",1836          "type": "jsonb",1837          "primaryKey": false,1838          "notNull": false1839        },1840        "created_at": {1841          "name": "created_at",1842          "type": "timestamp with time zone",1843          "primaryKey": false,1844          "notNull": true,1845          "default": "now()"1846        }1847      },1848      "indexes": {1849        "security_events_created_idx": {1850          "name": "security_events_created_idx",1851          "columns": [1852            {1853              "expression": "created_at",1854              "isExpression": false,1855              "asc": true,1856              "nulls": "last"1857            }1858          ],1859          "isUnique": false,1860          "concurrently": false,1861          "method": "btree",1862          "with": {}1863        },1864        "security_events_type_idx": {1865          "name": "security_events_type_idx",1866          "columns": [1867            {1868              "expression": "type",1869              "isExpression": false,1870              "asc": true,1871              "nulls": "last"1872            }1873          ],1874          "isUnique": false,1875          "concurrently": false,1876          "method": "btree",1877          "with": {}1878        },1879        "security_events_user_idx": {1880          "name": "security_events_user_idx",1881          "columns": [1882            {1883              "expression": "user_id",1884              "isExpression": false,1885              "asc": true,1886              "nulls": "last"1887            }1888          ],1889          "isUnique": false,1890          "concurrently": false,1891          "method": "btree",1892          "with": {}1893        }1894      },1895      "foreignKeys": {1896        "security_events_user_id_users_id_fk": {1897          "name": "security_events_user_id_users_id_fk",1898          "tableFrom": "security_events",1899          "tableTo": "users",1900          "columnsFrom": [1901            "user_id"1902          ],1903          "columnsTo": [1904            "id"1905          ],1906          "onDelete": "set null",1907          "onUpdate": "no action"1908        }1909      },1910      "compositePrimaryKeys": {},1911      "uniqueConstraints": {},1912      "policies": {},1913      "checkConstraints": {},1914      "isRLSEnabled": false1915    },1916    "public.sessions": {1917      "name": "sessions",1918      "schema": "",1919      "columns": {1920        "id": {1921          "name": "id",1922          "type": "uuid",1923          "primaryKey": true,1924          "notNull": true,1925          "default": "gen_random_uuid()"1926        },1927        "user_id": {1928          "name": "user_id",1929          "type": "uuid",1930          "primaryKey": false,1931          "notNull": true1932        },1933        "token_hash": {1934          "name": "token_hash",1935          "type": "text",1936          "primaryKey": false,1937          "notNull": true1938        },1939        "created_at": {1940          "name": "created_at",1941          "type": "timestamp with time zone",1942          "primaryKey": false,1943          "notNull": true,1944          "default": "now()"1945        },1946        "expires_at": {1947          "name": "expires_at",1948          "type": "timestamp with time zone",1949          "primaryKey": false,1950          "notNull": true1951        },1952        "last_seen_at": {1953          "name": "last_seen_at",1954          "type": "timestamp with time zone",1955          "primaryKey": false,1956          "notNull": true,1957          "default": "now()"1958        },1959        "user_agent": {1960          "name": "user_agent",1961          "type": "text",1962          "primaryKey": false,1963          "notNull": false1964        },1965        "ip": {1966          "name": "ip",1967          "type": "varchar(64)",1968          "primaryKey": false,1969          "notNull": false1970        }1971      },1972      "indexes": {1973        "sessions_token_hash_idx": {1974          "name": "sessions_token_hash_idx",1975          "columns": [1976            {1977              "expression": "token_hash",1978              "isExpression": false,1979              "asc": true,1980              "nulls": "last"1981            }1982          ],1983          "isUnique": true,1984          "concurrently": false,1985          "method": "btree",1986          "with": {}1987        },1988        "sessions_user_idx": {1989          "name": "sessions_user_idx",1990          "columns": [1991            {1992              "expression": "user_id",1993              "isExpression": false,1994              "asc": true,1995              "nulls": "last"1996            }1997          ],1998          "isUnique": false,1999          "concurrently": false,2000          "method": "btree",2001          "with": {}2002        }2003      },2004      "foreignKeys": {2005        "sessions_user_id_users_id_fk": {2006          "name": "sessions_user_id_users_id_fk",2007          "tableFrom": "sessions",2008          "tableTo": "users",2009          "columnsFrom": [2010            "user_id"2011          ],2012          "columnsTo": [2013            "id"2014          ],2015          "onDelete": "cascade",2016          "onUpdate": "no action"2017        }2018      },2019      "compositePrimaryKeys": {},2020      "uniqueConstraints": {},2021      "policies": {},2022      "checkConstraints": {},2023      "isRLSEnabled": false2024    },2025    "public.simulation_runs": {2026      "name": "simulation_runs",2027      "schema": "",2028      "columns": {2029        "id": {2030          "name": "id",2031          "type": "uuid",2032          "primaryKey": true,2033          "notNull": true,2034          "default": "gen_random_uuid()"2035        },2036        "game_slug": {2037          "name": "game_slug",2038          "type": "varchar(64)",2039          "primaryKey": false,2040          "notNull": true2041        },2042        "game_version": {2043          "name": "game_version",2044          "type": "varchar(16)",2045          "primaryKey": false,2046          "notNull": true2047        },2048        "spins": {2049          "name": "spins",2050          "type": "bigint",2051          "primaryKey": false,2052          "notNull": true2053        },2054        "status": {2055          "name": "status",2056          "type": "varchar(16)",2057          "primaryKey": false,2058          "notNull": true,2059          "default": "'running'"2060        },2061        "progress": {2062          "name": "progress",2063          "type": "bigint",2064          "primaryKey": false,2065          "notNull": true,2066          "default": 02067        },2068        "result": {2069          "name": "result",2070          "type": "jsonb",2071          "primaryKey": false,2072          "notNull": false2073        },2074        "error": {2075          "name": "error",2076          "type": "text",2077          "primaryKey": false,2078          "notNull": false2079        },2080        "requested_by": {2081          "name": "requested_by",2082          "type": "uuid",2083          "primaryKey": false,2084          "notNull": false2085        },2086        "created_at": {2087          "name": "created_at",2088          "type": "timestamp with time zone",2089          "primaryKey": false,2090          "notNull": true,2091          "default": "now()"2092        },2093        "finished_at": {2094          "name": "finished_at",2095          "type": "timestamp with time zone",2096          "primaryKey": false,2097          "notNull": false2098        }2099      },2100      "indexes": {2101        "simulation_runs_game_idx": {2102          "name": "simulation_runs_game_idx",2103          "columns": [2104            {2105              "expression": "game_slug",2106              "isExpression": false,2107              "asc": true,2108              "nulls": "last"2109            },2110            {2111              "expression": "created_at",2112              "isExpression": false,2113              "asc": true,2114              "nulls": "last"2115            }2116          ],2117          "isUnique": false,2118          "concurrently": false,2119          "method": "btree",2120          "with": {}2121        }2122      },2123      "foreignKeys": {},2124      "compositePrimaryKeys": {},2125      "uniqueConstraints": {},2126      "policies": {},2127      "checkConstraints": {},2128      "isRLSEnabled": false2129    },2130    "public.user_achievements": {2131      "name": "user_achievements",2132      "schema": "",2133      "columns": {2134        "user_id": {2135          "name": "user_id",2136          "type": "uuid",2137          "primaryKey": false,2138          "notNull": true2139        },2140        "achievement_key": {2141          "name": "achievement_key",2142          "type": "varchar(48)",2143          "primaryKey": false,2144          "notNull": true2145        },2146        "unlocked_at": {2147          "name": "unlocked_at",2148          "type": "timestamp with time zone",2149          "primaryKey": false,2150          "notNull": true,2151          "default": "now()"2152        }2153      },2154      "indexes": {},2155      "foreignKeys": {2156        "user_achievements_user_id_users_id_fk": {2157          "name": "user_achievements_user_id_users_id_fk",2158          "tableFrom": "user_achievements",2159          "tableTo": "users",2160          "columnsFrom": [2161            "user_id"2162          ],2163          "columnsTo": [2164            "id"2165          ],2166          "onDelete": "cascade",2167          "onUpdate": "no action"2168        },2169        "user_achievements_achievement_key_achievements_key_fk": {2170          "name": "user_achievements_achievement_key_achievements_key_fk",2171          "tableFrom": "user_achievements",2172          "tableTo": "achievements",2173          "columnsFrom": [2174            "achievement_key"2175          ],2176          "columnsTo": [2177            "key"2178          ],2179          "onDelete": "cascade",2180          "onUpdate": "no action"2181        }2182      },2183      "compositePrimaryKeys": {2184        "user_achievements_user_id_achievement_key_pk": {2185          "name": "user_achievements_user_id_achievement_key_pk",2186          "columns": [2187            "user_id",2188            "achievement_key"2189          ]2190        }2191      },2192      "uniqueConstraints": {},2193      "policies": {},2194      "checkConstraints": {},2195      "isRLSEnabled": false2196    },2197    "public.user_game_stats": {2198      "name": "user_game_stats",2199      "schema": "",2200      "columns": {2201        "user_id": {2202          "name": "user_id",2203          "type": "uuid",2204          "primaryKey": false,2205          "notNull": true2206        },2207        "game_id": {2208          "name": "game_id",2209          "type": "uuid",2210          "primaryKey": false,2211          "notNull": true2212        },2213        "spins": {2214          "name": "spins",2215          "type": "bigint",2216          "primaryKey": false,2217          "notNull": true,2218          "default": 02219        },2220        "wagered": {2221          "name": "wagered",2222          "type": "bigint",2223          "primaryKey": false,2224          "notNull": true,2225          "default": 02226        },2227        "won": {2228          "name": "won",2229          "type": "bigint",2230          "primaryKey": false,2231          "notNull": true,2232          "default": 02233        },2234        "bonuses": {2235          "name": "bonuses",2236          "type": "integer",2237          "primaryKey": false,2238          "notNull": true,2239          "default": 02240        },2241        "biggest_win": {2242          "name": "biggest_win",2243          "type": "bigint",2244          "primaryKey": false,2245          "notNull": true,2246          "default": 02247        },2248        "biggest_multiplier": {2249          "name": "biggest_multiplier",2250          "type": "numeric(12, 2)",2251          "primaryKey": false,2252          "notNull": true,2253          "default": "'0'"2254        },2255        "last_played_at": {2256          "name": "last_played_at",2257          "type": "timestamp with time zone",2258          "primaryKey": false,2259          "notNull": true,2260          "default": "now()"2261        },2262        "first_played_at": {2263          "name": "first_played_at",2264          "type": "timestamp with time zone",2265          "primaryKey": false,2266          "notNull": true,2267          "default": "now()"2268        }2269      },2270      "indexes": {2271        "ugs_user_last_idx": {2272          "name": "ugs_user_last_idx",2273          "columns": [2274            {2275              "expression": "user_id",2276              "isExpression": false,2277              "asc": true,2278              "nulls": "last"2279            },2280            {2281              "expression": "last_played_at",2282              "isExpression": false,2283              "asc": true,2284              "nulls": "last"2285            }2286          ],2287          "isUnique": false,2288          "concurrently": false,2289          "method": "btree",2290          "with": {}2291        }2292      },2293      "foreignKeys": {2294        "user_game_stats_user_id_users_id_fk": {2295          "name": "user_game_stats_user_id_users_id_fk",2296          "tableFrom": "user_game_stats",2297          "tableTo": "users",2298          "columnsFrom": [2299            "user_id"2300          ],2301          "columnsTo": [2302            "id"2303          ],2304          "onDelete": "cascade",2305          "onUpdate": "no action"2306        },2307        "user_game_stats_game_id_games_id_fk": {2308          "name": "user_game_stats_game_id_games_id_fk",2309          "tableFrom": "user_game_stats",2310          "tableTo": "games",2311          "columnsFrom": [2312            "game_id"2313          ],2314          "columnsTo": [2315            "id"2316          ],2317          "onDelete": "cascade",2318          "onUpdate": "no action"2319        }2320      },2321      "compositePrimaryKeys": {2322        "user_game_stats_user_id_game_id_pk": {2323          "name": "user_game_stats_user_id_game_id_pk",2324          "columns": [2325            "user_id",2326            "game_id"2327          ]2328        }2329      },2330      "uniqueConstraints": {},2331      "policies": {},2332      "checkConstraints": {},2333      "isRLSEnabled": false2334    },2335    "public.user_missions": {2336      "name": "user_missions",2337      "schema": "",2338      "columns": {2339        "id": {2340          "name": "id",2341          "type": "uuid",2342          "primaryKey": true,2343          "notNull": true,2344          "default": "gen_random_uuid()"2345        },2346        "user_id": {2347          "name": "user_id",2348          "type": "uuid",2349          "primaryKey": false,2350          "notNull": true2351        },2352        "mission_key": {2353          "name": "mission_key",2354          "type": "varchar(48)",2355          "primaryKey": false,2356          "notNull": true2357        },2358        "period_key": {2359          "name": "period_key",2360          "type": "varchar(16)",2361          "primaryKey": false,2362          "notNull": true2363        },2364        "progress": {2365          "name": "progress",2366          "type": "bigint",2367          "primaryKey": false,2368          "notNull": true,2369          "default": 02370        },2371        "progress_set": {2372          "name": "progress_set",2373          "type": "text[]",2374          "primaryKey": false,2375          "notNull": true,2376          "default": "'{}'::text[]"2377        },2378        "completed_at": {2379          "name": "completed_at",2380          "type": "timestamp with time zone",2381          "primaryKey": false,2382          "notNull": false2383        },2384        "claimed_at": {2385          "name": "claimed_at",2386          "type": "timestamp with time zone",2387          "primaryKey": false,2388          "notNull": false2389        },2390        "expires_at": {2391          "name": "expires_at",2392          "type": "timestamp with time zone",2393          "primaryKey": false,2394          "notNull": true2395        }2396      },2397      "indexes": {2398        "user_missions_unique_idx": {2399          "name": "user_missions_unique_idx",2400          "columns": [2401            {2402              "expression": "user_id",2403              "isExpression": false,2404              "asc": true,2405              "nulls": "last"2406            },2407            {2408              "expression": "mission_key",2409              "isExpression": false,2410              "asc": true,2411              "nulls": "last"2412            },2413            {2414              "expression": "period_key",2415              "isExpression": false,2416              "asc": true,2417              "nulls": "last"2418            }2419          ],2420          "isUnique": true,2421          "concurrently": false,2422          "method": "btree",2423          "with": {}2424        },2425        "user_missions_user_idx": {2426          "name": "user_missions_user_idx",2427          "columns": [2428            {2429              "expression": "user_id",2430              "isExpression": false,2431              "asc": true,2432              "nulls": "last"2433            }2434          ],2435          "isUnique": false,2436          "concurrently": false,2437          "method": "btree",2438          "with": {}2439        }2440      },2441      "foreignKeys": {2442        "user_missions_user_id_users_id_fk": {2443          "name": "user_missions_user_id_users_id_fk",2444          "tableFrom": "user_missions",2445          "tableTo": "users",2446          "columnsFrom": [2447            "user_id"2448          ],2449          "columnsTo": [2450            "id"2451          ],2452          "onDelete": "cascade",2453          "onUpdate": "no action"2454        },2455        "user_missions_mission_key_missions_key_fk": {2456          "name": "user_missions_mission_key_missions_key_fk",2457          "tableFrom": "user_missions",2458          "tableTo": "missions",2459          "columnsFrom": [2460            "mission_key"2461          ],2462          "columnsTo": [2463            "key"2464          ],2465          "onDelete": "cascade",2466          "onUpdate": "no action"2467        }2468      },2469      "compositePrimaryKeys": {},2470      "uniqueConstraints": {},2471      "policies": {},2472      "checkConstraints": {},2473      "isRLSEnabled": false2474    },2475    "public.user_settings": {2476      "name": "user_settings",2477      "schema": "",2478      "columns": {2479        "user_id": {2480          "name": "user_id",2481          "type": "uuid",2482          "primaryKey": true,2483          "notNull": true2484        },2485        "sound_enabled": {2486          "name": "sound_enabled",2487          "type": "boolean",2488          "primaryKey": false,2489          "notNull": true,2490          "default": true2491        },2492        "music_volume": {2493          "name": "music_volume",2494          "type": "numeric(3, 2)",2495          "primaryKey": false,2496          "notNull": true,2497          "default": "'0.6'"2498        },2499        "effects_volume": {2500          "name": "effects_volume",2501          "type": "numeric(3, 2)",2502          "primaryKey": false,2503          "notNull": true,2504          "default": "'0.8'"2505        },2506        "master_volume": {2507          "name": "master_volume",2508          "type": "numeric(3, 2)",2509          "primaryKey": false,2510          "notNull": true,2511          "default": "'0.8'"2512        },2513        "reduce_motion": {2514          "name": "reduce_motion",2515          "type": "boolean",2516          "primaryKey": false,2517          "notNull": true,2518          "default": false2519        },2520        "animation_intensity": {2521          "name": "animation_intensity",2522          "type": "varchar(8)",2523          "primaryKey": false,2524          "notNull": true,2525          "default": "'high'"2526        },2527        "session_reminder_minutes": {2528          "name": "session_reminder_minutes",2529          "type": "integer",2530          "primaryKey": false,2531          "notNull": true,2532          "default": 602533        },2534        "break_reminder": {2535          "name": "break_reminder",2536          "type": "boolean",2537          "primaryKey": false,2538          "notNull": true,2539          "default": true2540        },2541        "leaderboard_opt_in": {2542          "name": "leaderboard_opt_in",2543          "type": "boolean",2544          "primaryKey": false,2545          "notNull": true,2546          "default": true2547        },2548        "updated_at": {2549          "name": "updated_at",2550          "type": "timestamp with time zone",2551          "primaryKey": false,2552          "notNull": true,2553          "default": "now()"2554        }2555      },2556      "indexes": {},2557      "foreignKeys": {2558        "user_settings_user_id_users_id_fk": {2559          "name": "user_settings_user_id_users_id_fk",2560          "tableFrom": "user_settings",2561          "tableTo": "users",2562          "columnsFrom": [2563            "user_id"2564          ],2565          "columnsTo": [2566            "id"2567          ],2568          "onDelete": "cascade",2569          "onUpdate": "no action"2570        }2571      },2572      "compositePrimaryKeys": {},2573      "uniqueConstraints": {},2574      "policies": {},2575      "checkConstraints": {},2576      "isRLSEnabled": false2577    },2578    "public.users": {2579      "name": "users",2580      "schema": "",2581      "columns": {2582        "id": {2583          "name": "id",2584          "type": "uuid",2585          "primaryKey": true,2586          "notNull": true,2587          "default": "gen_random_uuid()"2588        },2589        "username": {2590          "name": "username",2591          "type": "varchar(24)",2592          "primaryKey": false,2593          "notNull": true2594        },2595        "username_normalized": {2596          "name": "username_normalized",2597          "type": "varchar(24)",2598          "primaryKey": false,2599          "notNull": true2600        },2601        "password_hash": {2602          "name": "password_hash",2603          "type": "text",2604          "primaryKey": false,2605          "notNull": true2606        },2607        "level": {2608          "name": "level",2609          "type": "integer",2610          "primaryKey": false,2611          "notNull": true,2612          "default": 12613        },2614        "xp": {2615          "name": "xp",2616          "type": "bigint",2617          "primaryKey": false,2618          "notNull": true,2619          "default": 02620        },2621        "status": {2622          "name": "status",2623          "type": "varchar(16)",2624          "primaryKey": false,2625          "notNull": true,2626          "default": "'active'"2627        },2628        "age_confirmed_at": {2629          "name": "age_confirmed_at",2630          "type": "timestamp with time zone",2631          "primaryKey": false,2632          "notNull": false2633        },2634        "created_at": {2635          "name": "created_at",2636          "type": "timestamp with time zone",2637          "primaryKey": false,2638          "notNull": true,2639          "default": "now()"2640        },2641        "last_login_at": {2642          "name": "last_login_at",2643          "type": "timestamp with time zone",2644          "primaryKey": false,2645          "notNull": false2646        },2647        "last_rescue_at": {2648          "name": "last_rescue_at",2649          "type": "timestamp with time zone",2650          "primaryKey": false,2651          "notNull": false2652        },2653        "total_spins": {2654          "name": "total_spins",2655          "type": "bigint",2656          "primaryKey": false,2657          "notNull": true,2658          "default": 02659        },2660        "games_played": {2661          "name": "games_played",2662          "type": "integer",2663          "primaryKey": false,2664          "notNull": true,2665          "default": 02666        },2667        "biggest_win": {2668          "name": "biggest_win",2669          "type": "bigint",2670          "primaryKey": false,2671          "notNull": true,2672          "default": 02673        },2674        "biggest_multiplier": {2675          "name": "biggest_multiplier",2676          "type": "numeric(12, 2)",2677          "primaryKey": false,2678          "notNull": true,2679          "default": "'0'"2680        }2681      },2682      "indexes": {2683        "users_username_normalized_idx": {2684          "name": "users_username_normalized_idx",2685          "columns": [2686            {2687              "expression": "username_normalized",2688              "isExpression": false,2689              "asc": true,2690              "nulls": "last"2691            }2692          ],2693          "isUnique": true,2694          "concurrently": false,2695          "method": "btree",2696          "with": {}2697        },2698        "users_username_idx": {2699          "name": "users_username_idx",2700          "columns": [2701            {2702              "expression": "username",2703              "isExpression": false,2704              "asc": true,2705              "nulls": "last"2706            }2707          ],2708          "isUnique": true,2709          "concurrently": false,2710          "method": "btree",2711          "with": {}2712        }2713      },2714      "foreignKeys": {},2715      "compositePrimaryKeys": {},2716      "uniqueConstraints": {},2717      "policies": {},2718      "checkConstraints": {},2719      "isRLSEnabled": false2720    },2721    "public.wallets": {2722      "name": "wallets",2723      "schema": "",2724      "columns": {2725        "user_id": {2726          "name": "user_id",2727          "type": "uuid",2728          "primaryKey": true,2729          "notNull": true2730        },2731        "balance": {2732          "name": "balance",2733          "type": "bigint",2734          "primaryKey": false,2735          "notNull": true,2736          "default": 02737        },2738        "lifetime_wagered": {2739          "name": "lifetime_wagered",2740          "type": "bigint",2741          "primaryKey": false,2742          "notNull": true,2743          "default": 02744        },2745        "lifetime_won": {2746          "name": "lifetime_won",2747          "type": "bigint",2748          "primaryKey": false,2749          "notNull": true,2750          "default": 02751        },2752        "lifetime_granted": {2753          "name": "lifetime_granted",2754          "type": "bigint",2755          "primaryKey": false,2756          "notNull": true,2757          "default": 02758        },2759        "updated_at": {2760          "name": "updated_at",2761          "type": "timestamp with time zone",2762          "primaryKey": false,2763          "notNull": true,2764          "default": "now()"2765        }2766      },2767      "indexes": {},2768      "foreignKeys": {2769        "wallets_user_id_users_id_fk": {2770          "name": "wallets_user_id_users_id_fk",2771          "tableFrom": "wallets",2772          "tableTo": "users",2773          "columnsFrom": [2774            "user_id"2775          ],2776          "columnsTo": [2777            "id"2778          ],2779          "onDelete": "cascade",2780          "onUpdate": "no action"2781        }2782      },2783      "compositePrimaryKeys": {},2784      "uniqueConstraints": {},2785      "policies": {},2786      "checkConstraints": {},2787      "isRLSEnabled": false2788    }2789  },2790  "enums": {},2791  "schemas": {},2792  "sequences": {},2793  "roles": {},2794  "policies": {},2795  "views": {},2796  "_meta": {2797    "columns": {},2798    "schemas": {},2799    "tables": {}2800  }2801}