A decentralized music tracking and discovery platform built on AT Protocol 🎵
listenbrainz spotify atproto lastfm musicbrainz scrobbling

add initial database migration

Changed files
+2951 -110
rockskyapi
+141 -26
rockskyapi/rocksky-auth/bun.lock
··· 60 60 "@types/node": "^22.13.0", 61 61 "@types/ramda": "^0.30.2", 62 62 "@types/service-worker-mock": "^2.0.1", 63 + "drizzle-kit": "^0.31.1", 63 64 "pkgroll": "^2.6.1", 64 65 "tsx": "^4.19.2", 65 66 "zx": "^8.5.4", ··· 139 140 140 141 "@datadog/pprof": ["@datadog/pprof@5.7.1", "", { "dependencies": { "delay": "^5.0.0", "node-gyp-build": "<4.0", "p-limit": "^3.1.0", "pprof-format": "^2.1.0", "source-map": "^0.7.4" } }, "sha512-D5XTxsaPG36x41vZZn8hsAeC7QQDx0rv1a1Uhxo5xCXUB/9rc19+I7iCnjgJS5aH0ShXdPVOWRClo16hOSKKSw=="], 141 142 142 - "@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.24.2", "", { "os": "aix", "cpu": "ppc64" }, "sha512-thpVCb/rhxE/BnMLQ7GReQLLN8q9qbHmI55F4489/ByVg2aQaQ6kbcLb6FHkocZzQhxc4gx0sCk0tJkKBFzDhA=="], 143 + "@drizzle-team/brocli": ["@drizzle-team/brocli@0.10.2", "", {}, "sha512-z33Il7l5dKjUgGULTqBsQBQwckHh5AbIuxhdsIxDDiZAzBOrZO6q9ogcWC65kU382AfynTfgNumVcNIjuIua6w=="], 143 144 144 - "@esbuild/android-arm": ["@esbuild/android-arm@0.24.2", "", { "os": "android", "cpu": "arm" }, "sha512-tmwl4hJkCfNHwFB3nBa8z1Uy3ypZpxqxfTQOcHX+xRByyYgunVbZ9MzUUfb0RxaHIMnbHagwAxuTL+tnNM+1/Q=="], 145 + "@esbuild-kit/core-utils": ["@esbuild-kit/core-utils@3.3.2", "", { "dependencies": { "esbuild": "~0.18.20", "source-map-support": "^0.5.21" } }, "sha512-sPRAnw9CdSsRmEtnsl2WXWdyquogVpB3yZ3dgwJfe8zrOzTsV7cJvmwrKVa+0ma5BoiGJ+BoqkMvawbayKUsqQ=="], 145 146 146 - "@esbuild/android-arm64": ["@esbuild/android-arm64@0.24.2", "", { "os": "android", "cpu": "arm64" }, "sha512-cNLgeqCqV8WxfcTIOeL4OAtSmL8JjcN6m09XIgro1Wi7cF4t/THaWEa7eL5CMoMBdjoHOTh/vwTO/o2TRXIyzg=="], 147 + "@esbuild-kit/esm-loader": ["@esbuild-kit/esm-loader@2.6.5", "", { "dependencies": { "@esbuild-kit/core-utils": "^3.3.2", "get-tsconfig": "^4.7.0" } }, "sha512-FxEMIkJKnodyA1OaCUoEvbYRkoZlLZ4d/eXFu9Fh8CbBBgP5EmZxrfTRyN0qpXZ4vOvqnE5YdRdcrmUUXuU+dA=="], 147 148 148 - "@esbuild/android-x64": ["@esbuild/android-x64@0.24.2", "", { "os": "android", "cpu": "x64" }, "sha512-B6Q0YQDqMx9D7rvIcsXfmJfvUYLoP722bgfBlO5cGvNVb5V/+Y7nhBE3mHV9OpxBf4eAS2S68KZztiPaWq4XYw=="], 149 + "@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.25.5", "", { "os": "aix", "cpu": "ppc64" }, "sha512-9o3TMmpmftaCMepOdA5k/yDw8SfInyzWWTjYTFCX3kPSDJMROQTb8jg+h9Cnwnmm1vOzvxN7gIfB5V2ewpjtGA=="], 149 150 150 - "@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.24.2", "", { "os": "darwin", "cpu": "arm64" }, "sha512-kj3AnYWc+CekmZnS5IPu9D+HWtUI49hbnyqk0FLEJDbzCIQt7hg7ucF1SQAilhtYpIujfaHr6O0UHlzzSPdOeA=="], 151 + "@esbuild/android-arm": ["@esbuild/android-arm@0.25.5", "", { "os": "android", "cpu": "arm" }, "sha512-AdJKSPeEHgi7/ZhuIPtcQKr5RQdo6OO2IL87JkianiMYMPbCtot9fxPbrMiBADOWWm3T2si9stAiVsGbTQFkbA=="], 151 152 152 - "@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.24.2", "", { "os": "darwin", "cpu": "x64" }, "sha512-WeSrmwwHaPkNR5H3yYfowhZcbriGqooyu3zI/3GGpF8AyUdsrrP0X6KumITGA9WOyiJavnGZUwPGvxvwfWPHIA=="], 153 + "@esbuild/android-arm64": ["@esbuild/android-arm64@0.25.5", "", { "os": "android", "cpu": "arm64" }, "sha512-VGzGhj4lJO+TVGV1v8ntCZWJktV7SGCs3Pn1GRWI1SBFtRALoomm8k5E9Pmwg3HOAal2VDc2F9+PM/rEY6oIDg=="], 153 154 154 - "@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.24.2", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-UN8HXjtJ0k/Mj6a9+5u6+2eZ2ERD7Edt1Q9IZiB5UZAIdPnVKDoG7mdTVGhHJIeEml60JteamR3qhsr1r8gXvg=="], 155 + "@esbuild/android-x64": ["@esbuild/android-x64@0.25.5", "", { "os": "android", "cpu": "x64" }, "sha512-D2GyJT1kjvO//drbRT3Hib9XPwQeWd9vZoBJn+bu/lVsOZ13cqNdDeqIF/xQ5/VmWvMduP6AmXvylO/PIc2isw=="], 155 156 156 - "@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.24.2", "", { "os": "freebsd", "cpu": "x64" }, "sha512-TvW7wE/89PYW+IevEJXZ5sF6gJRDY/14hyIGFXdIucxCsbRmLUcjseQu1SyTko+2idmCw94TgyaEZi9HUSOe3Q=="], 157 + "@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.25.5", "", { "os": "darwin", "cpu": "arm64" }, "sha512-GtaBgammVvdF7aPIgH2jxMDdivezgFu6iKpmT+48+F8Hhg5J/sfnDieg0aeG/jfSvkYQU2/pceFPDKlqZzwnfQ=="], 157 158 158 - "@esbuild/linux-arm": ["@esbuild/linux-arm@0.24.2", "", { "os": "linux", "cpu": "arm" }, "sha512-n0WRM/gWIdU29J57hJyUdIsk0WarGd6To0s+Y+LwvlC55wt+GT/OgkwoXCXvIue1i1sSNWblHEig00GBWiJgfA=="], 159 + "@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.25.5", "", { "os": "darwin", "cpu": "x64" }, "sha512-1iT4FVL0dJ76/q1wd7XDsXrSW+oLoquptvh4CLR4kITDtqi2e/xwXwdCVH8hVHU43wgJdsq7Gxuzcs6Iq/7bxQ=="], 159 160 160 - "@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.24.2", "", { "os": "linux", "cpu": "arm64" }, "sha512-7HnAD6074BW43YvvUmE/35Id9/NB7BeX5EoNkK9obndmZBUk8xmJJeU7DwmUeN7tkysslb2eSl6CTrYz6oEMQg=="], 161 + "@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.25.5", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-nk4tGP3JThz4La38Uy/gzyXtpkPW8zSAmoUhK9xKKXdBCzKODMc2adkB2+8om9BDYugz+uGV7sLmpTYzvmz6Sw=="], 161 162 162 - "@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.24.2", "", { "os": "linux", "cpu": "ia32" }, "sha512-sfv0tGPQhcZOgTKO3oBE9xpHuUqguHvSo4jl+wjnKwFpapx+vUDcawbwPNuBIAYdRAvIDBfZVvXprIj3HA+Ugw=="], 163 + "@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.25.5", "", { "os": "freebsd", "cpu": "x64" }, "sha512-PrikaNjiXdR2laW6OIjlbeuCPrPaAl0IwPIaRv+SMV8CiM8i2LqVUHFC1+8eORgWyY7yhQY+2U2fA55mBzReaw=="], 163 164 164 - "@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.24.2", "", { "os": "linux", "cpu": "none" }, "sha512-CN9AZr8kEndGooS35ntToZLTQLHEjtVB5n7dl8ZcTZMonJ7CCfStrYhrzF97eAecqVbVJ7APOEe18RPI4KLhwQ=="], 165 + "@esbuild/linux-arm": ["@esbuild/linux-arm@0.25.5", "", { "os": "linux", "cpu": "arm" }, "sha512-cPzojwW2okgh7ZlRpcBEtsX7WBuqbLrNXqLU89GxWbNt6uIg78ET82qifUy3W6OVww6ZWobWub5oqZOVtwolfw=="], 165 166 166 - "@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.24.2", "", { "os": "linux", "cpu": "none" }, "sha512-iMkk7qr/wl3exJATwkISxI7kTcmHKE+BlymIAbHO8xanq/TjHaaVThFF6ipWzPHryoFsesNQJPE/3wFJw4+huw=="], 167 + "@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.25.5", "", { "os": "linux", "cpu": "arm64" }, "sha512-Z9kfb1v6ZlGbWj8EJk9T6czVEjjq2ntSYLY2cw6pAZl4oKtfgQuS4HOq41M/BcoLPzrUbNd+R4BXFyH//nHxVg=="], 167 168 168 - "@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.24.2", "", { "os": "linux", "cpu": "ppc64" }, "sha512-shsVrgCZ57Vr2L8mm39kO5PPIb+843FStGt7sGGoqiiWYconSxwTiuswC1VJZLCjNiMLAMh34jg4VSEQb+iEbw=="], 169 + "@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.25.5", "", { "os": "linux", "cpu": "ia32" }, "sha512-sQ7l00M8bSv36GLV95BVAdhJ2QsIbCuCjh/uYrWiMQSUuV+LpXwIqhgJDcvMTj+VsQmqAHL2yYaasENvJ7CDKA=="], 169 170 170 - "@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.24.2", "", { "os": "linux", "cpu": "none" }, "sha512-4eSFWnU9Hhd68fW16GD0TINewo1L6dRrB+oLNNbYyMUAeOD2yCK5KXGK1GH4qD/kT+bTEXjsyTCiJGHPZ3eM9Q=="], 171 + "@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.25.5", "", { "os": "linux", "cpu": "none" }, "sha512-0ur7ae16hDUC4OL5iEnDb0tZHDxYmuQyhKhsPBV8f99f6Z9KQM02g33f93rNH5A30agMS46u2HP6qTdEt6Q1kg=="], 171 172 172 - "@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.24.2", "", { "os": "linux", "cpu": "s390x" }, "sha512-S0Bh0A53b0YHL2XEXC20bHLuGMOhFDO6GN4b3YjRLK//Ep3ql3erpNcPlEFed93hsQAjAQDNsvcK+hV90FubSw=="], 173 + "@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.25.5", "", { "os": "linux", "cpu": "none" }, "sha512-kB/66P1OsHO5zLz0i6X0RxlQ+3cu0mkxS3TKFvkb5lin6uwZ/ttOkP3Z8lfR9mJOBk14ZwZ9182SIIWFGNmqmg=="], 173 174 174 - "@esbuild/linux-x64": ["@esbuild/linux-x64@0.24.2", "", { "os": "linux", "cpu": "x64" }, "sha512-8Qi4nQcCTbLnK9WoMjdC9NiTG6/E38RNICU6sUNqK0QFxCYgoARqVqxdFmWkdonVsvGqWhmm7MO0jyTqLqwj0Q=="], 175 + "@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.25.5", "", { "os": "linux", "cpu": "ppc64" }, "sha512-UZCmJ7r9X2fe2D6jBmkLBMQetXPXIsZjQJCjgwpVDz+YMcS6oFR27alkgGv3Oqkv07bxdvw7fyB71/olceJhkQ=="], 175 176 176 - "@esbuild/netbsd-arm64": ["@esbuild/netbsd-arm64@0.24.2", "", { "os": "none", "cpu": "arm64" }, "sha512-wuLK/VztRRpMt9zyHSazyCVdCXlpHkKm34WUyinD2lzK07FAHTq0KQvZZlXikNWkDGoT6x3TD51jKQ7gMVpopw=="], 177 + "@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.25.5", "", { "os": "linux", "cpu": "none" }, "sha512-kTxwu4mLyeOlsVIFPfQo+fQJAV9mh24xL+y+Bm6ej067sYANjyEw1dNHmvoqxJUCMnkBdKpvOn0Ahql6+4VyeA=="], 177 178 178 - "@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.24.2", "", { "os": "none", "cpu": "x64" }, "sha512-VefFaQUc4FMmJuAxmIHgUmfNiLXY438XrL4GDNV1Y1H/RW3qow68xTwjZKfj/+Plp9NANmzbH5R40Meudu8mmw=="], 179 + "@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.25.5", "", { "os": "linux", "cpu": "s390x" }, "sha512-K2dSKTKfmdh78uJ3NcWFiqyRrimfdinS5ErLSn3vluHNeHVnBAFWC8a4X5N+7FgVE1EjXS1QDZbpqZBjfrqMTQ=="], 179 180 180 - "@esbuild/openbsd-arm64": ["@esbuild/openbsd-arm64@0.24.2", "", { "os": "openbsd", "cpu": "arm64" }, "sha512-YQbi46SBct6iKnszhSvdluqDmxCJA+Pu280Av9WICNwQmMxV7nLRHZfjQzwbPs3jeWnuAhE9Jy0NrnJ12Oz+0A=="], 181 + "@esbuild/linux-x64": ["@esbuild/linux-x64@0.25.5", "", { "os": "linux", "cpu": "x64" }, "sha512-uhj8N2obKTE6pSZ+aMUbqq+1nXxNjZIIjCjGLfsWvVpy7gKCOL6rsY1MhRh9zLtUtAI7vpgLMK6DxjO8Qm9lJw=="], 181 182 182 - "@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.24.2", "", { "os": "openbsd", "cpu": "x64" }, "sha512-+iDS6zpNM6EnJyWv0bMGLWSWeXGN/HTaF/LXHXHwejGsVi+ooqDfMCCTerNFxEkM3wYVcExkeGXNqshc9iMaOA=="], 183 + "@esbuild/netbsd-arm64": ["@esbuild/netbsd-arm64@0.25.5", "", { "os": "none", "cpu": "arm64" }, "sha512-pwHtMP9viAy1oHPvgxtOv+OkduK5ugofNTVDilIzBLpoWAM16r7b/mxBvfpuQDpRQFMfuVr5aLcn4yveGvBZvw=="], 183 184 184 - "@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.24.2", "", { "os": "sunos", "cpu": "x64" }, "sha512-hTdsW27jcktEvpwNHJU4ZwWFGkz2zRJUz8pvddmXPtXDzVKTTINmlmga3ZzwcuMpUvLw7JkLy9QLKyGpD2Yxig=="], 185 + "@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.25.5", "", { "os": "none", "cpu": "x64" }, "sha512-WOb5fKrvVTRMfWFNCroYWWklbnXH0Q5rZppjq0vQIdlsQKuw6mdSihwSo4RV/YdQ5UCKKvBy7/0ZZYLBZKIbwQ=="], 186 + 187 + "@esbuild/openbsd-arm64": ["@esbuild/openbsd-arm64@0.25.5", "", { "os": "openbsd", "cpu": "arm64" }, "sha512-7A208+uQKgTxHd0G0uqZO8UjK2R0DDb4fDmERtARjSHWxqMTye4Erz4zZafx7Di9Cv+lNHYuncAkiGFySoD+Mw=="], 188 + 189 + "@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.25.5", "", { "os": "openbsd", "cpu": "x64" }, "sha512-G4hE405ErTWraiZ8UiSoesH8DaCsMm0Cay4fsFWOOUcz8b8rC6uCvnagr+gnioEjWn0wC+o1/TAHt+It+MpIMg=="], 190 + 191 + "@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.25.5", "", { "os": "sunos", "cpu": "x64" }, "sha512-l+azKShMy7FxzY0Rj4RCt5VD/q8mG/e+mDivgspo+yL8zW7qEwctQ6YqKX34DTEleFAvCIUviCFX1SDZRSyMQA=="], 185 192 186 - "@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.24.2", "", { "os": "win32", "cpu": "arm64" }, "sha512-LihEQ2BBKVFLOC9ZItT9iFprsE9tqjDjnbulhHoFxYQtQfai7qfluVODIYxt1PgdoyQkz23+01rzwNwYfutxUQ=="], 193 + "@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.25.5", "", { "os": "win32", "cpu": "arm64" }, "sha512-O2S7SNZzdcFG7eFKgvwUEZ2VG9D/sn/eIiz8XRZ1Q/DO5a3s76Xv0mdBzVM5j5R639lXQmPmSo0iRpHqUUrsxw=="], 187 194 188 - "@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.24.2", "", { "os": "win32", "cpu": "ia32" }, "sha512-q+iGUwfs8tncmFC9pcnD5IvRHAzmbwQ3GPS5/ceCyHdjXubwQWI12MKWSNSMYLJMq23/IUCvJMS76PDqXe1fxA=="], 195 + "@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.25.5", "", { "os": "win32", "cpu": "ia32" }, "sha512-onOJ02pqs9h1iMJ1PQphR+VZv8qBMQ77Klcsqv9CNW2w6yLqoURLcgERAIurY6QE63bbLuqgP9ATqajFLK5AMQ=="], 189 196 190 - "@esbuild/win32-x64": ["@esbuild/win32-x64@0.24.2", "", { "os": "win32", "cpu": "x64" }, "sha512-7VTgWzgMGvup6aSqDPLiW5zHaxYJGTO4OokMjIlrCtf+VpEL+cXKtCvg723iguPYI5oaUNdS+/V7OU2gvXVWEg=="], 197 + "@esbuild/win32-x64": ["@esbuild/win32-x64@0.25.5", "", { "os": "win32", "cpu": "x64" }, "sha512-TXv6YnJ8ZMVdX+SXWVBo/0p8LTcrUYngpWjvm91TMjjBQii7Oz11Lw5lbDV5Y0TzuhSJHwiH4hEtC1I42mMS0g=="], 191 198 192 199 "@grpc/grpc-js": ["@grpc/grpc-js@1.13.3", "", { "dependencies": { "@grpc/proto-loader": "^0.7.13", "@js-sdsl/ordered-map": "^4.4.2" } }, "sha512-FTXHdOoPbZrBjlVLHuKbDZnsTxXv2BlHF57xw6LuThXacXvtkahEPED0CKMk6obZDf65Hv4k3z62eyPNpvinIg=="], 193 200 ··· 581 588 582 589 "buffer-equal-constant-time": ["buffer-equal-constant-time@1.0.1", "", {}, "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA=="], 583 590 591 + "buffer-from": ["buffer-from@1.1.2", "", {}, "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ=="], 592 + 584 593 "bytes": ["bytes@3.1.2", "", {}, "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg=="], 585 594 586 595 "call-bind": ["call-bind@1.0.8", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.0", "es-define-property": "^1.0.0", "get-intrinsic": "^1.2.4", "set-function-length": "^1.2.2" } }, "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww=="], ··· 665 674 666 675 "dotenv": ["dotenv@16.4.7", "", {}, "sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ=="], 667 676 677 + "drizzle-kit": ["drizzle-kit@0.31.1", "", { "dependencies": { "@drizzle-team/brocli": "^0.10.2", "@esbuild-kit/esm-loader": "^2.5.5", "esbuild": "^0.25.2", "esbuild-register": "^3.5.0" }, "bin": { "drizzle-kit": "bin.cjs" } }, "sha512-PUjYKWtzOzPtdtQlTHQG3qfv4Y0XT8+Eas6UbxCmxTj7qgMf+39dDujf1BP1I+qqZtw9uzwTh8jYtkMuCq+B0Q=="], 678 + 668 679 "drizzle-orm": ["drizzle-orm@0.44.2", "", { "peerDependencies": { "@aws-sdk/client-rds-data": ">=3", "@cloudflare/workers-types": ">=4", "@electric-sql/pglite": ">=0.2.0", "@libsql/client": ">=0.10.0", "@libsql/client-wasm": ">=0.10.0", "@neondatabase/serverless": ">=0.10.0", "@op-engineering/op-sqlite": ">=2", "@opentelemetry/api": "^1.4.1", "@planetscale/database": ">=1.13", "@prisma/client": "*", "@tidbcloud/serverless": "*", "@types/better-sqlite3": "*", "@types/pg": "*", "@types/sql.js": "*", "@upstash/redis": ">=1.34.7", "@vercel/postgres": ">=0.8.0", "@xata.io/client": "*", "better-sqlite3": ">=7", "bun-types": "*", "expo-sqlite": ">=14.0.0", "gel": ">=2", "knex": "*", "kysely": "*", "mysql2": ">=2", "pg": ">=8", "postgres": ">=3", "sql.js": ">=1", "sqlite3": ">=5" }, "optionalPeers": ["@aws-sdk/client-rds-data", "@cloudflare/workers-types", "@electric-sql/pglite", "@libsql/client", "@libsql/client-wasm", "@neondatabase/serverless", "@op-engineering/op-sqlite", "@opentelemetry/api", "@planetscale/database", "@prisma/client", "@tidbcloud/serverless", "@types/better-sqlite3", "@types/pg", "@types/sql.js", "@upstash/redis", "@vercel/postgres", "@xata.io/client", "better-sqlite3", "bun-types", "expo-sqlite", "gel", "knex", "kysely", "mysql2", "pg", "postgres", "sql.js", "sqlite3"] }, "sha512-zGAqBzWWkVSFjZpwPOrmCrgO++1kZ5H/rZ4qTGeGOe18iXGVJWf3WPfHOVwFIbmi8kHjfJstC6rJomzGx8g/dQ=="], 669 680 670 681 "dropbox": ["dropbox@10.34.0", "", { "dependencies": { "node-fetch": "^2.6.1" }, "peerDependencies": { "@types/node-fetch": "^2.5.7" } }, "sha512-5jb5/XzU0fSnq36/hEpwT5/QIep7MgqKuxghEG44xCu7HruOAjPdOb3x0geXv5O/hd0nHpQpWO+r5MjYTpMvJg=="], ··· 691 702 692 703 "es-object-atoms": ["es-object-atoms@1.1.1", "", { "dependencies": { "es-errors": "^1.3.0" } }, "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA=="], 693 704 694 - "esbuild": ["esbuild@0.24.2", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.24.2", "@esbuild/android-arm": "0.24.2", "@esbuild/android-arm64": "0.24.2", "@esbuild/android-x64": "0.24.2", "@esbuild/darwin-arm64": "0.24.2", "@esbuild/darwin-x64": "0.24.2", "@esbuild/freebsd-arm64": "0.24.2", "@esbuild/freebsd-x64": "0.24.2", "@esbuild/linux-arm": "0.24.2", "@esbuild/linux-arm64": "0.24.2", "@esbuild/linux-ia32": "0.24.2", "@esbuild/linux-loong64": "0.24.2", "@esbuild/linux-mips64el": "0.24.2", "@esbuild/linux-ppc64": "0.24.2", "@esbuild/linux-riscv64": "0.24.2", "@esbuild/linux-s390x": "0.24.2", "@esbuild/linux-x64": "0.24.2", "@esbuild/netbsd-arm64": "0.24.2", "@esbuild/netbsd-x64": "0.24.2", "@esbuild/openbsd-arm64": "0.24.2", "@esbuild/openbsd-x64": "0.24.2", "@esbuild/sunos-x64": "0.24.2", "@esbuild/win32-arm64": "0.24.2", "@esbuild/win32-ia32": "0.24.2", "@esbuild/win32-x64": "0.24.2" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-+9egpBW8I3CD5XPe0n6BfT5fxLzxrlDzqydF3aviG+9ni1lDC/OvMHcxqEFV0+LANZG5R1bFMWfUrjVsdwxJvA=="], 705 + "esbuild": ["esbuild@0.25.5", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.25.5", "@esbuild/android-arm": "0.25.5", "@esbuild/android-arm64": "0.25.5", "@esbuild/android-x64": "0.25.5", "@esbuild/darwin-arm64": "0.25.5", "@esbuild/darwin-x64": "0.25.5", "@esbuild/freebsd-arm64": "0.25.5", "@esbuild/freebsd-x64": "0.25.5", "@esbuild/linux-arm": "0.25.5", "@esbuild/linux-arm64": "0.25.5", "@esbuild/linux-ia32": "0.25.5", "@esbuild/linux-loong64": "0.25.5", "@esbuild/linux-mips64el": "0.25.5", "@esbuild/linux-ppc64": "0.25.5", "@esbuild/linux-riscv64": "0.25.5", "@esbuild/linux-s390x": "0.25.5", "@esbuild/linux-x64": "0.25.5", "@esbuild/netbsd-arm64": "0.25.5", "@esbuild/netbsd-x64": "0.25.5", "@esbuild/openbsd-arm64": "0.25.5", "@esbuild/openbsd-x64": "0.25.5", "@esbuild/sunos-x64": "0.25.5", "@esbuild/win32-arm64": "0.25.5", "@esbuild/win32-ia32": "0.25.5", "@esbuild/win32-x64": "0.25.5" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-P8OtKZRv/5J5hhz0cUAdu/cLuPIKXpQl1R9pZtvmHWQvrAUVd0UNIPT4IB4W3rNOqVO0rlqHmCIbSwxh/c9yUQ=="], 706 + 707 + "esbuild-register": ["esbuild-register@3.6.0", "", { "dependencies": { "debug": "^4.3.4" }, "peerDependencies": { "esbuild": ">=0.12 <1" } }, "sha512-H2/S7Pm8a9CL1uhp9OvjwrBh5Pvx0H8qVOxNu8Wed9Y7qv56MPtq+GGM8RJpq6glYJn9Wspr8uw7l55uyinNeg=="], 695 708 696 709 "escalade": ["escalade@3.2.0", "", {}, "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA=="], 697 710 ··· 1117 1130 1118 1131 "source-map": ["source-map@0.7.4", "", {}, "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA=="], 1119 1132 1133 + "source-map-support": ["source-map-support@0.5.21", "", { "dependencies": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" } }, "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w=="], 1134 + 1120 1135 "split2": ["split2@4.2.0", "", {}, "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg=="], 1121 1136 1122 1137 "statuses": ["statuses@2.0.1", "", {}, "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ=="], ··· 1243 1258 1244 1259 "@atproto/xrpc-server/ws": ["ws@8.18.0", "", { "peerDependencies": { "bufferutil": "^4.0.1", "utf-8-validate": ">=5.0.2" }, "optionalPeers": ["bufferutil", "utf-8-validate"] }, "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw=="], 1245 1260 1261 + "@esbuild-kit/core-utils/esbuild": ["esbuild@0.18.20", "", { "optionalDependencies": { "@esbuild/android-arm": "0.18.20", "@esbuild/android-arm64": "0.18.20", "@esbuild/android-x64": "0.18.20", "@esbuild/darwin-arm64": "0.18.20", "@esbuild/darwin-x64": "0.18.20", "@esbuild/freebsd-arm64": "0.18.20", "@esbuild/freebsd-x64": "0.18.20", "@esbuild/linux-arm": "0.18.20", "@esbuild/linux-arm64": "0.18.20", "@esbuild/linux-ia32": "0.18.20", "@esbuild/linux-loong64": "0.18.20", "@esbuild/linux-mips64el": "0.18.20", "@esbuild/linux-ppc64": "0.18.20", "@esbuild/linux-riscv64": "0.18.20", "@esbuild/linux-s390x": "0.18.20", "@esbuild/linux-x64": "0.18.20", "@esbuild/netbsd-x64": "0.18.20", "@esbuild/openbsd-x64": "0.18.20", "@esbuild/sunos-x64": "0.18.20", "@esbuild/win32-arm64": "0.18.20", "@esbuild/win32-ia32": "0.18.20", "@esbuild/win32-x64": "0.18.20" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA=="], 1262 + 1246 1263 "accepts/mime-types": ["mime-types@3.0.1", "", { "dependencies": { "mime-db": "^1.54.0" } }, "sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA=="], 1247 1264 1248 1265 "anymatch/picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="], ··· 1265 1282 1266 1283 "micromatch/picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="], 1267 1284 1285 + "pkgroll/esbuild": ["esbuild@0.24.2", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.24.2", "@esbuild/android-arm": "0.24.2", "@esbuild/android-arm64": "0.24.2", "@esbuild/android-x64": "0.24.2", "@esbuild/darwin-arm64": "0.24.2", "@esbuild/darwin-x64": "0.24.2", "@esbuild/freebsd-arm64": "0.24.2", "@esbuild/freebsd-x64": "0.24.2", "@esbuild/linux-arm": "0.24.2", "@esbuild/linux-arm64": "0.24.2", "@esbuild/linux-ia32": "0.24.2", "@esbuild/linux-loong64": "0.24.2", "@esbuild/linux-mips64el": "0.24.2", "@esbuild/linux-ppc64": "0.24.2", "@esbuild/linux-riscv64": "0.24.2", "@esbuild/linux-s390x": "0.24.2", "@esbuild/linux-x64": "0.24.2", "@esbuild/netbsd-arm64": "0.24.2", "@esbuild/netbsd-x64": "0.24.2", "@esbuild/openbsd-arm64": "0.24.2", "@esbuild/openbsd-x64": "0.24.2", "@esbuild/sunos-x64": "0.24.2", "@esbuild/win32-arm64": "0.24.2", "@esbuild/win32-ia32": "0.24.2", "@esbuild/win32-x64": "0.24.2" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-+9egpBW8I3CD5XPe0n6BfT5fxLzxrlDzqydF3aviG+9ni1lDC/OvMHcxqEFV0+LANZG5R1bFMWfUrjVsdwxJvA=="], 1286 + 1268 1287 "psl/punycode": ["punycode@2.3.1", "", {}, "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg=="], 1269 1288 1270 1289 "readdirp/picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="], ··· 1272 1291 "router/path-to-regexp": ["path-to-regexp@8.2.0", "", {}, "sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ=="], 1273 1292 1274 1293 "send/mime-types": ["mime-types@3.0.1", "", { "dependencies": { "mime-db": "^1.54.0" } }, "sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA=="], 1294 + 1295 + "source-map-support/source-map": ["source-map@0.6.1", "", {}, "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="], 1275 1296 1276 1297 "tar-stream/readable-stream": ["readable-stream@3.6.2", "", { "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", "util-deprecate": "^1.0.1" } }, "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA=="], 1277 1298 ··· 1311 1332 1312 1333 "@atproto/xrpc-server/express/type-is": ["type-is@1.6.18", "", { "dependencies": { "media-typer": "0.3.0", "mime-types": "~2.1.24" } }, "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g=="], 1313 1334 1335 + "@esbuild-kit/core-utils/esbuild/@esbuild/android-arm": ["@esbuild/android-arm@0.18.20", "", { "os": "android", "cpu": "arm" }, "sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw=="], 1336 + 1337 + "@esbuild-kit/core-utils/esbuild/@esbuild/android-arm64": ["@esbuild/android-arm64@0.18.20", "", { "os": "android", "cpu": "arm64" }, "sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ=="], 1338 + 1339 + "@esbuild-kit/core-utils/esbuild/@esbuild/android-x64": ["@esbuild/android-x64@0.18.20", "", { "os": "android", "cpu": "x64" }, "sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg=="], 1340 + 1341 + "@esbuild-kit/core-utils/esbuild/@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.18.20", "", { "os": "darwin", "cpu": "arm64" }, "sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA=="], 1342 + 1343 + "@esbuild-kit/core-utils/esbuild/@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.18.20", "", { "os": "darwin", "cpu": "x64" }, "sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ=="], 1344 + 1345 + "@esbuild-kit/core-utils/esbuild/@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.18.20", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw=="], 1346 + 1347 + "@esbuild-kit/core-utils/esbuild/@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.18.20", "", { "os": "freebsd", "cpu": "x64" }, "sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ=="], 1348 + 1349 + "@esbuild-kit/core-utils/esbuild/@esbuild/linux-arm": ["@esbuild/linux-arm@0.18.20", "", { "os": "linux", "cpu": "arm" }, "sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg=="], 1350 + 1351 + "@esbuild-kit/core-utils/esbuild/@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.18.20", "", { "os": "linux", "cpu": "arm64" }, "sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA=="], 1352 + 1353 + "@esbuild-kit/core-utils/esbuild/@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.18.20", "", { "os": "linux", "cpu": "ia32" }, "sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA=="], 1354 + 1355 + "@esbuild-kit/core-utils/esbuild/@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.18.20", "", { "os": "linux", "cpu": "none" }, "sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg=="], 1356 + 1357 + "@esbuild-kit/core-utils/esbuild/@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.18.20", "", { "os": "linux", "cpu": "none" }, "sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ=="], 1358 + 1359 + "@esbuild-kit/core-utils/esbuild/@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.18.20", "", { "os": "linux", "cpu": "ppc64" }, "sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA=="], 1360 + 1361 + "@esbuild-kit/core-utils/esbuild/@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.18.20", "", { "os": "linux", "cpu": "none" }, "sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A=="], 1362 + 1363 + "@esbuild-kit/core-utils/esbuild/@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.18.20", "", { "os": "linux", "cpu": "s390x" }, "sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ=="], 1364 + 1365 + "@esbuild-kit/core-utils/esbuild/@esbuild/linux-x64": ["@esbuild/linux-x64@0.18.20", "", { "os": "linux", "cpu": "x64" }, "sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w=="], 1366 + 1367 + "@esbuild-kit/core-utils/esbuild/@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.18.20", "", { "os": "none", "cpu": "x64" }, "sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A=="], 1368 + 1369 + "@esbuild-kit/core-utils/esbuild/@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.18.20", "", { "os": "openbsd", "cpu": "x64" }, "sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg=="], 1370 + 1371 + "@esbuild-kit/core-utils/esbuild/@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.18.20", "", { "os": "sunos", "cpu": "x64" }, "sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ=="], 1372 + 1373 + "@esbuild-kit/core-utils/esbuild/@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.18.20", "", { "os": "win32", "cpu": "arm64" }, "sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg=="], 1374 + 1375 + "@esbuild-kit/core-utils/esbuild/@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.18.20", "", { "os": "win32", "cpu": "ia32" }, "sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g=="], 1376 + 1377 + "@esbuild-kit/core-utils/esbuild/@esbuild/win32-x64": ["@esbuild/win32-x64@0.18.20", "", { "os": "win32", "cpu": "x64" }, "sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ=="], 1378 + 1314 1379 "accepts/mime-types/mime-db": ["mime-db@1.54.0", "", {}, "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ=="], 1315 1380 1316 1381 "express/mime-types/mime-db": ["mime-db@1.54.0", "", {}, "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ=="], ··· 1318 1383 "google-auth-library/jws/jwa": ["jwa@2.0.0", "", { "dependencies": { "buffer-equal-constant-time": "1.0.1", "ecdsa-sig-formatter": "1.0.11", "safe-buffer": "^5.0.1" } }, "sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA=="], 1319 1384 1320 1385 "gtoken/jws/jwa": ["jwa@2.0.0", "", { "dependencies": { "buffer-equal-constant-time": "1.0.1", "ecdsa-sig-formatter": "1.0.11", "safe-buffer": "^5.0.1" } }, "sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA=="], 1386 + 1387 + "pkgroll/esbuild/@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.24.2", "", { "os": "aix", "cpu": "ppc64" }, "sha512-thpVCb/rhxE/BnMLQ7GReQLLN8q9qbHmI55F4489/ByVg2aQaQ6kbcLb6FHkocZzQhxc4gx0sCk0tJkKBFzDhA=="], 1388 + 1389 + "pkgroll/esbuild/@esbuild/android-arm": ["@esbuild/android-arm@0.24.2", "", { "os": "android", "cpu": "arm" }, "sha512-tmwl4hJkCfNHwFB3nBa8z1Uy3ypZpxqxfTQOcHX+xRByyYgunVbZ9MzUUfb0RxaHIMnbHagwAxuTL+tnNM+1/Q=="], 1390 + 1391 + "pkgroll/esbuild/@esbuild/android-arm64": ["@esbuild/android-arm64@0.24.2", "", { "os": "android", "cpu": "arm64" }, "sha512-cNLgeqCqV8WxfcTIOeL4OAtSmL8JjcN6m09XIgro1Wi7cF4t/THaWEa7eL5CMoMBdjoHOTh/vwTO/o2TRXIyzg=="], 1392 + 1393 + "pkgroll/esbuild/@esbuild/android-x64": ["@esbuild/android-x64@0.24.2", "", { "os": "android", "cpu": "x64" }, "sha512-B6Q0YQDqMx9D7rvIcsXfmJfvUYLoP722bgfBlO5cGvNVb5V/+Y7nhBE3mHV9OpxBf4eAS2S68KZztiPaWq4XYw=="], 1394 + 1395 + "pkgroll/esbuild/@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.24.2", "", { "os": "darwin", "cpu": "arm64" }, "sha512-kj3AnYWc+CekmZnS5IPu9D+HWtUI49hbnyqk0FLEJDbzCIQt7hg7ucF1SQAilhtYpIujfaHr6O0UHlzzSPdOeA=="], 1396 + 1397 + "pkgroll/esbuild/@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.24.2", "", { "os": "darwin", "cpu": "x64" }, "sha512-WeSrmwwHaPkNR5H3yYfowhZcbriGqooyu3zI/3GGpF8AyUdsrrP0X6KumITGA9WOyiJavnGZUwPGvxvwfWPHIA=="], 1398 + 1399 + "pkgroll/esbuild/@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.24.2", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-UN8HXjtJ0k/Mj6a9+5u6+2eZ2ERD7Edt1Q9IZiB5UZAIdPnVKDoG7mdTVGhHJIeEml60JteamR3qhsr1r8gXvg=="], 1400 + 1401 + "pkgroll/esbuild/@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.24.2", "", { "os": "freebsd", "cpu": "x64" }, "sha512-TvW7wE/89PYW+IevEJXZ5sF6gJRDY/14hyIGFXdIucxCsbRmLUcjseQu1SyTko+2idmCw94TgyaEZi9HUSOe3Q=="], 1402 + 1403 + "pkgroll/esbuild/@esbuild/linux-arm": ["@esbuild/linux-arm@0.24.2", "", { "os": "linux", "cpu": "arm" }, "sha512-n0WRM/gWIdU29J57hJyUdIsk0WarGd6To0s+Y+LwvlC55wt+GT/OgkwoXCXvIue1i1sSNWblHEig00GBWiJgfA=="], 1404 + 1405 + "pkgroll/esbuild/@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.24.2", "", { "os": "linux", "cpu": "arm64" }, "sha512-7HnAD6074BW43YvvUmE/35Id9/NB7BeX5EoNkK9obndmZBUk8xmJJeU7DwmUeN7tkysslb2eSl6CTrYz6oEMQg=="], 1406 + 1407 + "pkgroll/esbuild/@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.24.2", "", { "os": "linux", "cpu": "ia32" }, "sha512-sfv0tGPQhcZOgTKO3oBE9xpHuUqguHvSo4jl+wjnKwFpapx+vUDcawbwPNuBIAYdRAvIDBfZVvXprIj3HA+Ugw=="], 1408 + 1409 + "pkgroll/esbuild/@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.24.2", "", { "os": "linux", "cpu": "none" }, "sha512-CN9AZr8kEndGooS35ntToZLTQLHEjtVB5n7dl8ZcTZMonJ7CCfStrYhrzF97eAecqVbVJ7APOEe18RPI4KLhwQ=="], 1410 + 1411 + "pkgroll/esbuild/@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.24.2", "", { "os": "linux", "cpu": "none" }, "sha512-iMkk7qr/wl3exJATwkISxI7kTcmHKE+BlymIAbHO8xanq/TjHaaVThFF6ipWzPHryoFsesNQJPE/3wFJw4+huw=="], 1412 + 1413 + "pkgroll/esbuild/@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.24.2", "", { "os": "linux", "cpu": "ppc64" }, "sha512-shsVrgCZ57Vr2L8mm39kO5PPIb+843FStGt7sGGoqiiWYconSxwTiuswC1VJZLCjNiMLAMh34jg4VSEQb+iEbw=="], 1414 + 1415 + "pkgroll/esbuild/@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.24.2", "", { "os": "linux", "cpu": "none" }, "sha512-4eSFWnU9Hhd68fW16GD0TINewo1L6dRrB+oLNNbYyMUAeOD2yCK5KXGK1GH4qD/kT+bTEXjsyTCiJGHPZ3eM9Q=="], 1416 + 1417 + "pkgroll/esbuild/@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.24.2", "", { "os": "linux", "cpu": "s390x" }, "sha512-S0Bh0A53b0YHL2XEXC20bHLuGMOhFDO6GN4b3YjRLK//Ep3ql3erpNcPlEFed93hsQAjAQDNsvcK+hV90FubSw=="], 1418 + 1419 + "pkgroll/esbuild/@esbuild/linux-x64": ["@esbuild/linux-x64@0.24.2", "", { "os": "linux", "cpu": "x64" }, "sha512-8Qi4nQcCTbLnK9WoMjdC9NiTG6/E38RNICU6sUNqK0QFxCYgoARqVqxdFmWkdonVsvGqWhmm7MO0jyTqLqwj0Q=="], 1420 + 1421 + "pkgroll/esbuild/@esbuild/netbsd-arm64": ["@esbuild/netbsd-arm64@0.24.2", "", { "os": "none", "cpu": "arm64" }, "sha512-wuLK/VztRRpMt9zyHSazyCVdCXlpHkKm34WUyinD2lzK07FAHTq0KQvZZlXikNWkDGoT6x3TD51jKQ7gMVpopw=="], 1422 + 1423 + "pkgroll/esbuild/@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.24.2", "", { "os": "none", "cpu": "x64" }, "sha512-VefFaQUc4FMmJuAxmIHgUmfNiLXY438XrL4GDNV1Y1H/RW3qow68xTwjZKfj/+Plp9NANmzbH5R40Meudu8mmw=="], 1424 + 1425 + "pkgroll/esbuild/@esbuild/openbsd-arm64": ["@esbuild/openbsd-arm64@0.24.2", "", { "os": "openbsd", "cpu": "arm64" }, "sha512-YQbi46SBct6iKnszhSvdluqDmxCJA+Pu280Av9WICNwQmMxV7nLRHZfjQzwbPs3jeWnuAhE9Jy0NrnJ12Oz+0A=="], 1426 + 1427 + "pkgroll/esbuild/@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.24.2", "", { "os": "openbsd", "cpu": "x64" }, "sha512-+iDS6zpNM6EnJyWv0bMGLWSWeXGN/HTaF/LXHXHwejGsVi+ooqDfMCCTerNFxEkM3wYVcExkeGXNqshc9iMaOA=="], 1428 + 1429 + "pkgroll/esbuild/@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.24.2", "", { "os": "sunos", "cpu": "x64" }, "sha512-hTdsW27jcktEvpwNHJU4ZwWFGkz2zRJUz8pvddmXPtXDzVKTTINmlmga3ZzwcuMpUvLw7JkLy9QLKyGpD2Yxig=="], 1430 + 1431 + "pkgroll/esbuild/@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.24.2", "", { "os": "win32", "cpu": "arm64" }, "sha512-LihEQ2BBKVFLOC9ZItT9iFprsE9tqjDjnbulhHoFxYQtQfai7qfluVODIYxt1PgdoyQkz23+01rzwNwYfutxUQ=="], 1432 + 1433 + "pkgroll/esbuild/@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.24.2", "", { "os": "win32", "cpu": "ia32" }, "sha512-q+iGUwfs8tncmFC9pcnD5IvRHAzmbwQ3GPS5/ceCyHdjXubwQWI12MKWSNSMYLJMq23/IUCvJMS76PDqXe1fxA=="], 1434 + 1435 + "pkgroll/esbuild/@esbuild/win32-x64": ["@esbuild/win32-x64@0.24.2", "", { "os": "win32", "cpu": "x64" }, "sha512-7VTgWzgMGvup6aSqDPLiW5zHaxYJGTO4OokMjIlrCtf+VpEL+cXKtCvg723iguPYI5oaUNdS+/V7OU2gvXVWEg=="], 1321 1436 1322 1437 "send/mime-types/mime-db": ["mime-db@1.54.0", "", {}, "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ=="], 1323 1438
+348
rockskyapi/rocksky-auth/drizzle/0000_init.sql
··· 1 + CREATE TABLE "album_tracks" ( 2 + "xata_id" text PRIMARY KEY NOT NULL, 3 + "album_id" text NOT NULL, 4 + "track_id" text NOT NULL, 5 + "xata_createdat" timestamp DEFAULT now() NOT NULL, 6 + "xata_updatedat" timestamp DEFAULT now() NOT NULL, 7 + "xata_version" integer NOT NULL 8 + ); 9 + --> statement-breakpoint 10 + CREATE TABLE "albums" ( 11 + "xata_id" text PRIMARY KEY NOT NULL, 12 + "title" text NOT NULL, 13 + "artist" text NOT NULL, 14 + "release_date" text, 15 + "year" integer, 16 + "album_art" text, 17 + "uri" text, 18 + "artist_uri" text, 19 + "apple_music_link" text, 20 + "spotify_link" text, 21 + "tidal_link" text, 22 + "youtube_link" text, 23 + "sha256" text NOT NULL, 24 + "xata_createdat" timestamp DEFAULT now() NOT NULL, 25 + "xata_updatedat" timestamp DEFAULT now() NOT NULL, 26 + "xata_version" integer, 27 + CONSTRAINT "albums_uri_unique" UNIQUE("uri"), 28 + CONSTRAINT "albums_apple_music_link_unique" UNIQUE("apple_music_link"), 29 + CONSTRAINT "albums_spotify_link_unique" UNIQUE("spotify_link"), 30 + CONSTRAINT "albums_tidal_link_unique" UNIQUE("tidal_link"), 31 + CONSTRAINT "albums_youtube_link_unique" UNIQUE("youtube_link"), 32 + CONSTRAINT "albums_sha256_unique" UNIQUE("sha256") 33 + ); 34 + --> statement-breakpoint 35 + CREATE TABLE "api_keys" ( 36 + "xata_id" text PRIMARY KEY NOT NULL, 37 + "name" text NOT NULL, 38 + "api_key" text NOT NULL, 39 + "shared_secret" text NOT NULL, 40 + "description" text, 41 + "enabled" boolean DEFAULT true NOT NULL, 42 + "user_id" text NOT NULL, 43 + "xata_createdat" timestamp DEFAULT now() NOT NULL, 44 + "xata_updatedat" timestamp DEFAULT now() NOT NULL 45 + ); 46 + --> statement-breakpoint 47 + CREATE TABLE "artist_albums" ( 48 + "xata_id" text PRIMARY KEY NOT NULL, 49 + "artist_id" text NOT NULL, 50 + "album_id" text NOT NULL, 51 + "xata_createdat" timestamp DEFAULT now() NOT NULL, 52 + "xata_updatedat" timestamp DEFAULT now() NOT NULL, 53 + "xata_version" integer NOT NULL 54 + ); 55 + --> statement-breakpoint 56 + CREATE TABLE "artist_tracks" ( 57 + "xata_id" text PRIMARY KEY NOT NULL, 58 + "artist_id" text NOT NULL, 59 + "track_id" text NOT NULL, 60 + "xata_createdat" timestamp DEFAULT now() NOT NULL, 61 + "xata_updatedat" timestamp DEFAULT now() NOT NULL, 62 + "xata_version" integer NOT NULL 63 + ); 64 + --> statement-breakpoint 65 + CREATE TABLE "artists" ( 66 + "xata_id" text PRIMARY KEY NOT NULL, 67 + "name" text NOT NULL, 68 + "biography" text, 69 + "born" timestamp, 70 + "born_in" text, 71 + "died" timestamp, 72 + "picture" text, 73 + "sha256" text NOT NULL, 74 + "uri" text, 75 + "apple_music_link" text, 76 + "spotify_link" text, 77 + "tidal_link" text, 78 + "youtube_link" text, 79 + "xata_createdat" timestamp DEFAULT now() NOT NULL, 80 + "xata_updatedat" timestamp DEFAULT now() NOT NULL, 81 + "xata_version" integer, 82 + CONSTRAINT "artists_sha256_unique" UNIQUE("sha256"), 83 + CONSTRAINT "artists_uri_unique" UNIQUE("uri") 84 + ); 85 + --> statement-breakpoint 86 + CREATE TABLE "dropbox_tokens" ( 87 + "xata_id" text PRIMARY KEY NOT NULL, 88 + "refresh_token" text NOT NULL, 89 + "xata_createdat" timestamp DEFAULT now() NOT NULL, 90 + "xata_updatedat" timestamp DEFAULT now() NOT NULL 91 + ); 92 + --> statement-breakpoint 93 + CREATE TABLE "google_drive_tokens" ( 94 + "xata_id" text PRIMARY KEY NOT NULL, 95 + "refresh_token" text NOT NULL, 96 + "xata_createdat" timestamp DEFAULT now() NOT NULL, 97 + "xata_updatedat" timestamp DEFAULT now() NOT NULL 98 + ); 99 + --> statement-breakpoint 100 + CREATE TABLE "loved_tracks" ( 101 + "xata_id" text PRIMARY KEY NOT NULL, 102 + "user_id" text NOT NULL, 103 + "track_id" text NOT NULL, 104 + "uri" text, 105 + "xata_createdat" timestamp DEFAULT now() NOT NULL, 106 + CONSTRAINT "loved_tracks_uri_unique" UNIQUE("uri") 107 + ); 108 + --> statement-breakpoint 109 + CREATE TABLE "playlist_tracks" ( 110 + "xata_id" text PRIMARY KEY NOT NULL, 111 + "playlist_id" text NOT NULL, 112 + "track_id" text NOT NULL, 113 + "xata_createdat" timestamp DEFAULT now() NOT NULL 114 + ); 115 + --> statement-breakpoint 116 + CREATE TABLE "playlists" ( 117 + "xata_id" text PRIMARY KEY NOT NULL, 118 + "name" text NOT NULL, 119 + "picture" text, 120 + "description" text, 121 + "uri" text, 122 + "spotify_link" text, 123 + "tidal_link" text, 124 + "apple_music_link" text, 125 + "created_by" text NOT NULL, 126 + "xata_createdat" timestamp DEFAULT now() NOT NULL, 127 + "xata_updatedat" timestamp DEFAULT now() NOT NULL, 128 + CONSTRAINT "playlists_uri_unique" UNIQUE("uri") 129 + ); 130 + --> statement-breakpoint 131 + CREATE TABLE "profile_shouts" ( 132 + "xata_id" text PRIMARY KEY NOT NULL, 133 + "user_id" text NOT NULL, 134 + "shout_id" text NOT NULL, 135 + "xata_createdat" timestamp DEFAULT now() NOT NULL 136 + ); 137 + --> statement-breakpoint 138 + CREATE TABLE "scrobbles" ( 139 + "xata_id" text PRIMARY KEY NOT NULL, 140 + "user_id" text, 141 + "track_id" text, 142 + "album_id" text, 143 + "artist_id" text, 144 + "uri" text, 145 + "xata_createdat" timestamp DEFAULT now() NOT NULL, 146 + "xata_updatedat" timestamp DEFAULT now() NOT NULL, 147 + "xata_version" integer, 148 + "timestamp" timestamp DEFAULT now() NOT NULL, 149 + CONSTRAINT "scrobbles_uri_unique" UNIQUE("uri") 150 + ); 151 + --> statement-breakpoint 152 + CREATE TABLE "shout_likes" ( 153 + "xata_id" text PRIMARY KEY NOT NULL, 154 + "user_id" text NOT NULL, 155 + "shout_id" text NOT NULL, 156 + "xata_createdat" timestamp DEFAULT now() NOT NULL, 157 + "uri" text NOT NULL, 158 + CONSTRAINT "shout_likes_uri_unique" UNIQUE("uri") 159 + ); 160 + --> statement-breakpoint 161 + CREATE TABLE "shout_reports" ( 162 + "xata_id" text PRIMARY KEY NOT NULL, 163 + "user_id" text NOT NULL, 164 + "shout_id" text NOT NULL, 165 + "xata_createdat" timestamp DEFAULT now() NOT NULL 166 + ); 167 + --> statement-breakpoint 168 + CREATE TABLE "shouts" ( 169 + "xata_id" text PRIMARY KEY NOT NULL, 170 + "content" text NOT NULL, 171 + "track_id" text, 172 + "artist_id" text, 173 + "album_id" text, 174 + "scrobble_id" text, 175 + "uri" text NOT NULL, 176 + "author_id" text NOT NULL, 177 + "parent_id" text, 178 + "xata_createdat" timestamp DEFAULT now() NOT NULL, 179 + "xata_updatedat" timestamp DEFAULT now() NOT NULL, 180 + CONSTRAINT "shouts_uri_unique" UNIQUE("uri") 181 + ); 182 + --> statement-breakpoint 183 + CREATE TABLE "spotify_accounts" ( 184 + "xata_id" text PRIMARY KEY NOT NULL, 185 + "xata_version" integer NOT NULL, 186 + "email" text NOT NULL, 187 + "user_id" text NOT NULL, 188 + "is_beta_user" boolean DEFAULT false NOT NULL, 189 + "xata_createdat" timestamp DEFAULT now() NOT NULL, 190 + "xata_updatedat" timestamp DEFAULT now() NOT NULL 191 + ); 192 + --> statement-breakpoint 193 + CREATE TABLE "spotify_tokens" ( 194 + "xata_id" text PRIMARY KEY NOT NULL, 195 + "xata_version" integer NOT NULL, 196 + "access_token" text NOT NULL, 197 + "refresh_token" text NOT NULL, 198 + "user_id" text NOT NULL, 199 + "xata_createdat" timestamp DEFAULT now() NOT NULL, 200 + "xata_updatedat" timestamp DEFAULT now() NOT NULL 201 + ); 202 + --> statement-breakpoint 203 + CREATE TABLE "tracks" ( 204 + "xata_id" text PRIMARY KEY NOT NULL, 205 + "title" text NOT NULL, 206 + "artist" text NOT NULL, 207 + "album_artist" text NOT NULL, 208 + "album_art" text, 209 + "album" text NOT NULL, 210 + "track_number" integer, 211 + "duration" integer NOT NULL, 212 + "mb_id" text, 213 + "youtube_link" text, 214 + "spotify_link" text, 215 + "apple_music_link" text, 216 + "tidal_link" text, 217 + "sha256" text NOT NULL, 218 + "disc_number" integer, 219 + "lyrics" text, 220 + "composer" text, 221 + "genre" text, 222 + "label" text, 223 + "copyright_message" text, 224 + "uri" text, 225 + "album_uri" text, 226 + "artist_uri" text, 227 + "xata_createdat" timestamp DEFAULT now() NOT NULL, 228 + "xata_updatedat" timestamp DEFAULT now() NOT NULL, 229 + "xata_version" integer, 230 + CONSTRAINT "tracks_mb_id_unique" UNIQUE("mb_id"), 231 + CONSTRAINT "tracks_youtube_link_unique" UNIQUE("youtube_link"), 232 + CONSTRAINT "tracks_spotify_link_unique" UNIQUE("spotify_link"), 233 + CONSTRAINT "tracks_apple_music_link_unique" UNIQUE("apple_music_link"), 234 + CONSTRAINT "tracks_tidal_link_unique" UNIQUE("tidal_link"), 235 + CONSTRAINT "tracks_sha256_unique" UNIQUE("sha256"), 236 + CONSTRAINT "tracks_uri_unique" UNIQUE("uri"), 237 + CONSTRAINT "tracks_album_uri_unique" UNIQUE("album_uri"), 238 + CONSTRAINT "tracks_artist_uri_unique" UNIQUE("artist_uri") 239 + ); 240 + --> statement-breakpoint 241 + CREATE TABLE "user_albums" ( 242 + "xata_id" text PRIMARY KEY NOT NULL, 243 + "user_id" text NOT NULL, 244 + "album_id" text NOT NULL, 245 + "xata_createdat" timestamp DEFAULT now() NOT NULL, 246 + "xata_updatedat" timestamp DEFAULT now() NOT NULL, 247 + "xata_version" integer NOT NULL, 248 + "scrobbles" integer, 249 + "uri" text NOT NULL, 250 + CONSTRAINT "user_albums_uri_unique" UNIQUE("uri") 251 + ); 252 + --> statement-breakpoint 253 + CREATE TABLE "user_artists" ( 254 + "xata_id" text PRIMARY KEY NOT NULL, 255 + "user_id" text NOT NULL, 256 + "artist_id" text NOT NULL, 257 + "xata_createdat" timestamp DEFAULT now() NOT NULL, 258 + "xata_updatedat" timestamp DEFAULT now() NOT NULL, 259 + "xata_version" integer NOT NULL, 260 + "scrobbles" integer, 261 + "uri" text NOT NULL, 262 + CONSTRAINT "user_artists_uri_unique" UNIQUE("uri") 263 + ); 264 + --> statement-breakpoint 265 + CREATE TABLE "user_playlists" ( 266 + "xata_id" text PRIMARY KEY NOT NULL, 267 + "user_id" text NOT NULL, 268 + "playlist_id" text NOT NULL, 269 + "xata_createdat" timestamp DEFAULT now() NOT NULL, 270 + "uri" text NOT NULL, 271 + CONSTRAINT "user_playlists_uri_unique" UNIQUE("uri") 272 + ); 273 + --> statement-breakpoint 274 + CREATE TABLE "user_tracks" ( 275 + "xata_id" text PRIMARY KEY NOT NULL, 276 + "user_id" text NOT NULL, 277 + "track_id" text NOT NULL, 278 + "xata_createdat" timestamp DEFAULT now() NOT NULL, 279 + "xata_updatedat" timestamp DEFAULT now() NOT NULL, 280 + "xata_version" integer NOT NULL, 281 + "uri" text NOT NULL, 282 + "scrobbles" integer, 283 + CONSTRAINT "user_tracks_uri_unique" UNIQUE("uri") 284 + ); 285 + --> statement-breakpoint 286 + CREATE TABLE "users" ( 287 + "xata_id" text PRIMARY KEY NOT NULL, 288 + "did" text NOT NULL, 289 + "display_name" text NOT NULL, 290 + "handle" text NOT NULL, 291 + "avatar" text NOT NULL, 292 + "xata_createdat" timestamp DEFAULT now() NOT NULL, 293 + "xata_updatedat" timestamp DEFAULT now() NOT NULL, 294 + "xata_version" integer, 295 + CONSTRAINT "users_did_unique" UNIQUE("did"), 296 + CONSTRAINT "users_handle_unique" UNIQUE("handle") 297 + ); 298 + --> statement-breakpoint 299 + CREATE TABLE "webscrobblers" ( 300 + "xata_id" text PRIMARY KEY NOT NULL, 301 + "name" text NOT NULL, 302 + "uuid" text NOT NULL, 303 + "description" text, 304 + "enabled" boolean DEFAULT true NOT NULL, 305 + "user_id" text NOT NULL, 306 + "xata_createdat" timestamp DEFAULT now() NOT NULL, 307 + "xata_updatedat" timestamp DEFAULT now() NOT NULL 308 + ); 309 + --> statement-breakpoint 310 + ALTER TABLE "album_tracks" ADD CONSTRAINT "album_tracks_album_id_albums_xata_id_fk" FOREIGN KEY ("album_id") REFERENCES "public"."albums"("xata_id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint 311 + ALTER TABLE "album_tracks" ADD CONSTRAINT "album_tracks_track_id_tracks_xata_id_fk" FOREIGN KEY ("track_id") REFERENCES "public"."tracks"("xata_id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint 312 + ALTER TABLE "api_keys" ADD CONSTRAINT "api_keys_user_id_users_xata_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."users"("xata_id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint 313 + ALTER TABLE "artist_albums" ADD CONSTRAINT "artist_albums_artist_id_artists_xata_id_fk" FOREIGN KEY ("artist_id") REFERENCES "public"."artists"("xata_id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint 314 + ALTER TABLE "artist_albums" ADD CONSTRAINT "artist_albums_album_id_albums_xata_id_fk" FOREIGN KEY ("album_id") REFERENCES "public"."albums"("xata_id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint 315 + ALTER TABLE "artist_tracks" ADD CONSTRAINT "artist_tracks_artist_id_artists_xata_id_fk" FOREIGN KEY ("artist_id") REFERENCES "public"."artists"("xata_id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint 316 + ALTER TABLE "artist_tracks" ADD CONSTRAINT "artist_tracks_track_id_tracks_xata_id_fk" FOREIGN KEY ("track_id") REFERENCES "public"."tracks"("xata_id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint 317 + ALTER TABLE "loved_tracks" ADD CONSTRAINT "loved_tracks_user_id_users_xata_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."users"("xata_id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint 318 + ALTER TABLE "loved_tracks" ADD CONSTRAINT "loved_tracks_track_id_tracks_xata_id_fk" FOREIGN KEY ("track_id") REFERENCES "public"."tracks"("xata_id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint 319 + ALTER TABLE "playlist_tracks" ADD CONSTRAINT "playlist_tracks_playlist_id_playlists_xata_id_fk" FOREIGN KEY ("playlist_id") REFERENCES "public"."playlists"("xata_id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint 320 + ALTER TABLE "playlist_tracks" ADD CONSTRAINT "playlist_tracks_track_id_tracks_xata_id_fk" FOREIGN KEY ("track_id") REFERENCES "public"."tracks"("xata_id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint 321 + ALTER TABLE "playlists" ADD CONSTRAINT "playlists_created_by_users_xata_id_fk" FOREIGN KEY ("created_by") REFERENCES "public"."users"("xata_id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint 322 + ALTER TABLE "profile_shouts" ADD CONSTRAINT "profile_shouts_user_id_users_xata_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."users"("xata_id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint 323 + ALTER TABLE "profile_shouts" ADD CONSTRAINT "profile_shouts_shout_id_shouts_xata_id_fk" FOREIGN KEY ("shout_id") REFERENCES "public"."shouts"("xata_id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint 324 + ALTER TABLE "scrobbles" ADD CONSTRAINT "scrobbles_user_id_users_xata_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."users"("xata_id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint 325 + ALTER TABLE "scrobbles" ADD CONSTRAINT "scrobbles_track_id_tracks_xata_id_fk" FOREIGN KEY ("track_id") REFERENCES "public"."tracks"("xata_id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint 326 + ALTER TABLE "scrobbles" ADD CONSTRAINT "scrobbles_album_id_albums_xata_id_fk" FOREIGN KEY ("album_id") REFERENCES "public"."albums"("xata_id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint 327 + ALTER TABLE "scrobbles" ADD CONSTRAINT "scrobbles_artist_id_artists_xata_id_fk" FOREIGN KEY ("artist_id") REFERENCES "public"."artists"("xata_id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint 328 + ALTER TABLE "shout_likes" ADD CONSTRAINT "shout_likes_user_id_users_xata_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."users"("xata_id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint 329 + ALTER TABLE "shout_likes" ADD CONSTRAINT "shout_likes_shout_id_shouts_xata_id_fk" FOREIGN KEY ("shout_id") REFERENCES "public"."shouts"("xata_id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint 330 + ALTER TABLE "shout_reports" ADD CONSTRAINT "shout_reports_user_id_users_xata_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."users"("xata_id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint 331 + ALTER TABLE "shout_reports" ADD CONSTRAINT "shout_reports_shout_id_shouts_xata_id_fk" FOREIGN KEY ("shout_id") REFERENCES "public"."shouts"("xata_id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint 332 + ALTER TABLE "shouts" ADD CONSTRAINT "shouts_track_id_tracks_xata_id_fk" FOREIGN KEY ("track_id") REFERENCES "public"."tracks"("xata_id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint 333 + ALTER TABLE "shouts" ADD CONSTRAINT "shouts_artist_id_users_xata_id_fk" FOREIGN KEY ("artist_id") REFERENCES "public"."users"("xata_id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint 334 + ALTER TABLE "shouts" ADD CONSTRAINT "shouts_album_id_albums_xata_id_fk" FOREIGN KEY ("album_id") REFERENCES "public"."albums"("xata_id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint 335 + ALTER TABLE "shouts" ADD CONSTRAINT "shouts_scrobble_id_scrobbles_xata_id_fk" FOREIGN KEY ("scrobble_id") REFERENCES "public"."scrobbles"("xata_id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint 336 + ALTER TABLE "shouts" ADD CONSTRAINT "shouts_author_id_users_xata_id_fk" FOREIGN KEY ("author_id") REFERENCES "public"."users"("xata_id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint 337 + ALTER TABLE "shouts" ADD CONSTRAINT "shouts_parent_id_shouts_xata_id_fk" FOREIGN KEY ("parent_id") REFERENCES "public"."shouts"("xata_id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint 338 + ALTER TABLE "spotify_accounts" ADD CONSTRAINT "spotify_accounts_user_id_users_xata_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."users"("xata_id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint 339 + ALTER TABLE "spotify_tokens" ADD CONSTRAINT "spotify_tokens_user_id_users_xata_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."users"("xata_id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint 340 + ALTER TABLE "user_albums" ADD CONSTRAINT "user_albums_user_id_users_xata_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."users"("xata_id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint 341 + ALTER TABLE "user_albums" ADD CONSTRAINT "user_albums_album_id_albums_xata_id_fk" FOREIGN KEY ("album_id") REFERENCES "public"."albums"("xata_id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint 342 + ALTER TABLE "user_artists" ADD CONSTRAINT "user_artists_user_id_users_xata_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."users"("xata_id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint 343 + ALTER TABLE "user_artists" ADD CONSTRAINT "user_artists_artist_id_artists_xata_id_fk" FOREIGN KEY ("artist_id") REFERENCES "public"."artists"("xata_id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint 344 + ALTER TABLE "user_playlists" ADD CONSTRAINT "user_playlists_user_id_users_xata_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."users"("xata_id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint 345 + ALTER TABLE "user_playlists" ADD CONSTRAINT "user_playlists_playlist_id_tracks_xata_id_fk" FOREIGN KEY ("playlist_id") REFERENCES "public"."tracks"("xata_id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint 346 + ALTER TABLE "user_tracks" ADD CONSTRAINT "user_tracks_user_id_users_xata_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."users"("xata_id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint 347 + ALTER TABLE "user_tracks" ADD CONSTRAINT "user_tracks_track_id_tracks_xata_id_fk" FOREIGN KEY ("track_id") REFERENCES "public"."tracks"("xata_id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint 348 + ALTER TABLE "webscrobblers" ADD CONSTRAINT "webscrobblers_user_id_users_xata_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."users"("xata_id") ON DELETE no action ON UPDATE no action;
+2363
rockskyapi/rocksky-auth/drizzle/meta/0000_snapshot.json
··· 1 + { 2 + "id": "4c369380-a733-4097-b87a-036a11bbc173", 3 + "prevId": "00000000-0000-0000-0000-000000000000", 4 + "version": "7", 5 + "dialect": "postgresql", 6 + "tables": { 7 + "public.album_tracks": { 8 + "name": "album_tracks", 9 + "schema": "", 10 + "columns": { 11 + "xata_id": { 12 + "name": "xata_id", 13 + "type": "text", 14 + "primaryKey": true, 15 + "notNull": true 16 + }, 17 + "album_id": { 18 + "name": "album_id", 19 + "type": "text", 20 + "primaryKey": false, 21 + "notNull": true 22 + }, 23 + "track_id": { 24 + "name": "track_id", 25 + "type": "text", 26 + "primaryKey": false, 27 + "notNull": true 28 + }, 29 + "xata_createdat": { 30 + "name": "xata_createdat", 31 + "type": "timestamp", 32 + "primaryKey": false, 33 + "notNull": true, 34 + "default": "now()" 35 + }, 36 + "xata_updatedat": { 37 + "name": "xata_updatedat", 38 + "type": "timestamp", 39 + "primaryKey": false, 40 + "notNull": true, 41 + "default": "now()" 42 + }, 43 + "xata_version": { 44 + "name": "xata_version", 45 + "type": "integer", 46 + "primaryKey": false, 47 + "notNull": true 48 + } 49 + }, 50 + "indexes": {}, 51 + "foreignKeys": { 52 + "album_tracks_album_id_albums_xata_id_fk": { 53 + "name": "album_tracks_album_id_albums_xata_id_fk", 54 + "tableFrom": "album_tracks", 55 + "tableTo": "albums", 56 + "columnsFrom": [ 57 + "album_id" 58 + ], 59 + "columnsTo": [ 60 + "xata_id" 61 + ], 62 + "onDelete": "no action", 63 + "onUpdate": "no action" 64 + }, 65 + "album_tracks_track_id_tracks_xata_id_fk": { 66 + "name": "album_tracks_track_id_tracks_xata_id_fk", 67 + "tableFrom": "album_tracks", 68 + "tableTo": "tracks", 69 + "columnsFrom": [ 70 + "track_id" 71 + ], 72 + "columnsTo": [ 73 + "xata_id" 74 + ], 75 + "onDelete": "no action", 76 + "onUpdate": "no action" 77 + } 78 + }, 79 + "compositePrimaryKeys": {}, 80 + "uniqueConstraints": {}, 81 + "policies": {}, 82 + "checkConstraints": {}, 83 + "isRLSEnabled": false 84 + }, 85 + "public.albums": { 86 + "name": "albums", 87 + "schema": "", 88 + "columns": { 89 + "xata_id": { 90 + "name": "xata_id", 91 + "type": "text", 92 + "primaryKey": true, 93 + "notNull": true 94 + }, 95 + "title": { 96 + "name": "title", 97 + "type": "text", 98 + "primaryKey": false, 99 + "notNull": true 100 + }, 101 + "artist": { 102 + "name": "artist", 103 + "type": "text", 104 + "primaryKey": false, 105 + "notNull": true 106 + }, 107 + "release_date": { 108 + "name": "release_date", 109 + "type": "text", 110 + "primaryKey": false, 111 + "notNull": false 112 + }, 113 + "year": { 114 + "name": "year", 115 + "type": "integer", 116 + "primaryKey": false, 117 + "notNull": false 118 + }, 119 + "album_art": { 120 + "name": "album_art", 121 + "type": "text", 122 + "primaryKey": false, 123 + "notNull": false 124 + }, 125 + "uri": { 126 + "name": "uri", 127 + "type": "text", 128 + "primaryKey": false, 129 + "notNull": false 130 + }, 131 + "artist_uri": { 132 + "name": "artist_uri", 133 + "type": "text", 134 + "primaryKey": false, 135 + "notNull": false 136 + }, 137 + "apple_music_link": { 138 + "name": "apple_music_link", 139 + "type": "text", 140 + "primaryKey": false, 141 + "notNull": false 142 + }, 143 + "spotify_link": { 144 + "name": "spotify_link", 145 + "type": "text", 146 + "primaryKey": false, 147 + "notNull": false 148 + }, 149 + "tidal_link": { 150 + "name": "tidal_link", 151 + "type": "text", 152 + "primaryKey": false, 153 + "notNull": false 154 + }, 155 + "youtube_link": { 156 + "name": "youtube_link", 157 + "type": "text", 158 + "primaryKey": false, 159 + "notNull": false 160 + }, 161 + "sha256": { 162 + "name": "sha256", 163 + "type": "text", 164 + "primaryKey": false, 165 + "notNull": true 166 + }, 167 + "xata_createdat": { 168 + "name": "xata_createdat", 169 + "type": "timestamp", 170 + "primaryKey": false, 171 + "notNull": true, 172 + "default": "now()" 173 + }, 174 + "xata_updatedat": { 175 + "name": "xata_updatedat", 176 + "type": "timestamp", 177 + "primaryKey": false, 178 + "notNull": true, 179 + "default": "now()" 180 + }, 181 + "xata_version": { 182 + "name": "xata_version", 183 + "type": "integer", 184 + "primaryKey": false, 185 + "notNull": false 186 + } 187 + }, 188 + "indexes": {}, 189 + "foreignKeys": {}, 190 + "compositePrimaryKeys": {}, 191 + "uniqueConstraints": { 192 + "albums_uri_unique": { 193 + "name": "albums_uri_unique", 194 + "nullsNotDistinct": false, 195 + "columns": [ 196 + "uri" 197 + ] 198 + }, 199 + "albums_apple_music_link_unique": { 200 + "name": "albums_apple_music_link_unique", 201 + "nullsNotDistinct": false, 202 + "columns": [ 203 + "apple_music_link" 204 + ] 205 + }, 206 + "albums_spotify_link_unique": { 207 + "name": "albums_spotify_link_unique", 208 + "nullsNotDistinct": false, 209 + "columns": [ 210 + "spotify_link" 211 + ] 212 + }, 213 + "albums_tidal_link_unique": { 214 + "name": "albums_tidal_link_unique", 215 + "nullsNotDistinct": false, 216 + "columns": [ 217 + "tidal_link" 218 + ] 219 + }, 220 + "albums_youtube_link_unique": { 221 + "name": "albums_youtube_link_unique", 222 + "nullsNotDistinct": false, 223 + "columns": [ 224 + "youtube_link" 225 + ] 226 + }, 227 + "albums_sha256_unique": { 228 + "name": "albums_sha256_unique", 229 + "nullsNotDistinct": false, 230 + "columns": [ 231 + "sha256" 232 + ] 233 + } 234 + }, 235 + "policies": {}, 236 + "checkConstraints": {}, 237 + "isRLSEnabled": false 238 + }, 239 + "public.api_keys": { 240 + "name": "api_keys", 241 + "schema": "", 242 + "columns": { 243 + "xata_id": { 244 + "name": "xata_id", 245 + "type": "text", 246 + "primaryKey": true, 247 + "notNull": true 248 + }, 249 + "name": { 250 + "name": "name", 251 + "type": "text", 252 + "primaryKey": false, 253 + "notNull": true 254 + }, 255 + "api_key": { 256 + "name": "api_key", 257 + "type": "text", 258 + "primaryKey": false, 259 + "notNull": true 260 + }, 261 + "shared_secret": { 262 + "name": "shared_secret", 263 + "type": "text", 264 + "primaryKey": false, 265 + "notNull": true 266 + }, 267 + "description": { 268 + "name": "description", 269 + "type": "text", 270 + "primaryKey": false, 271 + "notNull": false 272 + }, 273 + "enabled": { 274 + "name": "enabled", 275 + "type": "boolean", 276 + "primaryKey": false, 277 + "notNull": true, 278 + "default": true 279 + }, 280 + "user_id": { 281 + "name": "user_id", 282 + "type": "text", 283 + "primaryKey": false, 284 + "notNull": true 285 + }, 286 + "xata_createdat": { 287 + "name": "xata_createdat", 288 + "type": "timestamp", 289 + "primaryKey": false, 290 + "notNull": true, 291 + "default": "now()" 292 + }, 293 + "xata_updatedat": { 294 + "name": "xata_updatedat", 295 + "type": "timestamp", 296 + "primaryKey": false, 297 + "notNull": true, 298 + "default": "now()" 299 + } 300 + }, 301 + "indexes": {}, 302 + "foreignKeys": { 303 + "api_keys_user_id_users_xata_id_fk": { 304 + "name": "api_keys_user_id_users_xata_id_fk", 305 + "tableFrom": "api_keys", 306 + "tableTo": "users", 307 + "columnsFrom": [ 308 + "user_id" 309 + ], 310 + "columnsTo": [ 311 + "xata_id" 312 + ], 313 + "onDelete": "no action", 314 + "onUpdate": "no action" 315 + } 316 + }, 317 + "compositePrimaryKeys": {}, 318 + "uniqueConstraints": {}, 319 + "policies": {}, 320 + "checkConstraints": {}, 321 + "isRLSEnabled": false 322 + }, 323 + "public.artist_albums": { 324 + "name": "artist_albums", 325 + "schema": "", 326 + "columns": { 327 + "xata_id": { 328 + "name": "xata_id", 329 + "type": "text", 330 + "primaryKey": true, 331 + "notNull": true 332 + }, 333 + "artist_id": { 334 + "name": "artist_id", 335 + "type": "text", 336 + "primaryKey": false, 337 + "notNull": true 338 + }, 339 + "album_id": { 340 + "name": "album_id", 341 + "type": "text", 342 + "primaryKey": false, 343 + "notNull": true 344 + }, 345 + "xata_createdat": { 346 + "name": "xata_createdat", 347 + "type": "timestamp", 348 + "primaryKey": false, 349 + "notNull": true, 350 + "default": "now()" 351 + }, 352 + "xata_updatedat": { 353 + "name": "xata_updatedat", 354 + "type": "timestamp", 355 + "primaryKey": false, 356 + "notNull": true, 357 + "default": "now()" 358 + }, 359 + "xata_version": { 360 + "name": "xata_version", 361 + "type": "integer", 362 + "primaryKey": false, 363 + "notNull": true 364 + } 365 + }, 366 + "indexes": {}, 367 + "foreignKeys": { 368 + "artist_albums_artist_id_artists_xata_id_fk": { 369 + "name": "artist_albums_artist_id_artists_xata_id_fk", 370 + "tableFrom": "artist_albums", 371 + "tableTo": "artists", 372 + "columnsFrom": [ 373 + "artist_id" 374 + ], 375 + "columnsTo": [ 376 + "xata_id" 377 + ], 378 + "onDelete": "no action", 379 + "onUpdate": "no action" 380 + }, 381 + "artist_albums_album_id_albums_xata_id_fk": { 382 + "name": "artist_albums_album_id_albums_xata_id_fk", 383 + "tableFrom": "artist_albums", 384 + "tableTo": "albums", 385 + "columnsFrom": [ 386 + "album_id" 387 + ], 388 + "columnsTo": [ 389 + "xata_id" 390 + ], 391 + "onDelete": "no action", 392 + "onUpdate": "no action" 393 + } 394 + }, 395 + "compositePrimaryKeys": {}, 396 + "uniqueConstraints": {}, 397 + "policies": {}, 398 + "checkConstraints": {}, 399 + "isRLSEnabled": false 400 + }, 401 + "public.artist_tracks": { 402 + "name": "artist_tracks", 403 + "schema": "", 404 + "columns": { 405 + "xata_id": { 406 + "name": "xata_id", 407 + "type": "text", 408 + "primaryKey": true, 409 + "notNull": true 410 + }, 411 + "artist_id": { 412 + "name": "artist_id", 413 + "type": "text", 414 + "primaryKey": false, 415 + "notNull": true 416 + }, 417 + "track_id": { 418 + "name": "track_id", 419 + "type": "text", 420 + "primaryKey": false, 421 + "notNull": true 422 + }, 423 + "xata_createdat": { 424 + "name": "xata_createdat", 425 + "type": "timestamp", 426 + "primaryKey": false, 427 + "notNull": true, 428 + "default": "now()" 429 + }, 430 + "xata_updatedat": { 431 + "name": "xata_updatedat", 432 + "type": "timestamp", 433 + "primaryKey": false, 434 + "notNull": true, 435 + "default": "now()" 436 + }, 437 + "xata_version": { 438 + "name": "xata_version", 439 + "type": "integer", 440 + "primaryKey": false, 441 + "notNull": true 442 + } 443 + }, 444 + "indexes": {}, 445 + "foreignKeys": { 446 + "artist_tracks_artist_id_artists_xata_id_fk": { 447 + "name": "artist_tracks_artist_id_artists_xata_id_fk", 448 + "tableFrom": "artist_tracks", 449 + "tableTo": "artists", 450 + "columnsFrom": [ 451 + "artist_id" 452 + ], 453 + "columnsTo": [ 454 + "xata_id" 455 + ], 456 + "onDelete": "no action", 457 + "onUpdate": "no action" 458 + }, 459 + "artist_tracks_track_id_tracks_xata_id_fk": { 460 + "name": "artist_tracks_track_id_tracks_xata_id_fk", 461 + "tableFrom": "artist_tracks", 462 + "tableTo": "tracks", 463 + "columnsFrom": [ 464 + "track_id" 465 + ], 466 + "columnsTo": [ 467 + "xata_id" 468 + ], 469 + "onDelete": "no action", 470 + "onUpdate": "no action" 471 + } 472 + }, 473 + "compositePrimaryKeys": {}, 474 + "uniqueConstraints": {}, 475 + "policies": {}, 476 + "checkConstraints": {}, 477 + "isRLSEnabled": false 478 + }, 479 + "public.artists": { 480 + "name": "artists", 481 + "schema": "", 482 + "columns": { 483 + "xata_id": { 484 + "name": "xata_id", 485 + "type": "text", 486 + "primaryKey": true, 487 + "notNull": true 488 + }, 489 + "name": { 490 + "name": "name", 491 + "type": "text", 492 + "primaryKey": false, 493 + "notNull": true 494 + }, 495 + "biography": { 496 + "name": "biography", 497 + "type": "text", 498 + "primaryKey": false, 499 + "notNull": false 500 + }, 501 + "born": { 502 + "name": "born", 503 + "type": "timestamp", 504 + "primaryKey": false, 505 + "notNull": false 506 + }, 507 + "born_in": { 508 + "name": "born_in", 509 + "type": "text", 510 + "primaryKey": false, 511 + "notNull": false 512 + }, 513 + "died": { 514 + "name": "died", 515 + "type": "timestamp", 516 + "primaryKey": false, 517 + "notNull": false 518 + }, 519 + "picture": { 520 + "name": "picture", 521 + "type": "text", 522 + "primaryKey": false, 523 + "notNull": false 524 + }, 525 + "sha256": { 526 + "name": "sha256", 527 + "type": "text", 528 + "primaryKey": false, 529 + "notNull": true 530 + }, 531 + "uri": { 532 + "name": "uri", 533 + "type": "text", 534 + "primaryKey": false, 535 + "notNull": false 536 + }, 537 + "apple_music_link": { 538 + "name": "apple_music_link", 539 + "type": "text", 540 + "primaryKey": false, 541 + "notNull": false 542 + }, 543 + "spotify_link": { 544 + "name": "spotify_link", 545 + "type": "text", 546 + "primaryKey": false, 547 + "notNull": false 548 + }, 549 + "tidal_link": { 550 + "name": "tidal_link", 551 + "type": "text", 552 + "primaryKey": false, 553 + "notNull": false 554 + }, 555 + "youtube_link": { 556 + "name": "youtube_link", 557 + "type": "text", 558 + "primaryKey": false, 559 + "notNull": false 560 + }, 561 + "xata_createdat": { 562 + "name": "xata_createdat", 563 + "type": "timestamp", 564 + "primaryKey": false, 565 + "notNull": true, 566 + "default": "now()" 567 + }, 568 + "xata_updatedat": { 569 + "name": "xata_updatedat", 570 + "type": "timestamp", 571 + "primaryKey": false, 572 + "notNull": true, 573 + "default": "now()" 574 + }, 575 + "xata_version": { 576 + "name": "xata_version", 577 + "type": "integer", 578 + "primaryKey": false, 579 + "notNull": false 580 + } 581 + }, 582 + "indexes": {}, 583 + "foreignKeys": {}, 584 + "compositePrimaryKeys": {}, 585 + "uniqueConstraints": { 586 + "artists_sha256_unique": { 587 + "name": "artists_sha256_unique", 588 + "nullsNotDistinct": false, 589 + "columns": [ 590 + "sha256" 591 + ] 592 + }, 593 + "artists_uri_unique": { 594 + "name": "artists_uri_unique", 595 + "nullsNotDistinct": false, 596 + "columns": [ 597 + "uri" 598 + ] 599 + } 600 + }, 601 + "policies": {}, 602 + "checkConstraints": {}, 603 + "isRLSEnabled": false 604 + }, 605 + "public.dropbox_tokens": { 606 + "name": "dropbox_tokens", 607 + "schema": "", 608 + "columns": { 609 + "xata_id": { 610 + "name": "xata_id", 611 + "type": "text", 612 + "primaryKey": true, 613 + "notNull": true 614 + }, 615 + "refresh_token": { 616 + "name": "refresh_token", 617 + "type": "text", 618 + "primaryKey": false, 619 + "notNull": true 620 + }, 621 + "xata_createdat": { 622 + "name": "xata_createdat", 623 + "type": "timestamp", 624 + "primaryKey": false, 625 + "notNull": true, 626 + "default": "now()" 627 + }, 628 + "xata_updatedat": { 629 + "name": "xata_updatedat", 630 + "type": "timestamp", 631 + "primaryKey": false, 632 + "notNull": true, 633 + "default": "now()" 634 + } 635 + }, 636 + "indexes": {}, 637 + "foreignKeys": {}, 638 + "compositePrimaryKeys": {}, 639 + "uniqueConstraints": {}, 640 + "policies": {}, 641 + "checkConstraints": {}, 642 + "isRLSEnabled": false 643 + }, 644 + "public.google_drive_tokens": { 645 + "name": "google_drive_tokens", 646 + "schema": "", 647 + "columns": { 648 + "xata_id": { 649 + "name": "xata_id", 650 + "type": "text", 651 + "primaryKey": true, 652 + "notNull": true 653 + }, 654 + "refresh_token": { 655 + "name": "refresh_token", 656 + "type": "text", 657 + "primaryKey": false, 658 + "notNull": true 659 + }, 660 + "xata_createdat": { 661 + "name": "xata_createdat", 662 + "type": "timestamp", 663 + "primaryKey": false, 664 + "notNull": true, 665 + "default": "now()" 666 + }, 667 + "xata_updatedat": { 668 + "name": "xata_updatedat", 669 + "type": "timestamp", 670 + "primaryKey": false, 671 + "notNull": true, 672 + "default": "now()" 673 + } 674 + }, 675 + "indexes": {}, 676 + "foreignKeys": {}, 677 + "compositePrimaryKeys": {}, 678 + "uniqueConstraints": {}, 679 + "policies": {}, 680 + "checkConstraints": {}, 681 + "isRLSEnabled": false 682 + }, 683 + "public.loved_tracks": { 684 + "name": "loved_tracks", 685 + "schema": "", 686 + "columns": { 687 + "xata_id": { 688 + "name": "xata_id", 689 + "type": "text", 690 + "primaryKey": true, 691 + "notNull": true 692 + }, 693 + "user_id": { 694 + "name": "user_id", 695 + "type": "text", 696 + "primaryKey": false, 697 + "notNull": true 698 + }, 699 + "track_id": { 700 + "name": "track_id", 701 + "type": "text", 702 + "primaryKey": false, 703 + "notNull": true 704 + }, 705 + "uri": { 706 + "name": "uri", 707 + "type": "text", 708 + "primaryKey": false, 709 + "notNull": false 710 + }, 711 + "xata_createdat": { 712 + "name": "xata_createdat", 713 + "type": "timestamp", 714 + "primaryKey": false, 715 + "notNull": true, 716 + "default": "now()" 717 + } 718 + }, 719 + "indexes": {}, 720 + "foreignKeys": { 721 + "loved_tracks_user_id_users_xata_id_fk": { 722 + "name": "loved_tracks_user_id_users_xata_id_fk", 723 + "tableFrom": "loved_tracks", 724 + "tableTo": "users", 725 + "columnsFrom": [ 726 + "user_id" 727 + ], 728 + "columnsTo": [ 729 + "xata_id" 730 + ], 731 + "onDelete": "no action", 732 + "onUpdate": "no action" 733 + }, 734 + "loved_tracks_track_id_tracks_xata_id_fk": { 735 + "name": "loved_tracks_track_id_tracks_xata_id_fk", 736 + "tableFrom": "loved_tracks", 737 + "tableTo": "tracks", 738 + "columnsFrom": [ 739 + "track_id" 740 + ], 741 + "columnsTo": [ 742 + "xata_id" 743 + ], 744 + "onDelete": "no action", 745 + "onUpdate": "no action" 746 + } 747 + }, 748 + "compositePrimaryKeys": {}, 749 + "uniqueConstraints": { 750 + "loved_tracks_uri_unique": { 751 + "name": "loved_tracks_uri_unique", 752 + "nullsNotDistinct": false, 753 + "columns": [ 754 + "uri" 755 + ] 756 + } 757 + }, 758 + "policies": {}, 759 + "checkConstraints": {}, 760 + "isRLSEnabled": false 761 + }, 762 + "public.playlist_tracks": { 763 + "name": "playlist_tracks", 764 + "schema": "", 765 + "columns": { 766 + "xata_id": { 767 + "name": "xata_id", 768 + "type": "text", 769 + "primaryKey": true, 770 + "notNull": true 771 + }, 772 + "playlist_id": { 773 + "name": "playlist_id", 774 + "type": "text", 775 + "primaryKey": false, 776 + "notNull": true 777 + }, 778 + "track_id": { 779 + "name": "track_id", 780 + "type": "text", 781 + "primaryKey": false, 782 + "notNull": true 783 + }, 784 + "xata_createdat": { 785 + "name": "xata_createdat", 786 + "type": "timestamp", 787 + "primaryKey": false, 788 + "notNull": true, 789 + "default": "now()" 790 + } 791 + }, 792 + "indexes": {}, 793 + "foreignKeys": { 794 + "playlist_tracks_playlist_id_playlists_xata_id_fk": { 795 + "name": "playlist_tracks_playlist_id_playlists_xata_id_fk", 796 + "tableFrom": "playlist_tracks", 797 + "tableTo": "playlists", 798 + "columnsFrom": [ 799 + "playlist_id" 800 + ], 801 + "columnsTo": [ 802 + "xata_id" 803 + ], 804 + "onDelete": "no action", 805 + "onUpdate": "no action" 806 + }, 807 + "playlist_tracks_track_id_tracks_xata_id_fk": { 808 + "name": "playlist_tracks_track_id_tracks_xata_id_fk", 809 + "tableFrom": "playlist_tracks", 810 + "tableTo": "tracks", 811 + "columnsFrom": [ 812 + "track_id" 813 + ], 814 + "columnsTo": [ 815 + "xata_id" 816 + ], 817 + "onDelete": "no action", 818 + "onUpdate": "no action" 819 + } 820 + }, 821 + "compositePrimaryKeys": {}, 822 + "uniqueConstraints": {}, 823 + "policies": {}, 824 + "checkConstraints": {}, 825 + "isRLSEnabled": false 826 + }, 827 + "public.playlists": { 828 + "name": "playlists", 829 + "schema": "", 830 + "columns": { 831 + "xata_id": { 832 + "name": "xata_id", 833 + "type": "text", 834 + "primaryKey": true, 835 + "notNull": true 836 + }, 837 + "name": { 838 + "name": "name", 839 + "type": "text", 840 + "primaryKey": false, 841 + "notNull": true 842 + }, 843 + "picture": { 844 + "name": "picture", 845 + "type": "text", 846 + "primaryKey": false, 847 + "notNull": false 848 + }, 849 + "description": { 850 + "name": "description", 851 + "type": "text", 852 + "primaryKey": false, 853 + "notNull": false 854 + }, 855 + "uri": { 856 + "name": "uri", 857 + "type": "text", 858 + "primaryKey": false, 859 + "notNull": false 860 + }, 861 + "spotify_link": { 862 + "name": "spotify_link", 863 + "type": "text", 864 + "primaryKey": false, 865 + "notNull": false 866 + }, 867 + "tidal_link": { 868 + "name": "tidal_link", 869 + "type": "text", 870 + "primaryKey": false, 871 + "notNull": false 872 + }, 873 + "apple_music_link": { 874 + "name": "apple_music_link", 875 + "type": "text", 876 + "primaryKey": false, 877 + "notNull": false 878 + }, 879 + "created_by": { 880 + "name": "created_by", 881 + "type": "text", 882 + "primaryKey": false, 883 + "notNull": true 884 + }, 885 + "xata_createdat": { 886 + "name": "xata_createdat", 887 + "type": "timestamp", 888 + "primaryKey": false, 889 + "notNull": true, 890 + "default": "now()" 891 + }, 892 + "xata_updatedat": { 893 + "name": "xata_updatedat", 894 + "type": "timestamp", 895 + "primaryKey": false, 896 + "notNull": true, 897 + "default": "now()" 898 + } 899 + }, 900 + "indexes": {}, 901 + "foreignKeys": { 902 + "playlists_created_by_users_xata_id_fk": { 903 + "name": "playlists_created_by_users_xata_id_fk", 904 + "tableFrom": "playlists", 905 + "tableTo": "users", 906 + "columnsFrom": [ 907 + "created_by" 908 + ], 909 + "columnsTo": [ 910 + "xata_id" 911 + ], 912 + "onDelete": "no action", 913 + "onUpdate": "no action" 914 + } 915 + }, 916 + "compositePrimaryKeys": {}, 917 + "uniqueConstraints": { 918 + "playlists_uri_unique": { 919 + "name": "playlists_uri_unique", 920 + "nullsNotDistinct": false, 921 + "columns": [ 922 + "uri" 923 + ] 924 + } 925 + }, 926 + "policies": {}, 927 + "checkConstraints": {}, 928 + "isRLSEnabled": false 929 + }, 930 + "public.profile_shouts": { 931 + "name": "profile_shouts", 932 + "schema": "", 933 + "columns": { 934 + "xata_id": { 935 + "name": "xata_id", 936 + "type": "text", 937 + "primaryKey": true, 938 + "notNull": true 939 + }, 940 + "user_id": { 941 + "name": "user_id", 942 + "type": "text", 943 + "primaryKey": false, 944 + "notNull": true 945 + }, 946 + "shout_id": { 947 + "name": "shout_id", 948 + "type": "text", 949 + "primaryKey": false, 950 + "notNull": true 951 + }, 952 + "xata_createdat": { 953 + "name": "xata_createdat", 954 + "type": "timestamp", 955 + "primaryKey": false, 956 + "notNull": true, 957 + "default": "now()" 958 + } 959 + }, 960 + "indexes": {}, 961 + "foreignKeys": { 962 + "profile_shouts_user_id_users_xata_id_fk": { 963 + "name": "profile_shouts_user_id_users_xata_id_fk", 964 + "tableFrom": "profile_shouts", 965 + "tableTo": "users", 966 + "columnsFrom": [ 967 + "user_id" 968 + ], 969 + "columnsTo": [ 970 + "xata_id" 971 + ], 972 + "onDelete": "no action", 973 + "onUpdate": "no action" 974 + }, 975 + "profile_shouts_shout_id_shouts_xata_id_fk": { 976 + "name": "profile_shouts_shout_id_shouts_xata_id_fk", 977 + "tableFrom": "profile_shouts", 978 + "tableTo": "shouts", 979 + "columnsFrom": [ 980 + "shout_id" 981 + ], 982 + "columnsTo": [ 983 + "xata_id" 984 + ], 985 + "onDelete": "no action", 986 + "onUpdate": "no action" 987 + } 988 + }, 989 + "compositePrimaryKeys": {}, 990 + "uniqueConstraints": {}, 991 + "policies": {}, 992 + "checkConstraints": {}, 993 + "isRLSEnabled": false 994 + }, 995 + "public.scrobbles": { 996 + "name": "scrobbles", 997 + "schema": "", 998 + "columns": { 999 + "xata_id": { 1000 + "name": "xata_id", 1001 + "type": "text", 1002 + "primaryKey": true, 1003 + "notNull": true 1004 + }, 1005 + "user_id": { 1006 + "name": "user_id", 1007 + "type": "text", 1008 + "primaryKey": false, 1009 + "notNull": false 1010 + }, 1011 + "track_id": { 1012 + "name": "track_id", 1013 + "type": "text", 1014 + "primaryKey": false, 1015 + "notNull": false 1016 + }, 1017 + "album_id": { 1018 + "name": "album_id", 1019 + "type": "text", 1020 + "primaryKey": false, 1021 + "notNull": false 1022 + }, 1023 + "artist_id": { 1024 + "name": "artist_id", 1025 + "type": "text", 1026 + "primaryKey": false, 1027 + "notNull": false 1028 + }, 1029 + "uri": { 1030 + "name": "uri", 1031 + "type": "text", 1032 + "primaryKey": false, 1033 + "notNull": false 1034 + }, 1035 + "xata_createdat": { 1036 + "name": "xata_createdat", 1037 + "type": "timestamp", 1038 + "primaryKey": false, 1039 + "notNull": true, 1040 + "default": "now()" 1041 + }, 1042 + "xata_updatedat": { 1043 + "name": "xata_updatedat", 1044 + "type": "timestamp", 1045 + "primaryKey": false, 1046 + "notNull": true, 1047 + "default": "now()" 1048 + }, 1049 + "xata_version": { 1050 + "name": "xata_version", 1051 + "type": "integer", 1052 + "primaryKey": false, 1053 + "notNull": false 1054 + }, 1055 + "timestamp": { 1056 + "name": "timestamp", 1057 + "type": "timestamp", 1058 + "primaryKey": false, 1059 + "notNull": true, 1060 + "default": "now()" 1061 + } 1062 + }, 1063 + "indexes": {}, 1064 + "foreignKeys": { 1065 + "scrobbles_user_id_users_xata_id_fk": { 1066 + "name": "scrobbles_user_id_users_xata_id_fk", 1067 + "tableFrom": "scrobbles", 1068 + "tableTo": "users", 1069 + "columnsFrom": [ 1070 + "user_id" 1071 + ], 1072 + "columnsTo": [ 1073 + "xata_id" 1074 + ], 1075 + "onDelete": "no action", 1076 + "onUpdate": "no action" 1077 + }, 1078 + "scrobbles_track_id_tracks_xata_id_fk": { 1079 + "name": "scrobbles_track_id_tracks_xata_id_fk", 1080 + "tableFrom": "scrobbles", 1081 + "tableTo": "tracks", 1082 + "columnsFrom": [ 1083 + "track_id" 1084 + ], 1085 + "columnsTo": [ 1086 + "xata_id" 1087 + ], 1088 + "onDelete": "no action", 1089 + "onUpdate": "no action" 1090 + }, 1091 + "scrobbles_album_id_albums_xata_id_fk": { 1092 + "name": "scrobbles_album_id_albums_xata_id_fk", 1093 + "tableFrom": "scrobbles", 1094 + "tableTo": "albums", 1095 + "columnsFrom": [ 1096 + "album_id" 1097 + ], 1098 + "columnsTo": [ 1099 + "xata_id" 1100 + ], 1101 + "onDelete": "no action", 1102 + "onUpdate": "no action" 1103 + }, 1104 + "scrobbles_artist_id_artists_xata_id_fk": { 1105 + "name": "scrobbles_artist_id_artists_xata_id_fk", 1106 + "tableFrom": "scrobbles", 1107 + "tableTo": "artists", 1108 + "columnsFrom": [ 1109 + "artist_id" 1110 + ], 1111 + "columnsTo": [ 1112 + "xata_id" 1113 + ], 1114 + "onDelete": "no action", 1115 + "onUpdate": "no action" 1116 + } 1117 + }, 1118 + "compositePrimaryKeys": {}, 1119 + "uniqueConstraints": { 1120 + "scrobbles_uri_unique": { 1121 + "name": "scrobbles_uri_unique", 1122 + "nullsNotDistinct": false, 1123 + "columns": [ 1124 + "uri" 1125 + ] 1126 + } 1127 + }, 1128 + "policies": {}, 1129 + "checkConstraints": {}, 1130 + "isRLSEnabled": false 1131 + }, 1132 + "public.shout_likes": { 1133 + "name": "shout_likes", 1134 + "schema": "", 1135 + "columns": { 1136 + "xata_id": { 1137 + "name": "xata_id", 1138 + "type": "text", 1139 + "primaryKey": true, 1140 + "notNull": true 1141 + }, 1142 + "user_id": { 1143 + "name": "user_id", 1144 + "type": "text", 1145 + "primaryKey": false, 1146 + "notNull": true 1147 + }, 1148 + "shout_id": { 1149 + "name": "shout_id", 1150 + "type": "text", 1151 + "primaryKey": false, 1152 + "notNull": true 1153 + }, 1154 + "xata_createdat": { 1155 + "name": "xata_createdat", 1156 + "type": "timestamp", 1157 + "primaryKey": false, 1158 + "notNull": true, 1159 + "default": "now()" 1160 + }, 1161 + "uri": { 1162 + "name": "uri", 1163 + "type": "text", 1164 + "primaryKey": false, 1165 + "notNull": true 1166 + } 1167 + }, 1168 + "indexes": {}, 1169 + "foreignKeys": { 1170 + "shout_likes_user_id_users_xata_id_fk": { 1171 + "name": "shout_likes_user_id_users_xata_id_fk", 1172 + "tableFrom": "shout_likes", 1173 + "tableTo": "users", 1174 + "columnsFrom": [ 1175 + "user_id" 1176 + ], 1177 + "columnsTo": [ 1178 + "xata_id" 1179 + ], 1180 + "onDelete": "no action", 1181 + "onUpdate": "no action" 1182 + }, 1183 + "shout_likes_shout_id_shouts_xata_id_fk": { 1184 + "name": "shout_likes_shout_id_shouts_xata_id_fk", 1185 + "tableFrom": "shout_likes", 1186 + "tableTo": "shouts", 1187 + "columnsFrom": [ 1188 + "shout_id" 1189 + ], 1190 + "columnsTo": [ 1191 + "xata_id" 1192 + ], 1193 + "onDelete": "no action", 1194 + "onUpdate": "no action" 1195 + } 1196 + }, 1197 + "compositePrimaryKeys": {}, 1198 + "uniqueConstraints": { 1199 + "shout_likes_uri_unique": { 1200 + "name": "shout_likes_uri_unique", 1201 + "nullsNotDistinct": false, 1202 + "columns": [ 1203 + "uri" 1204 + ] 1205 + } 1206 + }, 1207 + "policies": {}, 1208 + "checkConstraints": {}, 1209 + "isRLSEnabled": false 1210 + }, 1211 + "public.shout_reports": { 1212 + "name": "shout_reports", 1213 + "schema": "", 1214 + "columns": { 1215 + "xata_id": { 1216 + "name": "xata_id", 1217 + "type": "text", 1218 + "primaryKey": true, 1219 + "notNull": true 1220 + }, 1221 + "user_id": { 1222 + "name": "user_id", 1223 + "type": "text", 1224 + "primaryKey": false, 1225 + "notNull": true 1226 + }, 1227 + "shout_id": { 1228 + "name": "shout_id", 1229 + "type": "text", 1230 + "primaryKey": false, 1231 + "notNull": true 1232 + }, 1233 + "xata_createdat": { 1234 + "name": "xata_createdat", 1235 + "type": "timestamp", 1236 + "primaryKey": false, 1237 + "notNull": true, 1238 + "default": "now()" 1239 + } 1240 + }, 1241 + "indexes": {}, 1242 + "foreignKeys": { 1243 + "shout_reports_user_id_users_xata_id_fk": { 1244 + "name": "shout_reports_user_id_users_xata_id_fk", 1245 + "tableFrom": "shout_reports", 1246 + "tableTo": "users", 1247 + "columnsFrom": [ 1248 + "user_id" 1249 + ], 1250 + "columnsTo": [ 1251 + "xata_id" 1252 + ], 1253 + "onDelete": "no action", 1254 + "onUpdate": "no action" 1255 + }, 1256 + "shout_reports_shout_id_shouts_xata_id_fk": { 1257 + "name": "shout_reports_shout_id_shouts_xata_id_fk", 1258 + "tableFrom": "shout_reports", 1259 + "tableTo": "shouts", 1260 + "columnsFrom": [ 1261 + "shout_id" 1262 + ], 1263 + "columnsTo": [ 1264 + "xata_id" 1265 + ], 1266 + "onDelete": "no action", 1267 + "onUpdate": "no action" 1268 + } 1269 + }, 1270 + "compositePrimaryKeys": {}, 1271 + "uniqueConstraints": {}, 1272 + "policies": {}, 1273 + "checkConstraints": {}, 1274 + "isRLSEnabled": false 1275 + }, 1276 + "public.shouts": { 1277 + "name": "shouts", 1278 + "schema": "", 1279 + "columns": { 1280 + "xata_id": { 1281 + "name": "xata_id", 1282 + "type": "text", 1283 + "primaryKey": true, 1284 + "notNull": true 1285 + }, 1286 + "content": { 1287 + "name": "content", 1288 + "type": "text", 1289 + "primaryKey": false, 1290 + "notNull": true 1291 + }, 1292 + "track_id": { 1293 + "name": "track_id", 1294 + "type": "text", 1295 + "primaryKey": false, 1296 + "notNull": false 1297 + }, 1298 + "artist_id": { 1299 + "name": "artist_id", 1300 + "type": "text", 1301 + "primaryKey": false, 1302 + "notNull": false 1303 + }, 1304 + "album_id": { 1305 + "name": "album_id", 1306 + "type": "text", 1307 + "primaryKey": false, 1308 + "notNull": false 1309 + }, 1310 + "scrobble_id": { 1311 + "name": "scrobble_id", 1312 + "type": "text", 1313 + "primaryKey": false, 1314 + "notNull": false 1315 + }, 1316 + "uri": { 1317 + "name": "uri", 1318 + "type": "text", 1319 + "primaryKey": false, 1320 + "notNull": true 1321 + }, 1322 + "author_id": { 1323 + "name": "author_id", 1324 + "type": "text", 1325 + "primaryKey": false, 1326 + "notNull": true 1327 + }, 1328 + "parent_id": { 1329 + "name": "parent_id", 1330 + "type": "text", 1331 + "primaryKey": false, 1332 + "notNull": false 1333 + }, 1334 + "xata_createdat": { 1335 + "name": "xata_createdat", 1336 + "type": "timestamp", 1337 + "primaryKey": false, 1338 + "notNull": true, 1339 + "default": "now()" 1340 + }, 1341 + "xata_updatedat": { 1342 + "name": "xata_updatedat", 1343 + "type": "timestamp", 1344 + "primaryKey": false, 1345 + "notNull": true, 1346 + "default": "now()" 1347 + } 1348 + }, 1349 + "indexes": {}, 1350 + "foreignKeys": { 1351 + "shouts_track_id_tracks_xata_id_fk": { 1352 + "name": "shouts_track_id_tracks_xata_id_fk", 1353 + "tableFrom": "shouts", 1354 + "tableTo": "tracks", 1355 + "columnsFrom": [ 1356 + "track_id" 1357 + ], 1358 + "columnsTo": [ 1359 + "xata_id" 1360 + ], 1361 + "onDelete": "no action", 1362 + "onUpdate": "no action" 1363 + }, 1364 + "shouts_artist_id_users_xata_id_fk": { 1365 + "name": "shouts_artist_id_users_xata_id_fk", 1366 + "tableFrom": "shouts", 1367 + "tableTo": "users", 1368 + "columnsFrom": [ 1369 + "artist_id" 1370 + ], 1371 + "columnsTo": [ 1372 + "xata_id" 1373 + ], 1374 + "onDelete": "no action", 1375 + "onUpdate": "no action" 1376 + }, 1377 + "shouts_album_id_albums_xata_id_fk": { 1378 + "name": "shouts_album_id_albums_xata_id_fk", 1379 + "tableFrom": "shouts", 1380 + "tableTo": "albums", 1381 + "columnsFrom": [ 1382 + "album_id" 1383 + ], 1384 + "columnsTo": [ 1385 + "xata_id" 1386 + ], 1387 + "onDelete": "no action", 1388 + "onUpdate": "no action" 1389 + }, 1390 + "shouts_scrobble_id_scrobbles_xata_id_fk": { 1391 + "name": "shouts_scrobble_id_scrobbles_xata_id_fk", 1392 + "tableFrom": "shouts", 1393 + "tableTo": "scrobbles", 1394 + "columnsFrom": [ 1395 + "scrobble_id" 1396 + ], 1397 + "columnsTo": [ 1398 + "xata_id" 1399 + ], 1400 + "onDelete": "no action", 1401 + "onUpdate": "no action" 1402 + }, 1403 + "shouts_author_id_users_xata_id_fk": { 1404 + "name": "shouts_author_id_users_xata_id_fk", 1405 + "tableFrom": "shouts", 1406 + "tableTo": "users", 1407 + "columnsFrom": [ 1408 + "author_id" 1409 + ], 1410 + "columnsTo": [ 1411 + "xata_id" 1412 + ], 1413 + "onDelete": "no action", 1414 + "onUpdate": "no action" 1415 + }, 1416 + "shouts_parent_id_shouts_xata_id_fk": { 1417 + "name": "shouts_parent_id_shouts_xata_id_fk", 1418 + "tableFrom": "shouts", 1419 + "tableTo": "shouts", 1420 + "columnsFrom": [ 1421 + "parent_id" 1422 + ], 1423 + "columnsTo": [ 1424 + "xata_id" 1425 + ], 1426 + "onDelete": "no action", 1427 + "onUpdate": "no action" 1428 + } 1429 + }, 1430 + "compositePrimaryKeys": {}, 1431 + "uniqueConstraints": { 1432 + "shouts_uri_unique": { 1433 + "name": "shouts_uri_unique", 1434 + "nullsNotDistinct": false, 1435 + "columns": [ 1436 + "uri" 1437 + ] 1438 + } 1439 + }, 1440 + "policies": {}, 1441 + "checkConstraints": {}, 1442 + "isRLSEnabled": false 1443 + }, 1444 + "public.spotify_accounts": { 1445 + "name": "spotify_accounts", 1446 + "schema": "", 1447 + "columns": { 1448 + "xata_id": { 1449 + "name": "xata_id", 1450 + "type": "text", 1451 + "primaryKey": true, 1452 + "notNull": true 1453 + }, 1454 + "xata_version": { 1455 + "name": "xata_version", 1456 + "type": "integer", 1457 + "primaryKey": false, 1458 + "notNull": true 1459 + }, 1460 + "email": { 1461 + "name": "email", 1462 + "type": "text", 1463 + "primaryKey": false, 1464 + "notNull": true 1465 + }, 1466 + "user_id": { 1467 + "name": "user_id", 1468 + "type": "text", 1469 + "primaryKey": false, 1470 + "notNull": true 1471 + }, 1472 + "is_beta_user": { 1473 + "name": "is_beta_user", 1474 + "type": "boolean", 1475 + "primaryKey": false, 1476 + "notNull": true, 1477 + "default": false 1478 + }, 1479 + "xata_createdat": { 1480 + "name": "xata_createdat", 1481 + "type": "timestamp", 1482 + "primaryKey": false, 1483 + "notNull": true, 1484 + "default": "now()" 1485 + }, 1486 + "xata_updatedat": { 1487 + "name": "xata_updatedat", 1488 + "type": "timestamp", 1489 + "primaryKey": false, 1490 + "notNull": true, 1491 + "default": "now()" 1492 + } 1493 + }, 1494 + "indexes": {}, 1495 + "foreignKeys": { 1496 + "spotify_accounts_user_id_users_xata_id_fk": { 1497 + "name": "spotify_accounts_user_id_users_xata_id_fk", 1498 + "tableFrom": "spotify_accounts", 1499 + "tableTo": "users", 1500 + "columnsFrom": [ 1501 + "user_id" 1502 + ], 1503 + "columnsTo": [ 1504 + "xata_id" 1505 + ], 1506 + "onDelete": "no action", 1507 + "onUpdate": "no action" 1508 + } 1509 + }, 1510 + "compositePrimaryKeys": {}, 1511 + "uniqueConstraints": {}, 1512 + "policies": {}, 1513 + "checkConstraints": {}, 1514 + "isRLSEnabled": false 1515 + }, 1516 + "public.spotify_tokens": { 1517 + "name": "spotify_tokens", 1518 + "schema": "", 1519 + "columns": { 1520 + "xata_id": { 1521 + "name": "xata_id", 1522 + "type": "text", 1523 + "primaryKey": true, 1524 + "notNull": true 1525 + }, 1526 + "xata_version": { 1527 + "name": "xata_version", 1528 + "type": "integer", 1529 + "primaryKey": false, 1530 + "notNull": true 1531 + }, 1532 + "access_token": { 1533 + "name": "access_token", 1534 + "type": "text", 1535 + "primaryKey": false, 1536 + "notNull": true 1537 + }, 1538 + "refresh_token": { 1539 + "name": "refresh_token", 1540 + "type": "text", 1541 + "primaryKey": false, 1542 + "notNull": true 1543 + }, 1544 + "user_id": { 1545 + "name": "user_id", 1546 + "type": "text", 1547 + "primaryKey": false, 1548 + "notNull": true 1549 + }, 1550 + "xata_createdat": { 1551 + "name": "xata_createdat", 1552 + "type": "timestamp", 1553 + "primaryKey": false, 1554 + "notNull": true, 1555 + "default": "now()" 1556 + }, 1557 + "xata_updatedat": { 1558 + "name": "xata_updatedat", 1559 + "type": "timestamp", 1560 + "primaryKey": false, 1561 + "notNull": true, 1562 + "default": "now()" 1563 + } 1564 + }, 1565 + "indexes": {}, 1566 + "foreignKeys": { 1567 + "spotify_tokens_user_id_users_xata_id_fk": { 1568 + "name": "spotify_tokens_user_id_users_xata_id_fk", 1569 + "tableFrom": "spotify_tokens", 1570 + "tableTo": "users", 1571 + "columnsFrom": [ 1572 + "user_id" 1573 + ], 1574 + "columnsTo": [ 1575 + "xata_id" 1576 + ], 1577 + "onDelete": "no action", 1578 + "onUpdate": "no action" 1579 + } 1580 + }, 1581 + "compositePrimaryKeys": {}, 1582 + "uniqueConstraints": {}, 1583 + "policies": {}, 1584 + "checkConstraints": {}, 1585 + "isRLSEnabled": false 1586 + }, 1587 + "public.tracks": { 1588 + "name": "tracks", 1589 + "schema": "", 1590 + "columns": { 1591 + "xata_id": { 1592 + "name": "xata_id", 1593 + "type": "text", 1594 + "primaryKey": true, 1595 + "notNull": true 1596 + }, 1597 + "title": { 1598 + "name": "title", 1599 + "type": "text", 1600 + "primaryKey": false, 1601 + "notNull": true 1602 + }, 1603 + "artist": { 1604 + "name": "artist", 1605 + "type": "text", 1606 + "primaryKey": false, 1607 + "notNull": true 1608 + }, 1609 + "album_artist": { 1610 + "name": "album_artist", 1611 + "type": "text", 1612 + "primaryKey": false, 1613 + "notNull": true 1614 + }, 1615 + "album_art": { 1616 + "name": "album_art", 1617 + "type": "text", 1618 + "primaryKey": false, 1619 + "notNull": false 1620 + }, 1621 + "album": { 1622 + "name": "album", 1623 + "type": "text", 1624 + "primaryKey": false, 1625 + "notNull": true 1626 + }, 1627 + "track_number": { 1628 + "name": "track_number", 1629 + "type": "integer", 1630 + "primaryKey": false, 1631 + "notNull": false 1632 + }, 1633 + "duration": { 1634 + "name": "duration", 1635 + "type": "integer", 1636 + "primaryKey": false, 1637 + "notNull": true 1638 + }, 1639 + "mb_id": { 1640 + "name": "mb_id", 1641 + "type": "text", 1642 + "primaryKey": false, 1643 + "notNull": false 1644 + }, 1645 + "youtube_link": { 1646 + "name": "youtube_link", 1647 + "type": "text", 1648 + "primaryKey": false, 1649 + "notNull": false 1650 + }, 1651 + "spotify_link": { 1652 + "name": "spotify_link", 1653 + "type": "text", 1654 + "primaryKey": false, 1655 + "notNull": false 1656 + }, 1657 + "apple_music_link": { 1658 + "name": "apple_music_link", 1659 + "type": "text", 1660 + "primaryKey": false, 1661 + "notNull": false 1662 + }, 1663 + "tidal_link": { 1664 + "name": "tidal_link", 1665 + "type": "text", 1666 + "primaryKey": false, 1667 + "notNull": false 1668 + }, 1669 + "sha256": { 1670 + "name": "sha256", 1671 + "type": "text", 1672 + "primaryKey": false, 1673 + "notNull": true 1674 + }, 1675 + "disc_number": { 1676 + "name": "disc_number", 1677 + "type": "integer", 1678 + "primaryKey": false, 1679 + "notNull": false 1680 + }, 1681 + "lyrics": { 1682 + "name": "lyrics", 1683 + "type": "text", 1684 + "primaryKey": false, 1685 + "notNull": false 1686 + }, 1687 + "composer": { 1688 + "name": "composer", 1689 + "type": "text", 1690 + "primaryKey": false, 1691 + "notNull": false 1692 + }, 1693 + "genre": { 1694 + "name": "genre", 1695 + "type": "text", 1696 + "primaryKey": false, 1697 + "notNull": false 1698 + }, 1699 + "label": { 1700 + "name": "label", 1701 + "type": "text", 1702 + "primaryKey": false, 1703 + "notNull": false 1704 + }, 1705 + "copyright_message": { 1706 + "name": "copyright_message", 1707 + "type": "text", 1708 + "primaryKey": false, 1709 + "notNull": false 1710 + }, 1711 + "uri": { 1712 + "name": "uri", 1713 + "type": "text", 1714 + "primaryKey": false, 1715 + "notNull": false 1716 + }, 1717 + "album_uri": { 1718 + "name": "album_uri", 1719 + "type": "text", 1720 + "primaryKey": false, 1721 + "notNull": false 1722 + }, 1723 + "artist_uri": { 1724 + "name": "artist_uri", 1725 + "type": "text", 1726 + "primaryKey": false, 1727 + "notNull": false 1728 + }, 1729 + "xata_createdat": { 1730 + "name": "xata_createdat", 1731 + "type": "timestamp", 1732 + "primaryKey": false, 1733 + "notNull": true, 1734 + "default": "now()" 1735 + }, 1736 + "xata_updatedat": { 1737 + "name": "xata_updatedat", 1738 + "type": "timestamp", 1739 + "primaryKey": false, 1740 + "notNull": true, 1741 + "default": "now()" 1742 + }, 1743 + "xata_version": { 1744 + "name": "xata_version", 1745 + "type": "integer", 1746 + "primaryKey": false, 1747 + "notNull": false 1748 + } 1749 + }, 1750 + "indexes": {}, 1751 + "foreignKeys": {}, 1752 + "compositePrimaryKeys": {}, 1753 + "uniqueConstraints": { 1754 + "tracks_mb_id_unique": { 1755 + "name": "tracks_mb_id_unique", 1756 + "nullsNotDistinct": false, 1757 + "columns": [ 1758 + "mb_id" 1759 + ] 1760 + }, 1761 + "tracks_youtube_link_unique": { 1762 + "name": "tracks_youtube_link_unique", 1763 + "nullsNotDistinct": false, 1764 + "columns": [ 1765 + "youtube_link" 1766 + ] 1767 + }, 1768 + "tracks_spotify_link_unique": { 1769 + "name": "tracks_spotify_link_unique", 1770 + "nullsNotDistinct": false, 1771 + "columns": [ 1772 + "spotify_link" 1773 + ] 1774 + }, 1775 + "tracks_apple_music_link_unique": { 1776 + "name": "tracks_apple_music_link_unique", 1777 + "nullsNotDistinct": false, 1778 + "columns": [ 1779 + "apple_music_link" 1780 + ] 1781 + }, 1782 + "tracks_tidal_link_unique": { 1783 + "name": "tracks_tidal_link_unique", 1784 + "nullsNotDistinct": false, 1785 + "columns": [ 1786 + "tidal_link" 1787 + ] 1788 + }, 1789 + "tracks_sha256_unique": { 1790 + "name": "tracks_sha256_unique", 1791 + "nullsNotDistinct": false, 1792 + "columns": [ 1793 + "sha256" 1794 + ] 1795 + }, 1796 + "tracks_uri_unique": { 1797 + "name": "tracks_uri_unique", 1798 + "nullsNotDistinct": false, 1799 + "columns": [ 1800 + "uri" 1801 + ] 1802 + }, 1803 + "tracks_album_uri_unique": { 1804 + "name": "tracks_album_uri_unique", 1805 + "nullsNotDistinct": false, 1806 + "columns": [ 1807 + "album_uri" 1808 + ] 1809 + }, 1810 + "tracks_artist_uri_unique": { 1811 + "name": "tracks_artist_uri_unique", 1812 + "nullsNotDistinct": false, 1813 + "columns": [ 1814 + "artist_uri" 1815 + ] 1816 + } 1817 + }, 1818 + "policies": {}, 1819 + "checkConstraints": {}, 1820 + "isRLSEnabled": false 1821 + }, 1822 + "public.user_albums": { 1823 + "name": "user_albums", 1824 + "schema": "", 1825 + "columns": { 1826 + "xata_id": { 1827 + "name": "xata_id", 1828 + "type": "text", 1829 + "primaryKey": true, 1830 + "notNull": true 1831 + }, 1832 + "user_id": { 1833 + "name": "user_id", 1834 + "type": "text", 1835 + "primaryKey": false, 1836 + "notNull": true 1837 + }, 1838 + "album_id": { 1839 + "name": "album_id", 1840 + "type": "text", 1841 + "primaryKey": false, 1842 + "notNull": true 1843 + }, 1844 + "xata_createdat": { 1845 + "name": "xata_createdat", 1846 + "type": "timestamp", 1847 + "primaryKey": false, 1848 + "notNull": true, 1849 + "default": "now()" 1850 + }, 1851 + "xata_updatedat": { 1852 + "name": "xata_updatedat", 1853 + "type": "timestamp", 1854 + "primaryKey": false, 1855 + "notNull": true, 1856 + "default": "now()" 1857 + }, 1858 + "xata_version": { 1859 + "name": "xata_version", 1860 + "type": "integer", 1861 + "primaryKey": false, 1862 + "notNull": true 1863 + }, 1864 + "scrobbles": { 1865 + "name": "scrobbles", 1866 + "type": "integer", 1867 + "primaryKey": false, 1868 + "notNull": false 1869 + }, 1870 + "uri": { 1871 + "name": "uri", 1872 + "type": "text", 1873 + "primaryKey": false, 1874 + "notNull": true 1875 + } 1876 + }, 1877 + "indexes": {}, 1878 + "foreignKeys": { 1879 + "user_albums_user_id_users_xata_id_fk": { 1880 + "name": "user_albums_user_id_users_xata_id_fk", 1881 + "tableFrom": "user_albums", 1882 + "tableTo": "users", 1883 + "columnsFrom": [ 1884 + "user_id" 1885 + ], 1886 + "columnsTo": [ 1887 + "xata_id" 1888 + ], 1889 + "onDelete": "no action", 1890 + "onUpdate": "no action" 1891 + }, 1892 + "user_albums_album_id_albums_xata_id_fk": { 1893 + "name": "user_albums_album_id_albums_xata_id_fk", 1894 + "tableFrom": "user_albums", 1895 + "tableTo": "albums", 1896 + "columnsFrom": [ 1897 + "album_id" 1898 + ], 1899 + "columnsTo": [ 1900 + "xata_id" 1901 + ], 1902 + "onDelete": "no action", 1903 + "onUpdate": "no action" 1904 + } 1905 + }, 1906 + "compositePrimaryKeys": {}, 1907 + "uniqueConstraints": { 1908 + "user_albums_uri_unique": { 1909 + "name": "user_albums_uri_unique", 1910 + "nullsNotDistinct": false, 1911 + "columns": [ 1912 + "uri" 1913 + ] 1914 + } 1915 + }, 1916 + "policies": {}, 1917 + "checkConstraints": {}, 1918 + "isRLSEnabled": false 1919 + }, 1920 + "public.user_artists": { 1921 + "name": "user_artists", 1922 + "schema": "", 1923 + "columns": { 1924 + "xata_id": { 1925 + "name": "xata_id", 1926 + "type": "text", 1927 + "primaryKey": true, 1928 + "notNull": true 1929 + }, 1930 + "user_id": { 1931 + "name": "user_id", 1932 + "type": "text", 1933 + "primaryKey": false, 1934 + "notNull": true 1935 + }, 1936 + "artist_id": { 1937 + "name": "artist_id", 1938 + "type": "text", 1939 + "primaryKey": false, 1940 + "notNull": true 1941 + }, 1942 + "xata_createdat": { 1943 + "name": "xata_createdat", 1944 + "type": "timestamp", 1945 + "primaryKey": false, 1946 + "notNull": true, 1947 + "default": "now()" 1948 + }, 1949 + "xata_updatedat": { 1950 + "name": "xata_updatedat", 1951 + "type": "timestamp", 1952 + "primaryKey": false, 1953 + "notNull": true, 1954 + "default": "now()" 1955 + }, 1956 + "xata_version": { 1957 + "name": "xata_version", 1958 + "type": "integer", 1959 + "primaryKey": false, 1960 + "notNull": true 1961 + }, 1962 + "scrobbles": { 1963 + "name": "scrobbles", 1964 + "type": "integer", 1965 + "primaryKey": false, 1966 + "notNull": false 1967 + }, 1968 + "uri": { 1969 + "name": "uri", 1970 + "type": "text", 1971 + "primaryKey": false, 1972 + "notNull": true 1973 + } 1974 + }, 1975 + "indexes": {}, 1976 + "foreignKeys": { 1977 + "user_artists_user_id_users_xata_id_fk": { 1978 + "name": "user_artists_user_id_users_xata_id_fk", 1979 + "tableFrom": "user_artists", 1980 + "tableTo": "users", 1981 + "columnsFrom": [ 1982 + "user_id" 1983 + ], 1984 + "columnsTo": [ 1985 + "xata_id" 1986 + ], 1987 + "onDelete": "no action", 1988 + "onUpdate": "no action" 1989 + }, 1990 + "user_artists_artist_id_artists_xata_id_fk": { 1991 + "name": "user_artists_artist_id_artists_xata_id_fk", 1992 + "tableFrom": "user_artists", 1993 + "tableTo": "artists", 1994 + "columnsFrom": [ 1995 + "artist_id" 1996 + ], 1997 + "columnsTo": [ 1998 + "xata_id" 1999 + ], 2000 + "onDelete": "no action", 2001 + "onUpdate": "no action" 2002 + } 2003 + }, 2004 + "compositePrimaryKeys": {}, 2005 + "uniqueConstraints": { 2006 + "user_artists_uri_unique": { 2007 + "name": "user_artists_uri_unique", 2008 + "nullsNotDistinct": false, 2009 + "columns": [ 2010 + "uri" 2011 + ] 2012 + } 2013 + }, 2014 + "policies": {}, 2015 + "checkConstraints": {}, 2016 + "isRLSEnabled": false 2017 + }, 2018 + "public.user_playlists": { 2019 + "name": "user_playlists", 2020 + "schema": "", 2021 + "columns": { 2022 + "xata_id": { 2023 + "name": "xata_id", 2024 + "type": "text", 2025 + "primaryKey": true, 2026 + "notNull": true 2027 + }, 2028 + "user_id": { 2029 + "name": "user_id", 2030 + "type": "text", 2031 + "primaryKey": false, 2032 + "notNull": true 2033 + }, 2034 + "playlist_id": { 2035 + "name": "playlist_id", 2036 + "type": "text", 2037 + "primaryKey": false, 2038 + "notNull": true 2039 + }, 2040 + "xata_createdat": { 2041 + "name": "xata_createdat", 2042 + "type": "timestamp", 2043 + "primaryKey": false, 2044 + "notNull": true, 2045 + "default": "now()" 2046 + }, 2047 + "uri": { 2048 + "name": "uri", 2049 + "type": "text", 2050 + "primaryKey": false, 2051 + "notNull": true 2052 + } 2053 + }, 2054 + "indexes": {}, 2055 + "foreignKeys": { 2056 + "user_playlists_user_id_users_xata_id_fk": { 2057 + "name": "user_playlists_user_id_users_xata_id_fk", 2058 + "tableFrom": "user_playlists", 2059 + "tableTo": "users", 2060 + "columnsFrom": [ 2061 + "user_id" 2062 + ], 2063 + "columnsTo": [ 2064 + "xata_id" 2065 + ], 2066 + "onDelete": "no action", 2067 + "onUpdate": "no action" 2068 + }, 2069 + "user_playlists_playlist_id_tracks_xata_id_fk": { 2070 + "name": "user_playlists_playlist_id_tracks_xata_id_fk", 2071 + "tableFrom": "user_playlists", 2072 + "tableTo": "tracks", 2073 + "columnsFrom": [ 2074 + "playlist_id" 2075 + ], 2076 + "columnsTo": [ 2077 + "xata_id" 2078 + ], 2079 + "onDelete": "no action", 2080 + "onUpdate": "no action" 2081 + } 2082 + }, 2083 + "compositePrimaryKeys": {}, 2084 + "uniqueConstraints": { 2085 + "user_playlists_uri_unique": { 2086 + "name": "user_playlists_uri_unique", 2087 + "nullsNotDistinct": false, 2088 + "columns": [ 2089 + "uri" 2090 + ] 2091 + } 2092 + }, 2093 + "policies": {}, 2094 + "checkConstraints": {}, 2095 + "isRLSEnabled": false 2096 + }, 2097 + "public.user_tracks": { 2098 + "name": "user_tracks", 2099 + "schema": "", 2100 + "columns": { 2101 + "xata_id": { 2102 + "name": "xata_id", 2103 + "type": "text", 2104 + "primaryKey": true, 2105 + "notNull": true 2106 + }, 2107 + "user_id": { 2108 + "name": "user_id", 2109 + "type": "text", 2110 + "primaryKey": false, 2111 + "notNull": true 2112 + }, 2113 + "track_id": { 2114 + "name": "track_id", 2115 + "type": "text", 2116 + "primaryKey": false, 2117 + "notNull": true 2118 + }, 2119 + "xata_createdat": { 2120 + "name": "xata_createdat", 2121 + "type": "timestamp", 2122 + "primaryKey": false, 2123 + "notNull": true, 2124 + "default": "now()" 2125 + }, 2126 + "xata_updatedat": { 2127 + "name": "xata_updatedat", 2128 + "type": "timestamp", 2129 + "primaryKey": false, 2130 + "notNull": true, 2131 + "default": "now()" 2132 + }, 2133 + "xata_version": { 2134 + "name": "xata_version", 2135 + "type": "integer", 2136 + "primaryKey": false, 2137 + "notNull": true 2138 + }, 2139 + "uri": { 2140 + "name": "uri", 2141 + "type": "text", 2142 + "primaryKey": false, 2143 + "notNull": true 2144 + }, 2145 + "scrobbles": { 2146 + "name": "scrobbles", 2147 + "type": "integer", 2148 + "primaryKey": false, 2149 + "notNull": false 2150 + } 2151 + }, 2152 + "indexes": {}, 2153 + "foreignKeys": { 2154 + "user_tracks_user_id_users_xata_id_fk": { 2155 + "name": "user_tracks_user_id_users_xata_id_fk", 2156 + "tableFrom": "user_tracks", 2157 + "tableTo": "users", 2158 + "columnsFrom": [ 2159 + "user_id" 2160 + ], 2161 + "columnsTo": [ 2162 + "xata_id" 2163 + ], 2164 + "onDelete": "no action", 2165 + "onUpdate": "no action" 2166 + }, 2167 + "user_tracks_track_id_tracks_xata_id_fk": { 2168 + "name": "user_tracks_track_id_tracks_xata_id_fk", 2169 + "tableFrom": "user_tracks", 2170 + "tableTo": "tracks", 2171 + "columnsFrom": [ 2172 + "track_id" 2173 + ], 2174 + "columnsTo": [ 2175 + "xata_id" 2176 + ], 2177 + "onDelete": "no action", 2178 + "onUpdate": "no action" 2179 + } 2180 + }, 2181 + "compositePrimaryKeys": {}, 2182 + "uniqueConstraints": { 2183 + "user_tracks_uri_unique": { 2184 + "name": "user_tracks_uri_unique", 2185 + "nullsNotDistinct": false, 2186 + "columns": [ 2187 + "uri" 2188 + ] 2189 + } 2190 + }, 2191 + "policies": {}, 2192 + "checkConstraints": {}, 2193 + "isRLSEnabled": false 2194 + }, 2195 + "public.users": { 2196 + "name": "users", 2197 + "schema": "", 2198 + "columns": { 2199 + "xata_id": { 2200 + "name": "xata_id", 2201 + "type": "text", 2202 + "primaryKey": true, 2203 + "notNull": true 2204 + }, 2205 + "did": { 2206 + "name": "did", 2207 + "type": "text", 2208 + "primaryKey": false, 2209 + "notNull": true 2210 + }, 2211 + "display_name": { 2212 + "name": "display_name", 2213 + "type": "text", 2214 + "primaryKey": false, 2215 + "notNull": true 2216 + }, 2217 + "handle": { 2218 + "name": "handle", 2219 + "type": "text", 2220 + "primaryKey": false, 2221 + "notNull": true 2222 + }, 2223 + "avatar": { 2224 + "name": "avatar", 2225 + "type": "text", 2226 + "primaryKey": false, 2227 + "notNull": true 2228 + }, 2229 + "xata_createdat": { 2230 + "name": "xata_createdat", 2231 + "type": "timestamp", 2232 + "primaryKey": false, 2233 + "notNull": true, 2234 + "default": "now()" 2235 + }, 2236 + "xata_updatedat": { 2237 + "name": "xata_updatedat", 2238 + "type": "timestamp", 2239 + "primaryKey": false, 2240 + "notNull": true, 2241 + "default": "now()" 2242 + }, 2243 + "xata_version": { 2244 + "name": "xata_version", 2245 + "type": "integer", 2246 + "primaryKey": false, 2247 + "notNull": false 2248 + } 2249 + }, 2250 + "indexes": {}, 2251 + "foreignKeys": {}, 2252 + "compositePrimaryKeys": {}, 2253 + "uniqueConstraints": { 2254 + "users_did_unique": { 2255 + "name": "users_did_unique", 2256 + "nullsNotDistinct": false, 2257 + "columns": [ 2258 + "did" 2259 + ] 2260 + }, 2261 + "users_handle_unique": { 2262 + "name": "users_handle_unique", 2263 + "nullsNotDistinct": false, 2264 + "columns": [ 2265 + "handle" 2266 + ] 2267 + } 2268 + }, 2269 + "policies": {}, 2270 + "checkConstraints": {}, 2271 + "isRLSEnabled": false 2272 + }, 2273 + "public.webscrobblers": { 2274 + "name": "webscrobblers", 2275 + "schema": "", 2276 + "columns": { 2277 + "xata_id": { 2278 + "name": "xata_id", 2279 + "type": "text", 2280 + "primaryKey": true, 2281 + "notNull": true 2282 + }, 2283 + "name": { 2284 + "name": "name", 2285 + "type": "text", 2286 + "primaryKey": false, 2287 + "notNull": true 2288 + }, 2289 + "uuid": { 2290 + "name": "uuid", 2291 + "type": "text", 2292 + "primaryKey": false, 2293 + "notNull": true 2294 + }, 2295 + "description": { 2296 + "name": "description", 2297 + "type": "text", 2298 + "primaryKey": false, 2299 + "notNull": false 2300 + }, 2301 + "enabled": { 2302 + "name": "enabled", 2303 + "type": "boolean", 2304 + "primaryKey": false, 2305 + "notNull": true, 2306 + "default": true 2307 + }, 2308 + "user_id": { 2309 + "name": "user_id", 2310 + "type": "text", 2311 + "primaryKey": false, 2312 + "notNull": true 2313 + }, 2314 + "xata_createdat": { 2315 + "name": "xata_createdat", 2316 + "type": "timestamp", 2317 + "primaryKey": false, 2318 + "notNull": true, 2319 + "default": "now()" 2320 + }, 2321 + "xata_updatedat": { 2322 + "name": "xata_updatedat", 2323 + "type": "timestamp", 2324 + "primaryKey": false, 2325 + "notNull": true, 2326 + "default": "now()" 2327 + } 2328 + }, 2329 + "indexes": {}, 2330 + "foreignKeys": { 2331 + "webscrobblers_user_id_users_xata_id_fk": { 2332 + "name": "webscrobblers_user_id_users_xata_id_fk", 2333 + "tableFrom": "webscrobblers", 2334 + "tableTo": "users", 2335 + "columnsFrom": [ 2336 + "user_id" 2337 + ], 2338 + "columnsTo": [ 2339 + "xata_id" 2340 + ], 2341 + "onDelete": "no action", 2342 + "onUpdate": "no action" 2343 + } 2344 + }, 2345 + "compositePrimaryKeys": {}, 2346 + "uniqueConstraints": {}, 2347 + "policies": {}, 2348 + "checkConstraints": {}, 2349 + "isRLSEnabled": false 2350 + } 2351 + }, 2352 + "enums": {}, 2353 + "schemas": {}, 2354 + "sequences": {}, 2355 + "roles": {}, 2356 + "policies": {}, 2357 + "views": {}, 2358 + "_meta": { 2359 + "columns": {}, 2360 + "schemas": {}, 2361 + "tables": {} 2362 + } 2363 + }
+13
rockskyapi/rocksky-auth/drizzle/meta/_journal.json
··· 1 + { 2 + "version": "7", 3 + "dialect": "postgresql", 4 + "entries": [ 5 + { 6 + "idx": 0, 7 + "version": "7", 8 + "when": 1750169528964, 9 + "tag": "0000_init", 10 + "breakpoints": true 11 + } 12 + ] 13 + }
+86 -84
rockskyapi/rocksky-auth/package.json
··· 1 1 { 2 - "name": "rocksky-auth", 3 - "version": "0.0.1", 4 - "private": true, 5 - "type": "module", 6 - "module": "dist/index.js", 7 - "scripts": { 8 - "lexgen": "lex gen-server ./src/lexicon ./lexicons/**/* ./lexicons/*", 9 - "dev": "tsx --watch ./src/index.ts", 10 - "prod": "tsx ./src/index.ts", 11 - "build": "pkgroll", 12 - "sync": "tsx ./src/scripts/sync.ts", 13 - "meili:sync": "tsx ./src/scripts/meili.ts", 14 - "avatar": "tsx ./src/scripts/avatar.ts", 15 - "pkl:eval": "pkl eval -f json", 16 - "pkl:gen": "tsx ./scripts/pkl.ts", 17 - "dev:xrpc": "tsx --watch ./src/server.ts" 18 - }, 19 - "dependencies": { 20 - "@atproto/api": "^0.13.31", 21 - "@atproto/common": "^0.4.6", 22 - "@atproto/identity": "^0.4.5", 23 - "@atproto/lex-cli": "^0.5.6", 24 - "@atproto/lexicon": "^0.4.5", 25 - "@atproto/oauth-client-node": "^0.2.14", 26 - "@atproto/sync": "^0.1.11", 27 - "@atproto/syntax": "^0.3.1", 28 - "@atproto/xrpc-server": "^0.7.8", 29 - "@hono/node-server": "^1.13.8", 30 - "@hono/node-ws": "^1.1.0", 31 - "@opentelemetry/api": "^1.9.0", 32 - "@opentelemetry/auto-instrumentations-node": "^0.58.0", 33 - "@opentelemetry/exporter-metrics-otlp-http": "^0.200.0", 34 - "@opentelemetry/exporter-trace-otlp-http": "^0.200.0", 35 - "@opentelemetry/resources": "^2.0.0", 36 - "@opentelemetry/sdk-metrics": "^2.0.0", 37 - "@opentelemetry/sdk-node": "^0.200.0", 38 - "@opentelemetry/semantic-conventions": "^1.32.0", 39 - "@pyroscope/nodejs": "^0.4.5", 40 - "@xata.io/client": "^0.0.0-next.va121e4207b94bfe0a3c025fc00b247b923880930", 41 - "assert": "^2.1.0", 42 - "axios": "^1.7.9", 43 - "better-sqlite3": "^11.8.1", 44 - "chalk": "^5.4.1", 45 - "chanfana": "^2.0.2", 46 - "dayjs": "^1.11.13", 47 - "dotenv": "^16.4.7", 48 - "drizzle-orm": "^0.44.2", 49 - "dropbox": "^10.34.0", 50 - "effect": "^3.14.22", 51 - "envalid": "^8.0.0", 52 - "express": "^5.1.0", 53 - "googleapis": "^146.0.0", 54 - "hono": "^4.4.7", 55 - "iron-session": "^8.0.4", 56 - "jsonwebtoken": "^9.0.2", 57 - "kysely": "^0.27.5", 58 - "lodash": "^4.17.21", 59 - "nats": "^2.29.2", 60 - "pg": "^8.13.3", 61 - "ramda": "^0.30.1", 62 - "redis": "^4.7.0", 63 - "unstorage": "^1.14.4", 64 - "url": "^0.11.4", 65 - "uuid": "^11.1.0", 66 - "ws": "^8.18.1", 67 - "zod": "^3.24.1" 68 - }, 69 - "devDependencies": { 70 - "@pkl-community/pkl": "^0.28.2", 71 - "@types/express": "^5.0.2", 72 - "@types/lodash": "^4.17.17", 73 - "@types/node": "^22.13.0", 74 - "@types/ramda": "^0.30.2", 75 - "@types/service-worker-mock": "^2.0.1", 76 - "pkgroll": "^2.6.1", 77 - "tsx": "^4.19.2", 78 - "zx": "^8.5.4" 79 - }, 80 - "exports": { 81 - ".": { 82 - "import": "./dist/index.js" 83 - } 84 - } 85 - } 2 + "name": "rocksky-auth", 3 + "version": "0.0.1", 4 + "private": true, 5 + "type": "module", 6 + "module": "dist/index.js", 7 + "scripts": { 8 + "lexgen": "lex gen-server ./src/lexicon ./lexicons/**/* ./lexicons/*", 9 + "dev": "tsx --watch ./src/index.ts", 10 + "prod": "tsx ./src/index.ts", 11 + "build": "pkgroll", 12 + "sync": "tsx ./src/scripts/sync.ts", 13 + "meili:sync": "tsx ./src/scripts/meili.ts", 14 + "avatar": "tsx ./src/scripts/avatar.ts", 15 + "pkl:eval": "pkl eval -f json", 16 + "pkl:gen": "tsx ./scripts/pkl.ts", 17 + "dev:xrpc": "tsx --watch ./src/server.ts", 18 + "drizzle": "drizzle-kit" 19 + }, 20 + "dependencies": { 21 + "@atproto/api": "^0.13.31", 22 + "@atproto/common": "^0.4.6", 23 + "@atproto/identity": "^0.4.5", 24 + "@atproto/lex-cli": "^0.5.6", 25 + "@atproto/lexicon": "^0.4.5", 26 + "@atproto/oauth-client-node": "^0.2.14", 27 + "@atproto/sync": "^0.1.11", 28 + "@atproto/syntax": "^0.3.1", 29 + "@atproto/xrpc-server": "^0.7.8", 30 + "@hono/node-server": "^1.13.8", 31 + "@hono/node-ws": "^1.1.0", 32 + "@opentelemetry/api": "^1.9.0", 33 + "@opentelemetry/auto-instrumentations-node": "^0.58.0", 34 + "@opentelemetry/exporter-metrics-otlp-http": "^0.200.0", 35 + "@opentelemetry/exporter-trace-otlp-http": "^0.200.0", 36 + "@opentelemetry/resources": "^2.0.0", 37 + "@opentelemetry/sdk-metrics": "^2.0.0", 38 + "@opentelemetry/sdk-node": "^0.200.0", 39 + "@opentelemetry/semantic-conventions": "^1.32.0", 40 + "@pyroscope/nodejs": "^0.4.5", 41 + "@xata.io/client": "^0.0.0-next.va121e4207b94bfe0a3c025fc00b247b923880930", 42 + "assert": "^2.1.0", 43 + "axios": "^1.7.9", 44 + "better-sqlite3": "^11.8.1", 45 + "chalk": "^5.4.1", 46 + "chanfana": "^2.0.2", 47 + "dayjs": "^1.11.13", 48 + "dotenv": "^16.4.7", 49 + "drizzle-orm": "^0.44.2", 50 + "dropbox": "^10.34.0", 51 + "effect": "^3.14.22", 52 + "envalid": "^8.0.0", 53 + "express": "^5.1.0", 54 + "googleapis": "^146.0.0", 55 + "hono": "^4.4.7", 56 + "iron-session": "^8.0.4", 57 + "jsonwebtoken": "^9.0.2", 58 + "kysely": "^0.27.5", 59 + "lodash": "^4.17.21", 60 + "nats": "^2.29.2", 61 + "pg": "^8.13.3", 62 + "ramda": "^0.30.1", 63 + "redis": "^4.7.0", 64 + "unstorage": "^1.14.4", 65 + "url": "^0.11.4", 66 + "uuid": "^11.1.0", 67 + "ws": "^8.18.1", 68 + "zod": "^3.24.1" 69 + }, 70 + "devDependencies": { 71 + "@pkl-community/pkl": "^0.28.2", 72 + "@types/express": "^5.0.2", 73 + "@types/lodash": "^4.17.17", 74 + "@types/node": "^22.13.0", 75 + "@types/ramda": "^0.30.2", 76 + "@types/service-worker-mock": "^2.0.1", 77 + "drizzle-kit": "^0.31.1", 78 + "pkgroll": "^2.6.1", 79 + "tsx": "^4.19.2", 80 + "zx": "^8.5.4" 81 + }, 82 + "exports": { 83 + ".": { 84 + "import": "./dist/index.js" 85 + } 86 + } 87 + }