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%
75.3 KB · 2,988 lines json
Raw Blame History
1{2  "id": "2e2fe479-1d38-4656-9964-b1f0fda2ba45",3  "prevId": "423e47ca-9681-4a28-97a8-d582818cd2d7",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.arcade_sessions": {254      "name": "arcade_sessions",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        "state": {307          "name": "state",308          "type": "jsonb",309          "primaryKey": false,310          "notNull": true311        },312        "status": {313          "name": "status",314          "type": "varchar(12)",315          "primaryKey": false,316          "notNull": true,317          "default": "'running'"318        },319        "win": {320          "name": "win",321          "type": "bigint",322          "primaryKey": false,323          "notNull": true,324          "default": 0325        },326        "started_at": {327          "name": "started_at",328          "type": "timestamp with time zone",329          "primaryKey": false,330          "notNull": true,331          "default": "now()"332        },333        "updated_at": {334          "name": "updated_at",335          "type": "timestamp with time zone",336          "primaryKey": false,337          "notNull": true,338          "default": "now()"339        },340        "settled_at": {341          "name": "settled_at",342          "type": "timestamp with time zone",343          "primaryKey": false,344          "notNull": false345        }346      },347      "indexes": {348        "arcade_sessions_round_id_idx": {349          "name": "arcade_sessions_round_id_idx",350          "columns": [351            {352              "expression": "round_id",353              "isExpression": false,354              "asc": true,355              "nulls": "last"356            }357          ],358          "isUnique": true,359          "concurrently": false,360          "method": "btree",361          "with": {}362        },363        "arcade_sessions_user_client_idx": {364          "name": "arcade_sessions_user_client_idx",365          "columns": [366            {367              "expression": "user_id",368              "isExpression": false,369              "asc": true,370              "nulls": "last"371            },372            {373              "expression": "client_round_id",374              "isExpression": false,375              "asc": true,376              "nulls": "last"377            }378          ],379          "isUnique": true,380          "concurrently": false,381          "method": "btree",382          "with": {}383        },384        "arcade_sessions_user_status_idx": {385          "name": "arcade_sessions_user_status_idx",386          "columns": [387            {388              "expression": "user_id",389              "isExpression": false,390              "asc": true,391              "nulls": "last"392            },393            {394              "expression": "status",395              "isExpression": false,396              "asc": true,397              "nulls": "last"398            }399          ],400          "isUnique": false,401          "concurrently": false,402          "method": "btree",403          "with": {}404        }405      },406      "foreignKeys": {407        "arcade_sessions_user_id_users_id_fk": {408          "name": "arcade_sessions_user_id_users_id_fk",409          "tableFrom": "arcade_sessions",410          "tableTo": "users",411          "columnsFrom": [412            "user_id"413          ],414          "columnsTo": [415            "id"416          ],417          "onDelete": "cascade",418          "onUpdate": "no action"419        },420        "arcade_sessions_game_id_games_id_fk": {421          "name": "arcade_sessions_game_id_games_id_fk",422          "tableFrom": "arcade_sessions",423          "tableTo": "games",424          "columnsFrom": [425            "game_id"426          ],427          "columnsTo": [428            "id"429          ],430          "onDelete": "no action",431          "onUpdate": "no action"432        }433      },434      "compositePrimaryKeys": {},435      "uniqueConstraints": {},436      "policies": {},437      "checkConstraints": {},438      "isRLSEnabled": false439    },440    "public.crash_rounds": {441      "name": "crash_rounds",442      "schema": "",443      "columns": {444        "id": {445          "name": "id",446          "type": "uuid",447          "primaryKey": true,448          "notNull": true,449          "default": "gen_random_uuid()"450        },451        "round_id": {452          "name": "round_id",453          "type": "varchar(32)",454          "primaryKey": false,455          "notNull": true456        },457        "user_id": {458          "name": "user_id",459          "type": "uuid",460          "primaryKey": false,461          "notNull": true462        },463        "game_id": {464          "name": "game_id",465          "type": "uuid",466          "primaryKey": false,467          "notNull": true468        },469        "game_slug": {470          "name": "game_slug",471          "type": "varchar(64)",472          "primaryKey": false,473          "notNull": true474        },475        "game_version": {476          "name": "game_version",477          "type": "varchar(16)",478          "primaryKey": false,479          "notNull": true480        },481        "client_round_id": {482          "name": "client_round_id",483          "type": "uuid",484          "primaryKey": false,485          "notNull": true486        },487        "bet": {488          "name": "bet",489          "type": "bigint",490          "primaryKey": false,491          "notNull": true492        },493        "crash_multiplier": {494          "name": "crash_multiplier",495          "type": "numeric(12, 2)",496          "primaryKey": false,497          "notNull": true498        },499        "crash_at_ms": {500          "name": "crash_at_ms",501          "type": "integer",502          "primaryKey": false,503          "notNull": true504        },505        "seed": {506          "name": "seed",507          "type": "text",508          "primaryKey": false,509          "notNull": true510        },511        "commitment": {512          "name": "commitment",513          "type": "varchar(64)",514          "primaryKey": false,515          "notNull": true516        },517        "events": {518          "name": "events",519          "type": "jsonb",520          "primaryKey": false,521          "notNull": true,522          "default": "'[]'::jsonb"523        },524        "auto_cashout": {525          "name": "auto_cashout",526          "type": "numeric(12, 2)",527          "primaryKey": false,528          "notNull": false529        },530        "status": {531          "name": "status",532          "type": "varchar(12)",533          "primaryKey": false,534          "notNull": true,535          "default": "'running'"536        },537        "cashout_multiplier": {538          "name": "cashout_multiplier",539          "type": "numeric(12, 2)",540          "primaryKey": false,541          "notNull": false542        },543        "win": {544          "name": "win",545          "type": "bigint",546          "primaryKey": false,547          "notNull": true,548          "default": 0549        },550        "started_at": {551          "name": "started_at",552          "type": "timestamp with time zone",553          "primaryKey": false,554          "notNull": true,555          "default": "now()"556        },557        "settled_at": {558          "name": "settled_at",559          "type": "timestamp with time zone",560          "primaryKey": false,561          "notNull": false562        }563      },564      "indexes": {565        "crash_rounds_round_id_idx": {566          "name": "crash_rounds_round_id_idx",567          "columns": [568            {569              "expression": "round_id",570              "isExpression": false,571              "asc": true,572              "nulls": "last"573            }574          ],575          "isUnique": true,576          "concurrently": false,577          "method": "btree",578          "with": {}579        },580        "crash_rounds_user_client_idx": {581          "name": "crash_rounds_user_client_idx",582          "columns": [583            {584              "expression": "user_id",585              "isExpression": false,586              "asc": true,587              "nulls": "last"588            },589            {590              "expression": "client_round_id",591              "isExpression": false,592              "asc": true,593              "nulls": "last"594            }595          ],596          "isUnique": true,597          "concurrently": false,598          "method": "btree",599          "with": {}600        },601        "crash_rounds_user_status_idx": {602          "name": "crash_rounds_user_status_idx",603          "columns": [604            {605              "expression": "user_id",606              "isExpression": false,607              "asc": true,608              "nulls": "last"609            },610            {611              "expression": "status",612              "isExpression": false,613              "asc": true,614              "nulls": "last"615            }616          ],617          "isUnique": false,618          "concurrently": false,619          "method": "btree",620          "with": {}621        }622      },623      "foreignKeys": {624        "crash_rounds_user_id_users_id_fk": {625          "name": "crash_rounds_user_id_users_id_fk",626          "tableFrom": "crash_rounds",627          "tableTo": "users",628          "columnsFrom": [629            "user_id"630          ],631          "columnsTo": [632            "id"633          ],634          "onDelete": "cascade",635          "onUpdate": "no action"636        },637        "crash_rounds_game_id_games_id_fk": {638          "name": "crash_rounds_game_id_games_id_fk",639          "tableFrom": "crash_rounds",640          "tableTo": "games",641          "columnsFrom": [642            "game_id"643          ],644          "columnsTo": [645            "id"646          ],647          "onDelete": "no action",648          "onUpdate": "no action"649        }650      },651      "compositePrimaryKeys": {},652      "uniqueConstraints": {},653      "policies": {},654      "checkConstraints": {},655      "isRLSEnabled": false656    },657    "public.credit_transactions": {658      "name": "credit_transactions",659      "schema": "",660      "columns": {661        "id": {662          "name": "id",663          "type": "uuid",664          "primaryKey": true,665          "notNull": true,666          "default": "gen_random_uuid()"667        },668        "user_id": {669          "name": "user_id",670          "type": "uuid",671          "primaryKey": false,672          "notNull": true673        },674        "type": {675          "name": "type",676          "type": "varchar(24)",677          "primaryKey": false,678          "notNull": true679        },680        "amount": {681          "name": "amount",682          "type": "bigint",683          "primaryKey": false,684          "notNull": true685        },686        "balance_after": {687          "name": "balance_after",688          "type": "bigint",689          "primaryKey": false,690          "notNull": true691        },692        "reference": {693          "name": "reference",694          "type": "text",695          "primaryKey": false,696          "notNull": false697        },698        "meta": {699          "name": "meta",700          "type": "jsonb",701          "primaryKey": false,702          "notNull": false703        },704        "created_at": {705          "name": "created_at",706          "type": "timestamp with time zone",707          "primaryKey": false,708          "notNull": true,709          "default": "now()"710        }711      },712      "indexes": {713        "ctx_user_created_idx": {714          "name": "ctx_user_created_idx",715          "columns": [716            {717              "expression": "user_id",718              "isExpression": false,719              "asc": true,720              "nulls": "last"721            },722            {723              "expression": "created_at",724              "isExpression": false,725              "asc": true,726              "nulls": "last"727            }728          ],729          "isUnique": false,730          "concurrently": false,731          "method": "btree",732          "with": {}733        },734        "ctx_type_idx": {735          "name": "ctx_type_idx",736          "columns": [737            {738              "expression": "type",739              "isExpression": false,740              "asc": true,741              "nulls": "last"742            }743          ],744          "isUnique": false,745          "concurrently": false,746          "method": "btree",747          "with": {}748        },749        "ctx_reference_idx": {750          "name": "ctx_reference_idx",751          "columns": [752            {753              "expression": "reference",754              "isExpression": false,755              "asc": true,756              "nulls": "last"757            }758          ],759          "isUnique": false,760          "concurrently": false,761          "method": "btree",762          "with": {}763        }764      },765      "foreignKeys": {766        "credit_transactions_user_id_users_id_fk": {767          "name": "credit_transactions_user_id_users_id_fk",768          "tableFrom": "credit_transactions",769          "tableTo": "users",770          "columnsFrom": [771            "user_id"772          ],773          "columnsTo": [774            "id"775          ],776          "onDelete": "cascade",777          "onUpdate": "no action"778        }779      },780      "compositePrimaryKeys": {},781      "uniqueConstraints": {},782      "policies": {},783      "checkConstraints": {},784      "isRLSEnabled": false785    },786    "public.daily_rewards": {787      "name": "daily_rewards",788      "schema": "",789      "columns": {790        "user_id": {791          "name": "user_id",792          "type": "uuid",793          "primaryKey": true,794          "notNull": true795        },796        "streak_day": {797          "name": "streak_day",798          "type": "integer",799          "primaryKey": false,800          "notNull": true,801          "default": 0802        },803        "last_claimed_at": {804          "name": "last_claimed_at",805          "type": "timestamp with time zone",806          "primaryKey": false,807          "notNull": false808        },809        "next_available_at": {810          "name": "next_available_at",811          "type": "timestamp with time zone",812          "primaryKey": false,813          "notNull": false814        },815        "total_claimed": {816          "name": "total_claimed",817          "type": "bigint",818          "primaryKey": false,819          "notNull": true,820          "default": 0821        },822        "claims": {823          "name": "claims",824          "type": "integer",825          "primaryKey": false,826          "notNull": true,827          "default": 0828        }829      },830      "indexes": {},831      "foreignKeys": {832        "daily_rewards_user_id_users_id_fk": {833          "name": "daily_rewards_user_id_users_id_fk",834          "tableFrom": "daily_rewards",835          "tableTo": "users",836          "columnsFrom": [837            "user_id"838          ],839          "columnsTo": [840            "id"841          ],842          "onDelete": "cascade",843          "onUpdate": "no action"844        }845      },846      "compositePrimaryKeys": {},847      "uniqueConstraints": {},848      "policies": {},849      "checkConstraints": {},850      "isRLSEnabled": false851    },852    "public.favorites": {853      "name": "favorites",854      "schema": "",855      "columns": {856        "user_id": {857          "name": "user_id",858          "type": "uuid",859          "primaryKey": false,860          "notNull": true861        },862        "game_id": {863          "name": "game_id",864          "type": "uuid",865          "primaryKey": false,866          "notNull": true867        },868        "created_at": {869          "name": "created_at",870          "type": "timestamp with time zone",871          "primaryKey": false,872          "notNull": true,873          "default": "now()"874        }875      },876      "indexes": {},877      "foreignKeys": {878        "favorites_user_id_users_id_fk": {879          "name": "favorites_user_id_users_id_fk",880          "tableFrom": "favorites",881          "tableTo": "users",882          "columnsFrom": [883            "user_id"884          ],885          "columnsTo": [886            "id"887          ],888          "onDelete": "cascade",889          "onUpdate": "no action"890        },891        "favorites_game_id_games_id_fk": {892          "name": "favorites_game_id_games_id_fk",893          "tableFrom": "favorites",894          "tableTo": "games",895          "columnsFrom": [896            "game_id"897          ],898          "columnsTo": [899            "id"900          ],901          "onDelete": "cascade",902          "onUpdate": "no action"903        }904      },905      "compositePrimaryKeys": {906        "favorites_user_id_game_id_pk": {907          "name": "favorites_user_id_game_id_pk",908          "columns": [909            "user_id",910            "game_id"911          ]912        }913      },914      "uniqueConstraints": {},915      "policies": {},916      "checkConstraints": {},917      "isRLSEnabled": false918    },919    "public.feature_flags": {920      "name": "feature_flags",921      "schema": "",922      "columns": {923        "key": {924          "name": "key",925          "type": "varchar(64)",926          "primaryKey": true,927          "notNull": true928        },929        "enabled": {930          "name": "enabled",931          "type": "boolean",932          "primaryKey": false,933          "notNull": true,934          "default": true935        },936        "description": {937          "name": "description",938          "type": "text",939          "primaryKey": false,940          "notNull": false941        },942        "updated_at": {943          "name": "updated_at",944          "type": "timestamp with time zone",945          "primaryKey": false,946          "notNull": true,947          "default": "now()"948        }949      },950      "indexes": {},951      "foreignKeys": {},952      "compositePrimaryKeys": {},953      "uniqueConstraints": {},954      "policies": {},955      "checkConstraints": {},956      "isRLSEnabled": false957    },958    "public.game_rounds": {959      "name": "game_rounds",960      "schema": "",961      "columns": {962        "id": {963          "name": "id",964          "type": "uuid",965          "primaryKey": true,966          "notNull": true,967          "default": "gen_random_uuid()"968        },969        "round_id": {970          "name": "round_id",971          "type": "varchar(32)",972          "primaryKey": false,973          "notNull": true974        },975        "user_id": {976          "name": "user_id",977          "type": "uuid",978          "primaryKey": false,979          "notNull": true980        },981        "game_id": {982          "name": "game_id",983          "type": "uuid",984          "primaryKey": false,985          "notNull": true986        },987        "game_slug": {988          "name": "game_slug",989          "type": "varchar(64)",990          "primaryKey": false,991          "notNull": true992        },993        "game_version": {994          "name": "game_version",995          "type": "varchar(16)",996          "primaryKey": false,997          "notNull": true998        },999        "client_round_id": {1000          "name": "client_round_id",1001          "type": "uuid",1002          "primaryKey": false,1003          "notNull": true1004        },1005        "bet": {1006          "name": "bet",1007          "type": "bigint",1008          "primaryKey": false,1009          "notNull": true1010        },1011        "win": {1012          "name": "win",1013          "type": "bigint",1014          "primaryKey": false,1015          "notNull": true1016        },1017        "multiplier": {1018          "name": "multiplier",1019          "type": "numeric(12, 4)",1020          "primaryKey": false,1021          "notNull": true1022        },1023        "balance_after": {1024          "name": "balance_after",1025          "type": "bigint",1026          "primaryKey": false,1027          "notNull": true1028        },1029        "result": {1030          "name": "result",1031          "type": "jsonb",1032          "primaryKey": false,1033          "notNull": true1034        },1035        "features": {1036          "name": "features",1037          "type": "text[]",1038          "primaryKey": false,1039          "notNull": true,1040          "default": "'{}'::text[]"1041        },1042        "free_spins": {1043          "name": "free_spins",1044          "type": "boolean",1045          "primaryKey": false,1046          "notNull": true,1047          "default": false1048        },1049        "bonus": {1050          "name": "bonus",1051          "type": "boolean",1052          "primaryKey": false,1053          "notNull": true,1054          "default": false1055        },1056        "jackpot_tier": {1057          "name": "jackpot_tier",1058          "type": "varchar(8)",1059          "primaryKey": false,1060          "notNull": false1061        },1062        "rng_reference": {1063          "name": "rng_reference",1064          "type": "text",1065          "primaryKey": false,1066          "notNull": true1067        },1068        "duration_ms": {1069          "name": "duration_ms",1070          "type": "integer",1071          "primaryKey": false,1072          "notNull": false1073        },1074        "created_at": {1075          "name": "created_at",1076          "type": "timestamp with time zone",1077          "primaryKey": false,1078          "notNull": true,1079          "default": "now()"1080        }1081      },1082      "indexes": {1083        "game_rounds_round_id_idx": {1084          "name": "game_rounds_round_id_idx",1085          "columns": [1086            {1087              "expression": "round_id",1088              "isExpression": false,1089              "asc": true,1090              "nulls": "last"1091            }1092          ],1093          "isUnique": true,1094          "concurrently": false,1095          "method": "btree",1096          "with": {}1097        },1098        "game_rounds_user_client_idx": {1099          "name": "game_rounds_user_client_idx",1100          "columns": [1101            {1102              "expression": "user_id",1103              "isExpression": false,1104              "asc": true,1105              "nulls": "last"1106            },1107            {1108              "expression": "client_round_id",1109              "isExpression": false,1110              "asc": true,1111              "nulls": "last"1112            }1113          ],1114          "isUnique": true,1115          "concurrently": false,1116          "method": "btree",1117          "with": {}1118        },1119        "game_rounds_user_created_idx": {1120          "name": "game_rounds_user_created_idx",1121          "columns": [1122            {1123              "expression": "user_id",1124              "isExpression": false,1125              "asc": true,1126              "nulls": "last"1127            },1128            {1129              "expression": "created_at",1130              "isExpression": false,1131              "asc": true,1132              "nulls": "last"1133            }1134          ],1135          "isUnique": false,1136          "concurrently": false,1137          "method": "btree",1138          "with": {}1139        },1140        "game_rounds_game_created_idx": {1141          "name": "game_rounds_game_created_idx",1142          "columns": [1143            {1144              "expression": "game_id",1145              "isExpression": false,1146              "asc": true,1147              "nulls": "last"1148            },1149            {1150              "expression": "created_at",1151              "isExpression": false,1152              "asc": true,1153              "nulls": "last"1154            }1155          ],1156          "isUnique": false,1157          "concurrently": false,1158          "method": "btree",1159          "with": {}1160        },1161        "game_rounds_created_idx": {1162          "name": "game_rounds_created_idx",1163          "columns": [1164            {1165              "expression": "created_at",1166              "isExpression": false,1167              "asc": true,1168              "nulls": "last"1169            }1170          ],1171          "isUnique": false,1172          "concurrently": false,1173          "method": "btree",1174          "with": {}1175        },1176        "game_rounds_win_idx": {1177          "name": "game_rounds_win_idx",1178          "columns": [1179            {1180              "expression": "win",1181              "isExpression": false,1182              "asc": true,1183              "nulls": "last"1184            }1185          ],1186          "isUnique": false,1187          "concurrently": false,1188          "method": "btree",1189          "with": {}1190        }1191      },1192      "foreignKeys": {1193        "game_rounds_user_id_users_id_fk": {1194          "name": "game_rounds_user_id_users_id_fk",1195          "tableFrom": "game_rounds",1196          "tableTo": "users",1197          "columnsFrom": [1198            "user_id"1199          ],1200          "columnsTo": [1201            "id"1202          ],1203          "onDelete": "cascade",1204          "onUpdate": "no action"1205        },1206        "game_rounds_game_id_games_id_fk": {1207          "name": "game_rounds_game_id_games_id_fk",1208          "tableFrom": "game_rounds",1209          "tableTo": "games",1210          "columnsFrom": [1211            "game_id"1212          ],1213          "columnsTo": [1214            "id"1215          ],1216          "onDelete": "no action",1217          "onUpdate": "no action"1218        }1219      },1220      "compositePrimaryKeys": {},1221      "uniqueConstraints": {},1222      "policies": {},1223      "checkConstraints": {},1224      "isRLSEnabled": false1225    },1226    "public.game_states": {1227      "name": "game_states",1228      "schema": "",1229      "columns": {1230        "user_id": {1231          "name": "user_id",1232          "type": "uuid",1233          "primaryKey": false,1234          "notNull": true1235        },1236        "game_id": {1237          "name": "game_id",1238          "type": "uuid",1239          "primaryKey": false,1240          "notNull": true1241        },1242        "state": {1243          "name": "state",1244          "type": "jsonb",1245          "primaryKey": false,1246          "notNull": true1247        },1248        "updated_at": {1249          "name": "updated_at",1250          "type": "timestamp with time zone",1251          "primaryKey": false,1252          "notNull": true,1253          "default": "now()"1254        }1255      },1256      "indexes": {},1257      "foreignKeys": {1258        "game_states_user_id_users_id_fk": {1259          "name": "game_states_user_id_users_id_fk",1260          "tableFrom": "game_states",1261          "tableTo": "users",1262          "columnsFrom": [1263            "user_id"1264          ],1265          "columnsTo": [1266            "id"1267          ],1268          "onDelete": "cascade",1269          "onUpdate": "no action"1270        },1271        "game_states_game_id_games_id_fk": {1272          "name": "game_states_game_id_games_id_fk",1273          "tableFrom": "game_states",1274          "tableTo": "games",1275          "columnsFrom": [1276            "game_id"1277          ],1278          "columnsTo": [1279            "id"1280          ],1281          "onDelete": "cascade",1282          "onUpdate": "no action"1283        }1284      },1285      "compositePrimaryKeys": {1286        "game_states_user_id_game_id_pk": {1287          "name": "game_states_user_id_game_id_pk",1288          "columns": [1289            "user_id",1290            "game_id"1291          ]1292        }1293      },1294      "uniqueConstraints": {},1295      "policies": {},1296      "checkConstraints": {},1297      "isRLSEnabled": false1298    },1299    "public.game_statistics": {1300      "name": "game_statistics",1301      "schema": "",1302      "columns": {1303        "game_id": {1304          "name": "game_id",1305          "type": "uuid",1306          "primaryKey": true,1307          "notNull": true1308        },1309        "launches": {1310          "name": "launches",1311          "type": "bigint",1312          "primaryKey": false,1313          "notNull": true,1314          "default": 01315        },1316        "spins": {1317          "name": "spins",1318          "type": "bigint",1319          "primaryKey": false,1320          "notNull": true,1321          "default": 01322        },1323        "wagered": {1324          "name": "wagered",1325          "type": "bigint",1326          "primaryKey": false,1327          "notNull": true,1328          "default": 01329        },1330        "won": {1331          "name": "won",1332          "type": "bigint",1333          "primaryKey": false,1334          "notNull": true,1335          "default": 01336        },1337        "wins": {1338          "name": "wins",1339          "type": "bigint",1340          "primaryKey": false,1341          "notNull": true,1342          "default": 01343        },1344        "bonuses": {1345          "name": "bonuses",1346          "type": "bigint",1347          "primaryKey": false,1348          "notNull": true,1349          "default": 01350        },1351        "free_spins": {1352          "name": "free_spins",1353          "type": "bigint",1354          "primaryKey": false,1355          "notNull": true,1356          "default": 01357        },1358        "big_wins": {1359          "name": "big_wins",1360          "type": "bigint",1361          "primaryKey": false,1362          "notNull": true,1363          "default": 01364        },1365        "max_win": {1366          "name": "max_win",1367          "type": "bigint",1368          "primaryKey": false,1369          "notNull": true,1370          "default": 01371        },1372        "max_multiplier": {1373          "name": "max_multiplier",1374          "type": "numeric(12, 2)",1375          "primaryKey": false,1376          "notNull": true,1377          "default": "'0'"1378        },1379        "favorites": {1380          "name": "favorites",1381          "type": "integer",1382          "primaryKey": false,1383          "notNull": true,1384          "default": 01385        },1386        "updated_at": {1387          "name": "updated_at",1388          "type": "timestamp with time zone",1389          "primaryKey": false,1390          "notNull": true,1391          "default": "now()"1392        }1393      },1394      "indexes": {},1395      "foreignKeys": {1396        "game_statistics_game_id_games_id_fk": {1397          "name": "game_statistics_game_id_games_id_fk",1398          "tableFrom": "game_statistics",1399          "tableTo": "games",1400          "columnsFrom": [1401            "game_id"1402          ],1403          "columnsTo": [1404            "id"1405          ],1406          "onDelete": "cascade",1407          "onUpdate": "no action"1408        }1409      },1410      "compositePrimaryKeys": {},1411      "uniqueConstraints": {},1412      "policies": {},1413      "checkConstraints": {},1414      "isRLSEnabled": false1415    },1416    "public.game_versions": {1417      "name": "game_versions",1418      "schema": "",1419      "columns": {1420        "id": {1421          "name": "id",1422          "type": "uuid",1423          "primaryKey": true,1424          "notNull": true,1425          "default": "gen_random_uuid()"1426        },1427        "game_id": {1428          "name": "game_id",1429          "type": "uuid",1430          "primaryKey": false,1431          "notNull": true1432        },1433        "version": {1434          "name": "version",1435          "type": "varchar(16)",1436          "primaryKey": false,1437          "notNull": true1438        },1439        "definition": {1440          "name": "definition",1441          "type": "jsonb",1442          "primaryKey": false,1443          "notNull": true1444        },1445        "definition_hash": {1446          "name": "definition_hash",1447          "type": "varchar(64)",1448          "primaryKey": false,1449          "notNull": true1450        },1451        "certification": {1452          "name": "certification",1453          "type": "jsonb",1454          "primaryKey": false,1455          "notNull": false1456        },1457        "status": {1458          "name": "status",1459          "type": "varchar(16)",1460          "primaryKey": false,1461          "notNull": true,1462          "default": "'draft'"1463        },1464        "created_at": {1465          "name": "created_at",1466          "type": "timestamp with time zone",1467          "primaryKey": false,1468          "notNull": true,1469          "default": "now()"1470        }1471      },1472      "indexes": {1473        "game_versions_game_version_idx": {1474          "name": "game_versions_game_version_idx",1475          "columns": [1476            {1477              "expression": "game_id",1478              "isExpression": false,1479              "asc": true,1480              "nulls": "last"1481            },1482            {1483              "expression": "version",1484              "isExpression": false,1485              "asc": true,1486              "nulls": "last"1487            }1488          ],1489          "isUnique": true,1490          "concurrently": false,1491          "method": "btree",1492          "with": {}1493        }1494      },1495      "foreignKeys": {1496        "game_versions_game_id_games_id_fk": {1497          "name": "game_versions_game_id_games_id_fk",1498          "tableFrom": "game_versions",1499          "tableTo": "games",1500          "columnsFrom": [1501            "game_id"1502          ],1503          "columnsTo": [1504            "id"1505          ],1506          "onDelete": "cascade",1507          "onUpdate": "no action"1508        }1509      },1510      "compositePrimaryKeys": {},1511      "uniqueConstraints": {},1512      "policies": {},1513      "checkConstraints": {},1514      "isRLSEnabled": false1515    },1516    "public.games": {1517      "name": "games",1518      "schema": "",1519      "columns": {1520        "id": {1521          "name": "id",1522          "type": "uuid",1523          "primaryKey": true,1524          "notNull": true,1525          "default": "gen_random_uuid()"1526        },1527        "slug": {1528          "name": "slug",1529          "type": "varchar(64)",1530          "primaryKey": false,1531          "notNull": true1532        },1533        "name": {1534          "name": "name",1535          "type": "varchar(80)",1536          "primaryKey": false,1537          "notNull": true1538        },1539        "version": {1540          "name": "version",1541          "type": "varchar(16)",1542          "primaryKey": false,1543          "notNull": true1544        },1545        "lifecycle": {1546          "name": "lifecycle",1547          "type": "varchar(16)",1548          "primaryKey": false,1549          "notNull": true,1550          "default": "'draft'"1551        },1552        "sort_order": {1553          "name": "sort_order",1554          "type": "integer",1555          "primaryKey": false,1556          "notNull": true,1557          "default": 01558        },1559        "is_featured": {1560          "name": "is_featured",1561          "type": "boolean",1562          "primaryKey": false,1563          "notNull": true,1564          "default": false1565        },1566        "is_new": {1567          "name": "is_new",1568          "type": "boolean",1569          "primaryKey": false,1570          "notNull": true,1571          "default": true1572        },1573        "summary": {1574          "name": "summary",1575          "type": "jsonb",1576          "primaryKey": false,1577          "notNull": true1578        },1579        "created_at": {1580          "name": "created_at",1581          "type": "timestamp with time zone",1582          "primaryKey": false,1583          "notNull": true,1584          "default": "now()"1585        },1586        "published_at": {1587          "name": "published_at",1588          "type": "timestamp with time zone",1589          "primaryKey": false,1590          "notNull": false1591        },1592        "updated_at": {1593          "name": "updated_at",1594          "type": "timestamp with time zone",1595          "primaryKey": false,1596          "notNull": true,1597          "default": "now()"1598        }1599      },1600      "indexes": {1601        "games_slug_idx": {1602          "name": "games_slug_idx",1603          "columns": [1604            {1605              "expression": "slug",1606              "isExpression": false,1607              "asc": true,1608              "nulls": "last"1609            }1610          ],1611          "isUnique": true,1612          "concurrently": false,1613          "method": "btree",1614          "with": {}1615        }1616      },1617      "foreignKeys": {},1618      "compositePrimaryKeys": {},1619      "uniqueConstraints": {},1620      "policies": {},1621      "checkConstraints": {},1622      "isRLSEnabled": false1623    },1624    "public.leaderboards": {1625      "name": "leaderboards",1626      "schema": "",1627      "columns": {1628        "id": {1629          "name": "id",1630          "type": "uuid",1631          "primaryKey": true,1632          "notNull": true,1633          "default": "gen_random_uuid()"1634        },1635        "category": {1636          "name": "category",1637          "type": "varchar(32)",1638          "primaryKey": false,1639          "notNull": true1640        },1641        "period_key": {1642          "name": "period_key",1643          "type": "varchar(16)",1644          "primaryKey": false,1645          "notNull": true1646        },1647        "user_id": {1648          "name": "user_id",1649          "type": "uuid",1650          "primaryKey": false,1651          "notNull": true1652        },1653        "value": {1654          "name": "value",1655          "type": "numeric(18, 2)",1656          "primaryKey": false,1657          "notNull": true1658        },1659        "game_slug": {1660          "name": "game_slug",1661          "type": "varchar(64)",1662          "primaryKey": false,1663          "notNull": false1664        },1665        "round_id": {1666          "name": "round_id",1667          "type": "varchar(32)",1668          "primaryKey": false,1669          "notNull": false1670        },1671        "updated_at": {1672          "name": "updated_at",1673          "type": "timestamp with time zone",1674          "primaryKey": false,1675          "notNull": true,1676          "default": "now()"1677        }1678      },1679      "indexes": {1680        "leaderboards_unique_idx": {1681          "name": "leaderboards_unique_idx",1682          "columns": [1683            {1684              "expression": "category",1685              "isExpression": false,1686              "asc": true,1687              "nulls": "last"1688            },1689            {1690              "expression": "period_key",1691              "isExpression": false,1692              "asc": true,1693              "nulls": "last"1694            },1695            {1696              "expression": "user_id",1697              "isExpression": false,1698              "asc": true,1699              "nulls": "last"1700            }1701          ],1702          "isUnique": true,1703          "concurrently": false,1704          "method": "btree",1705          "with": {}1706        },1707        "leaderboards_rank_idx": {1708          "name": "leaderboards_rank_idx",1709          "columns": [1710            {1711              "expression": "category",1712              "isExpression": false,1713              "asc": true,1714              "nulls": "last"1715            },1716            {1717              "expression": "period_key",1718              "isExpression": false,1719              "asc": true,1720              "nulls": "last"1721            },1722            {1723              "expression": "value",1724              "isExpression": false,1725              "asc": true,1726              "nulls": "last"1727            }1728          ],1729          "isUnique": false,1730          "concurrently": false,1731          "method": "btree",1732          "with": {}1733        }1734      },1735      "foreignKeys": {1736        "leaderboards_user_id_users_id_fk": {1737          "name": "leaderboards_user_id_users_id_fk",1738          "tableFrom": "leaderboards",1739          "tableTo": "users",1740          "columnsFrom": [1741            "user_id"1742          ],1743          "columnsTo": [1744            "id"1745          ],1746          "onDelete": "cascade",1747          "onUpdate": "no action"1748        }1749      },1750      "compositePrimaryKeys": {},1751      "uniqueConstraints": {},1752      "policies": {},1753      "checkConstraints": {},1754      "isRLSEnabled": false1755    },1756    "public.missions": {1757      "name": "missions",1758      "schema": "",1759      "columns": {1760        "key": {1761          "name": "key",1762          "type": "varchar(48)",1763          "primaryKey": true,1764          "notNull": true1765        },1766        "name": {1767          "name": "name",1768          "type": "varchar(80)",1769          "primaryKey": false,1770          "notNull": true1771        },1772        "description": {1773          "name": "description",1774          "type": "text",1775          "primaryKey": false,1776          "notNull": true1777        },1778        "period": {1779          "name": "period",1780          "type": "varchar(8)",1781          "primaryKey": false,1782          "notNull": true1783        },1784        "metric": {1785          "name": "metric",1786          "type": "varchar(32)",1787          "primaryKey": false,1788          "notNull": true1789        },1790        "target": {1791          "name": "target",1792          "type": "bigint",1793          "primaryKey": false,1794          "notNull": true1795        },1796        "reward_credits": {1797          "name": "reward_credits",1798          "type": "integer",1799          "primaryKey": false,1800          "notNull": true,1801          "default": 01802        },1803        "reward_xp": {1804          "name": "reward_xp",1805          "type": "integer",1806          "primaryKey": false,1807          "notNull": true,1808          "default": 01809        },1810        "enabled": {1811          "name": "enabled",1812          "type": "boolean",1813          "primaryKey": false,1814          "notNull": true,1815          "default": true1816        },1817        "sort_order": {1818          "name": "sort_order",1819          "type": "integer",1820          "primaryKey": false,1821          "notNull": true,1822          "default": 01823        }1824      },1825      "indexes": {},1826      "foreignKeys": {},1827      "compositePrimaryKeys": {},1828      "uniqueConstraints": {},1829      "policies": {},1830      "checkConstraints": {},1831      "isRLSEnabled": false1832    },1833    "public.platform_settings": {1834      "name": "platform_settings",1835      "schema": "",1836      "columns": {1837        "key": {1838          "name": "key",1839          "type": "varchar(64)",1840          "primaryKey": true,1841          "notNull": true1842        },1843        "value": {1844          "name": "value",1845          "type": "jsonb",1846          "primaryKey": false,1847          "notNull": true1848        },1849        "updated_at": {1850          "name": "updated_at",1851          "type": "timestamp with time zone",1852          "primaryKey": false,1853          "notNull": true,1854          "default": "now()"1855        }1856      },1857      "indexes": {},1858      "foreignKeys": {},1859      "compositePrimaryKeys": {},1860      "uniqueConstraints": {},1861      "policies": {},1862      "checkConstraints": {},1863      "isRLSEnabled": false1864    },1865    "public.player_levels": {1866      "name": "player_levels",1867      "schema": "",1868      "columns": {1869        "level": {1870          "name": "level",1871          "type": "integer",1872          "primaryKey": true,1873          "notNull": true1874        },1875        "xp_required": {1876          "name": "xp_required",1877          "type": "bigint",1878          "primaryKey": false,1879          "notNull": true1880        },1881        "xp_cumulative": {1882          "name": "xp_cumulative",1883          "type": "bigint",1884          "primaryKey": false,1885          "notNull": true1886        },1887        "reward_credits": {1888          "name": "reward_credits",1889          "type": "integer",1890          "primaryKey": false,1891          "notNull": true1892        },1893        "title": {1894          "name": "title",1895          "type": "varchar(48)",1896          "primaryKey": false,1897          "notNull": true1898        }1899      },1900      "indexes": {},1901      "foreignKeys": {},1902      "compositePrimaryKeys": {},1903      "uniqueConstraints": {},1904      "policies": {},1905      "checkConstraints": {},1906      "isRLSEnabled": false1907    },1908    "public.recovery_codes": {1909      "name": "recovery_codes",1910      "schema": "",1911      "columns": {1912        "user_id": {1913          "name": "user_id",1914          "type": "uuid",1915          "primaryKey": true,1916          "notNull": true1917        },1918        "code_hash": {1919          "name": "code_hash",1920          "type": "text",1921          "primaryKey": false,1922          "notNull": true1923        },1924        "created_at": {1925          "name": "created_at",1926          "type": "timestamp with time zone",1927          "primaryKey": false,1928          "notNull": true,1929          "default": "now()"1930        },1931        "rotated_at": {1932          "name": "rotated_at",1933          "type": "timestamp with time zone",1934          "primaryKey": false,1935          "notNull": false1936        },1937        "used_at": {1938          "name": "used_at",1939          "type": "timestamp with time zone",1940          "primaryKey": false,1941          "notNull": false1942        },1943        "use_count": {1944          "name": "use_count",1945          "type": "integer",1946          "primaryKey": false,1947          "notNull": true,1948          "default": 01949        }1950      },1951      "indexes": {},1952      "foreignKeys": {1953        "recovery_codes_user_id_users_id_fk": {1954          "name": "recovery_codes_user_id_users_id_fk",1955          "tableFrom": "recovery_codes",1956          "tableTo": "users",1957          "columnsFrom": [1958            "user_id"1959          ],1960          "columnsTo": [1961            "id"1962          ],1963          "onDelete": "cascade",1964          "onUpdate": "no action"1965        }1966      },1967      "compositePrimaryKeys": {},1968      "uniqueConstraints": {},1969      "policies": {},1970      "checkConstraints": {},1971      "isRLSEnabled": false1972    },1973    "public.security_events": {1974      "name": "security_events",1975      "schema": "",1976      "columns": {1977        "id": {1978          "name": "id",1979          "type": "uuid",1980          "primaryKey": true,1981          "notNull": true,1982          "default": "gen_random_uuid()"1983        },1984        "user_id": {1985          "name": "user_id",1986          "type": "uuid",1987          "primaryKey": false,1988          "notNull": false1989        },1990        "admin_id": {1991          "name": "admin_id",1992          "type": "uuid",1993          "primaryKey": false,1994          "notNull": false1995        },1996        "type": {1997          "name": "type",1998          "type": "varchar(48)",1999          "primaryKey": false,2000          "notNull": true2001        },2002        "severity": {2003          "name": "severity",2004          "type": "varchar(8)",2005          "primaryKey": false,2006          "notNull": true,2007          "default": "'info'"2008        },2009        "ip": {2010          "name": "ip",2011          "type": "varchar(64)",2012          "primaryKey": false,2013          "notNull": false2014        },2015        "user_agent": {2016          "name": "user_agent",2017          "type": "text",2018          "primaryKey": false,2019          "notNull": false2020        },2021        "meta": {2022          "name": "meta",2023          "type": "jsonb",2024          "primaryKey": false,2025          "notNull": false2026        },2027        "created_at": {2028          "name": "created_at",2029          "type": "timestamp with time zone",2030          "primaryKey": false,2031          "notNull": true,2032          "default": "now()"2033        }2034      },2035      "indexes": {2036        "security_events_created_idx": {2037          "name": "security_events_created_idx",2038          "columns": [2039            {2040              "expression": "created_at",2041              "isExpression": false,2042              "asc": true,2043              "nulls": "last"2044            }2045          ],2046          "isUnique": false,2047          "concurrently": false,2048          "method": "btree",2049          "with": {}2050        },2051        "security_events_type_idx": {2052          "name": "security_events_type_idx",2053          "columns": [2054            {2055              "expression": "type",2056              "isExpression": false,2057              "asc": true,2058              "nulls": "last"2059            }2060          ],2061          "isUnique": false,2062          "concurrently": false,2063          "method": "btree",2064          "with": {}2065        },2066        "security_events_user_idx": {2067          "name": "security_events_user_idx",2068          "columns": [2069            {2070              "expression": "user_id",2071              "isExpression": false,2072              "asc": true,2073              "nulls": "last"2074            }2075          ],2076          "isUnique": false,2077          "concurrently": false,2078          "method": "btree",2079          "with": {}2080        }2081      },2082      "foreignKeys": {2083        "security_events_user_id_users_id_fk": {2084          "name": "security_events_user_id_users_id_fk",2085          "tableFrom": "security_events",2086          "tableTo": "users",2087          "columnsFrom": [2088            "user_id"2089          ],2090          "columnsTo": [2091            "id"2092          ],2093          "onDelete": "set null",2094          "onUpdate": "no action"2095        }2096      },2097      "compositePrimaryKeys": {},2098      "uniqueConstraints": {},2099      "policies": {},2100      "checkConstraints": {},2101      "isRLSEnabled": false2102    },2103    "public.sessions": {2104      "name": "sessions",2105      "schema": "",2106      "columns": {2107        "id": {2108          "name": "id",2109          "type": "uuid",2110          "primaryKey": true,2111          "notNull": true,2112          "default": "gen_random_uuid()"2113        },2114        "user_id": {2115          "name": "user_id",2116          "type": "uuid",2117          "primaryKey": false,2118          "notNull": true2119        },2120        "token_hash": {2121          "name": "token_hash",2122          "type": "text",2123          "primaryKey": false,2124          "notNull": true2125        },2126        "created_at": {2127          "name": "created_at",2128          "type": "timestamp with time zone",2129          "primaryKey": false,2130          "notNull": true,2131          "default": "now()"2132        },2133        "expires_at": {2134          "name": "expires_at",2135          "type": "timestamp with time zone",2136          "primaryKey": false,2137          "notNull": true2138        },2139        "last_seen_at": {2140          "name": "last_seen_at",2141          "type": "timestamp with time zone",2142          "primaryKey": false,2143          "notNull": true,2144          "default": "now()"2145        },2146        "user_agent": {2147          "name": "user_agent",2148          "type": "text",2149          "primaryKey": false,2150          "notNull": false2151        },2152        "ip": {2153          "name": "ip",2154          "type": "varchar(64)",2155          "primaryKey": false,2156          "notNull": false2157        }2158      },2159      "indexes": {2160        "sessions_token_hash_idx": {2161          "name": "sessions_token_hash_idx",2162          "columns": [2163            {2164              "expression": "token_hash",2165              "isExpression": false,2166              "asc": true,2167              "nulls": "last"2168            }2169          ],2170          "isUnique": true,2171          "concurrently": false,2172          "method": "btree",2173          "with": {}2174        },2175        "sessions_user_idx": {2176          "name": "sessions_user_idx",2177          "columns": [2178            {2179              "expression": "user_id",2180              "isExpression": false,2181              "asc": true,2182              "nulls": "last"2183            }2184          ],2185          "isUnique": false,2186          "concurrently": false,2187          "method": "btree",2188          "with": {}2189        }2190      },2191      "foreignKeys": {2192        "sessions_user_id_users_id_fk": {2193          "name": "sessions_user_id_users_id_fk",2194          "tableFrom": "sessions",2195          "tableTo": "users",2196          "columnsFrom": [2197            "user_id"2198          ],2199          "columnsTo": [2200            "id"2201          ],2202          "onDelete": "cascade",2203          "onUpdate": "no action"2204        }2205      },2206      "compositePrimaryKeys": {},2207      "uniqueConstraints": {},2208      "policies": {},2209      "checkConstraints": {},2210      "isRLSEnabled": false2211    },2212    "public.simulation_runs": {2213      "name": "simulation_runs",2214      "schema": "",2215      "columns": {2216        "id": {2217          "name": "id",2218          "type": "uuid",2219          "primaryKey": true,2220          "notNull": true,2221          "default": "gen_random_uuid()"2222        },2223        "game_slug": {2224          "name": "game_slug",2225          "type": "varchar(64)",2226          "primaryKey": false,2227          "notNull": true2228        },2229        "game_version": {2230          "name": "game_version",2231          "type": "varchar(16)",2232          "primaryKey": false,2233          "notNull": true2234        },2235        "spins": {2236          "name": "spins",2237          "type": "bigint",2238          "primaryKey": false,2239          "notNull": true2240        },2241        "status": {2242          "name": "status",2243          "type": "varchar(16)",2244          "primaryKey": false,2245          "notNull": true,2246          "default": "'running'"2247        },2248        "progress": {2249          "name": "progress",2250          "type": "bigint",2251          "primaryKey": false,2252          "notNull": true,2253          "default": 02254        },2255        "result": {2256          "name": "result",2257          "type": "jsonb",2258          "primaryKey": false,2259          "notNull": false2260        },2261        "error": {2262          "name": "error",2263          "type": "text",2264          "primaryKey": false,2265          "notNull": false2266        },2267        "requested_by": {2268          "name": "requested_by",2269          "type": "uuid",2270          "primaryKey": false,2271          "notNull": false2272        },2273        "created_at": {2274          "name": "created_at",2275          "type": "timestamp with time zone",2276          "primaryKey": false,2277          "notNull": true,2278          "default": "now()"2279        },2280        "finished_at": {2281          "name": "finished_at",2282          "type": "timestamp with time zone",2283          "primaryKey": false,2284          "notNull": false2285        }2286      },2287      "indexes": {2288        "simulation_runs_game_idx": {2289          "name": "simulation_runs_game_idx",2290          "columns": [2291            {2292              "expression": "game_slug",2293              "isExpression": false,2294              "asc": true,2295              "nulls": "last"2296            },2297            {2298              "expression": "created_at",2299              "isExpression": false,2300              "asc": true,2301              "nulls": "last"2302            }2303          ],2304          "isUnique": false,2305          "concurrently": false,2306          "method": "btree",2307          "with": {}2308        }2309      },2310      "foreignKeys": {},2311      "compositePrimaryKeys": {},2312      "uniqueConstraints": {},2313      "policies": {},2314      "checkConstraints": {},2315      "isRLSEnabled": false2316    },2317    "public.user_achievements": {2318      "name": "user_achievements",2319      "schema": "",2320      "columns": {2321        "user_id": {2322          "name": "user_id",2323          "type": "uuid",2324          "primaryKey": false,2325          "notNull": true2326        },2327        "achievement_key": {2328          "name": "achievement_key",2329          "type": "varchar(48)",2330          "primaryKey": false,2331          "notNull": true2332        },2333        "unlocked_at": {2334          "name": "unlocked_at",2335          "type": "timestamp with time zone",2336          "primaryKey": false,2337          "notNull": true,2338          "default": "now()"2339        }2340      },2341      "indexes": {},2342      "foreignKeys": {2343        "user_achievements_user_id_users_id_fk": {2344          "name": "user_achievements_user_id_users_id_fk",2345          "tableFrom": "user_achievements",2346          "tableTo": "users",2347          "columnsFrom": [2348            "user_id"2349          ],2350          "columnsTo": [2351            "id"2352          ],2353          "onDelete": "cascade",2354          "onUpdate": "no action"2355        },2356        "user_achievements_achievement_key_achievements_key_fk": {2357          "name": "user_achievements_achievement_key_achievements_key_fk",2358          "tableFrom": "user_achievements",2359          "tableTo": "achievements",2360          "columnsFrom": [2361            "achievement_key"2362          ],2363          "columnsTo": [2364            "key"2365          ],2366          "onDelete": "cascade",2367          "onUpdate": "no action"2368        }2369      },2370      "compositePrimaryKeys": {2371        "user_achievements_user_id_achievement_key_pk": {2372          "name": "user_achievements_user_id_achievement_key_pk",2373          "columns": [2374            "user_id",2375            "achievement_key"2376          ]2377        }2378      },2379      "uniqueConstraints": {},2380      "policies": {},2381      "checkConstraints": {},2382      "isRLSEnabled": false2383    },2384    "public.user_game_stats": {2385      "name": "user_game_stats",2386      "schema": "",2387      "columns": {2388        "user_id": {2389          "name": "user_id",2390          "type": "uuid",2391          "primaryKey": false,2392          "notNull": true2393        },2394        "game_id": {2395          "name": "game_id",2396          "type": "uuid",2397          "primaryKey": false,2398          "notNull": true2399        },2400        "spins": {2401          "name": "spins",2402          "type": "bigint",2403          "primaryKey": false,2404          "notNull": true,2405          "default": 02406        },2407        "wagered": {2408          "name": "wagered",2409          "type": "bigint",2410          "primaryKey": false,2411          "notNull": true,2412          "default": 02413        },2414        "won": {2415          "name": "won",2416          "type": "bigint",2417          "primaryKey": false,2418          "notNull": true,2419          "default": 02420        },2421        "bonuses": {2422          "name": "bonuses",2423          "type": "integer",2424          "primaryKey": false,2425          "notNull": true,2426          "default": 02427        },2428        "biggest_win": {2429          "name": "biggest_win",2430          "type": "bigint",2431          "primaryKey": false,2432          "notNull": true,2433          "default": 02434        },2435        "biggest_multiplier": {2436          "name": "biggest_multiplier",2437          "type": "numeric(12, 2)",2438          "primaryKey": false,2439          "notNull": true,2440          "default": "'0'"2441        },2442        "last_played_at": {2443          "name": "last_played_at",2444          "type": "timestamp with time zone",2445          "primaryKey": false,2446          "notNull": true,2447          "default": "now()"2448        },2449        "first_played_at": {2450          "name": "first_played_at",2451          "type": "timestamp with time zone",2452          "primaryKey": false,2453          "notNull": true,2454          "default": "now()"2455        }2456      },2457      "indexes": {2458        "ugs_user_last_idx": {2459          "name": "ugs_user_last_idx",2460          "columns": [2461            {2462              "expression": "user_id",2463              "isExpression": false,2464              "asc": true,2465              "nulls": "last"2466            },2467            {2468              "expression": "last_played_at",2469              "isExpression": false,2470              "asc": true,2471              "nulls": "last"2472            }2473          ],2474          "isUnique": false,2475          "concurrently": false,2476          "method": "btree",2477          "with": {}2478        }2479      },2480      "foreignKeys": {2481        "user_game_stats_user_id_users_id_fk": {2482          "name": "user_game_stats_user_id_users_id_fk",2483          "tableFrom": "user_game_stats",2484          "tableTo": "users",2485          "columnsFrom": [2486            "user_id"2487          ],2488          "columnsTo": [2489            "id"2490          ],2491          "onDelete": "cascade",2492          "onUpdate": "no action"2493        },2494        "user_game_stats_game_id_games_id_fk": {2495          "name": "user_game_stats_game_id_games_id_fk",2496          "tableFrom": "user_game_stats",2497          "tableTo": "games",2498          "columnsFrom": [2499            "game_id"2500          ],2501          "columnsTo": [2502            "id"2503          ],2504          "onDelete": "cascade",2505          "onUpdate": "no action"2506        }2507      },2508      "compositePrimaryKeys": {2509        "user_game_stats_user_id_game_id_pk": {2510          "name": "user_game_stats_user_id_game_id_pk",2511          "columns": [2512            "user_id",2513            "game_id"2514          ]2515        }2516      },2517      "uniqueConstraints": {},2518      "policies": {},2519      "checkConstraints": {},2520      "isRLSEnabled": false2521    },2522    "public.user_missions": {2523      "name": "user_missions",2524      "schema": "",2525      "columns": {2526        "id": {2527          "name": "id",2528          "type": "uuid",2529          "primaryKey": true,2530          "notNull": true,2531          "default": "gen_random_uuid()"2532        },2533        "user_id": {2534          "name": "user_id",2535          "type": "uuid",2536          "primaryKey": false,2537          "notNull": true2538        },2539        "mission_key": {2540          "name": "mission_key",2541          "type": "varchar(48)",2542          "primaryKey": false,2543          "notNull": true2544        },2545        "period_key": {2546          "name": "period_key",2547          "type": "varchar(16)",2548          "primaryKey": false,2549          "notNull": true2550        },2551        "progress": {2552          "name": "progress",2553          "type": "bigint",2554          "primaryKey": false,2555          "notNull": true,2556          "default": 02557        },2558        "progress_set": {2559          "name": "progress_set",2560          "type": "text[]",2561          "primaryKey": false,2562          "notNull": true,2563          "default": "'{}'::text[]"2564        },2565        "completed_at": {2566          "name": "completed_at",2567          "type": "timestamp with time zone",2568          "primaryKey": false,2569          "notNull": false2570        },2571        "claimed_at": {2572          "name": "claimed_at",2573          "type": "timestamp with time zone",2574          "primaryKey": false,2575          "notNull": false2576        },2577        "expires_at": {2578          "name": "expires_at",2579          "type": "timestamp with time zone",2580          "primaryKey": false,2581          "notNull": true2582        }2583      },2584      "indexes": {2585        "user_missions_unique_idx": {2586          "name": "user_missions_unique_idx",2587          "columns": [2588            {2589              "expression": "user_id",2590              "isExpression": false,2591              "asc": true,2592              "nulls": "last"2593            },2594            {2595              "expression": "mission_key",2596              "isExpression": false,2597              "asc": true,2598              "nulls": "last"2599            },2600            {2601              "expression": "period_key",2602              "isExpression": false,2603              "asc": true,2604              "nulls": "last"2605            }2606          ],2607          "isUnique": true,2608          "concurrently": false,2609          "method": "btree",2610          "with": {}2611        },2612        "user_missions_user_idx": {2613          "name": "user_missions_user_idx",2614          "columns": [2615            {2616              "expression": "user_id",2617              "isExpression": false,2618              "asc": true,2619              "nulls": "last"2620            }2621          ],2622          "isUnique": false,2623          "concurrently": false,2624          "method": "btree",2625          "with": {}2626        }2627      },2628      "foreignKeys": {2629        "user_missions_user_id_users_id_fk": {2630          "name": "user_missions_user_id_users_id_fk",2631          "tableFrom": "user_missions",2632          "tableTo": "users",2633          "columnsFrom": [2634            "user_id"2635          ],2636          "columnsTo": [2637            "id"2638          ],2639          "onDelete": "cascade",2640          "onUpdate": "no action"2641        },2642        "user_missions_mission_key_missions_key_fk": {2643          "name": "user_missions_mission_key_missions_key_fk",2644          "tableFrom": "user_missions",2645          "tableTo": "missions",2646          "columnsFrom": [2647            "mission_key"2648          ],2649          "columnsTo": [2650            "key"2651          ],2652          "onDelete": "cascade",2653          "onUpdate": "no action"2654        }2655      },2656      "compositePrimaryKeys": {},2657      "uniqueConstraints": {},2658      "policies": {},2659      "checkConstraints": {},2660      "isRLSEnabled": false2661    },2662    "public.user_settings": {2663      "name": "user_settings",2664      "schema": "",2665      "columns": {2666        "user_id": {2667          "name": "user_id",2668          "type": "uuid",2669          "primaryKey": true,2670          "notNull": true2671        },2672        "sound_enabled": {2673          "name": "sound_enabled",2674          "type": "boolean",2675          "primaryKey": false,2676          "notNull": true,2677          "default": true2678        },2679        "music_volume": {2680          "name": "music_volume",2681          "type": "numeric(3, 2)",2682          "primaryKey": false,2683          "notNull": true,2684          "default": "'0.6'"2685        },2686        "effects_volume": {2687          "name": "effects_volume",2688          "type": "numeric(3, 2)",2689          "primaryKey": false,2690          "notNull": true,2691          "default": "'0.8'"2692        },2693        "master_volume": {2694          "name": "master_volume",2695          "type": "numeric(3, 2)",2696          "primaryKey": false,2697          "notNull": true,2698          "default": "'0.8'"2699        },2700        "reduce_motion": {2701          "name": "reduce_motion",2702          "type": "boolean",2703          "primaryKey": false,2704          "notNull": true,2705          "default": false2706        },2707        "animation_intensity": {2708          "name": "animation_intensity",2709          "type": "varchar(8)",2710          "primaryKey": false,2711          "notNull": true,2712          "default": "'high'"2713        },2714        "session_reminder_minutes": {2715          "name": "session_reminder_minutes",2716          "type": "integer",2717          "primaryKey": false,2718          "notNull": true,2719          "default": 602720        },2721        "break_reminder": {2722          "name": "break_reminder",2723          "type": "boolean",2724          "primaryKey": false,2725          "notNull": true,2726          "default": true2727        },2728        "leaderboard_opt_in": {2729          "name": "leaderboard_opt_in",2730          "type": "boolean",2731          "primaryKey": false,2732          "notNull": true,2733          "default": true2734        },2735        "updated_at": {2736          "name": "updated_at",2737          "type": "timestamp with time zone",2738          "primaryKey": false,2739          "notNull": true,2740          "default": "now()"2741        }2742      },2743      "indexes": {},2744      "foreignKeys": {2745        "user_settings_user_id_users_id_fk": {2746          "name": "user_settings_user_id_users_id_fk",2747          "tableFrom": "user_settings",2748          "tableTo": "users",2749          "columnsFrom": [2750            "user_id"2751          ],2752          "columnsTo": [2753            "id"2754          ],2755          "onDelete": "cascade",2756          "onUpdate": "no action"2757        }2758      },2759      "compositePrimaryKeys": {},2760      "uniqueConstraints": {},2761      "policies": {},2762      "checkConstraints": {},2763      "isRLSEnabled": false2764    },2765    "public.users": {2766      "name": "users",2767      "schema": "",2768      "columns": {2769        "id": {2770          "name": "id",2771          "type": "uuid",2772          "primaryKey": true,2773          "notNull": true,2774          "default": "gen_random_uuid()"2775        },2776        "username": {2777          "name": "username",2778          "type": "varchar(24)",2779          "primaryKey": false,2780          "notNull": true2781        },2782        "username_normalized": {2783          "name": "username_normalized",2784          "type": "varchar(24)",2785          "primaryKey": false,2786          "notNull": true2787        },2788        "password_hash": {2789          "name": "password_hash",2790          "type": "text",2791          "primaryKey": false,2792          "notNull": true2793        },2794        "level": {2795          "name": "level",2796          "type": "integer",2797          "primaryKey": false,2798          "notNull": true,2799          "default": 12800        },2801        "xp": {2802          "name": "xp",2803          "type": "bigint",2804          "primaryKey": false,2805          "notNull": true,2806          "default": 02807        },2808        "status": {2809          "name": "status",2810          "type": "varchar(16)",2811          "primaryKey": false,2812          "notNull": true,2813          "default": "'active'"2814        },2815        "age_confirmed_at": {2816          "name": "age_confirmed_at",2817          "type": "timestamp with time zone",2818          "primaryKey": false,2819          "notNull": false2820        },2821        "created_at": {2822          "name": "created_at",2823          "type": "timestamp with time zone",2824          "primaryKey": false,2825          "notNull": true,2826          "default": "now()"2827        },2828        "last_login_at": {2829          "name": "last_login_at",2830          "type": "timestamp with time zone",2831          "primaryKey": false,2832          "notNull": false2833        },2834        "last_rescue_at": {2835          "name": "last_rescue_at",2836          "type": "timestamp with time zone",2837          "primaryKey": false,2838          "notNull": false2839        },2840        "total_spins": {2841          "name": "total_spins",2842          "type": "bigint",2843          "primaryKey": false,2844          "notNull": true,2845          "default": 02846        },2847        "games_played": {2848          "name": "games_played",2849          "type": "integer",2850          "primaryKey": false,2851          "notNull": true,2852          "default": 02853        },2854        "biggest_win": {2855          "name": "biggest_win",2856          "type": "bigint",2857          "primaryKey": false,2858          "notNull": true,2859          "default": 02860        },2861        "biggest_multiplier": {2862          "name": "biggest_multiplier",2863          "type": "numeric(12, 2)",2864          "primaryKey": false,2865          "notNull": true,2866          "default": "'0'"2867        }2868      },2869      "indexes": {2870        "users_username_normalized_idx": {2871          "name": "users_username_normalized_idx",2872          "columns": [2873            {2874              "expression": "username_normalized",2875              "isExpression": false,2876              "asc": true,2877              "nulls": "last"2878            }2879          ],2880          "isUnique": true,2881          "concurrently": false,2882          "method": "btree",2883          "with": {}2884        },2885        "users_username_idx": {2886          "name": "users_username_idx",2887          "columns": [2888            {2889              "expression": "username",2890              "isExpression": false,2891              "asc": true,2892              "nulls": "last"2893            }2894          ],2895          "isUnique": true,2896          "concurrently": false,2897          "method": "btree",2898          "with": {}2899        }2900      },2901      "foreignKeys": {},2902      "compositePrimaryKeys": {},2903      "uniqueConstraints": {},2904      "policies": {},2905      "checkConstraints": {},2906      "isRLSEnabled": false2907    },2908    "public.wallets": {2909      "name": "wallets",2910      "schema": "",2911      "columns": {2912        "user_id": {2913          "name": "user_id",2914          "type": "uuid",2915          "primaryKey": true,2916          "notNull": true2917        },2918        "balance": {2919          "name": "balance",2920          "type": "bigint",2921          "primaryKey": false,2922          "notNull": true,2923          "default": 02924        },2925        "lifetime_wagered": {2926          "name": "lifetime_wagered",2927          "type": "bigint",2928          "primaryKey": false,2929          "notNull": true,2930          "default": 02931        },2932        "lifetime_won": {2933          "name": "lifetime_won",2934          "type": "bigint",2935          "primaryKey": false,2936          "notNull": true,2937          "default": 02938        },2939        "lifetime_granted": {2940          "name": "lifetime_granted",2941          "type": "bigint",2942          "primaryKey": false,2943          "notNull": true,2944          "default": 02945        },2946        "updated_at": {2947          "name": "updated_at",2948          "type": "timestamp with time zone",2949          "primaryKey": false,2950          "notNull": true,2951          "default": "now()"2952        }2953      },2954      "indexes": {},2955      "foreignKeys": {2956        "wallets_user_id_users_id_fk": {2957          "name": "wallets_user_id_users_id_fk",2958          "tableFrom": "wallets",2959          "tableTo": "users",2960          "columnsFrom": [2961            "user_id"2962          ],2963          "columnsTo": [2964            "id"2965          ],2966          "onDelete": "cascade",2967          "onUpdate": "no action"2968        }2969      },2970      "compositePrimaryKeys": {},2971      "uniqueConstraints": {},2972      "policies": {},2973      "checkConstraints": {},2974      "isRLSEnabled": false2975    }2976  },2977  "enums": {},2978  "schemas": {},2979  "sequences": {},2980  "roles": {},2981  "policies": {},2982  "views": {},2983  "_meta": {2984    "columns": {},2985    "schemas": {},2986    "tables": {}2987  }2988}