From a22c2b75a6660475903e448dbf7ae8e39c88b5e5 Mon Sep 17 00:00:00 2001 From: Taken Date: Mon, 7 Oct 2024 19:06:23 +0200 Subject: [PATCH] Added automigtation and updated tables --- dev-db.yml | 2 +- package.json | 7 +- pnpm-lock.yaml | 370 +++--------------- src/drizzle/migrations/0001_quick_meggan.sql | 10 + .../migrations/meta/0001_snapshot.json | 232 +++++++++++ src/drizzle/migrations/meta/_journal.json | 7 + src/drizzle/schema.ts | 37 +- src/utils/Illegitimate.ts | 30 +- 8 files changed, 350 insertions(+), 345 deletions(-) create mode 100644 src/drizzle/migrations/0001_quick_meggan.sql create mode 100644 src/drizzle/migrations/meta/0001_snapshot.json diff --git a/dev-db.yml b/dev-db.yml index a96ed6b..16407b2 100644 --- a/dev-db.yml +++ b/dev-db.yml @@ -5,7 +5,7 @@ services: image: postgres restart: unless-stopped volumes: - - ./dev/data:/var/lib/postgresql/data + - ./dev/pgdata:/var/lib/postgresql/data ports: - 5432:5432 environment: diff --git a/package.json b/package.json index 8de730c..26dc9d8 100644 --- a/package.json +++ b/package.json @@ -45,14 +45,11 @@ "discord-player": "^6.7.1", "discord-player-youtubei": "^1.3.2", "discord.js": "^14.16.2", - "dotenv": "^16.4.5", "drizzle-orm": "^0.33.0", "ioredis": "^5.4.1", - "mongoose": "^8.6.3", "ms": "^2.1.3", "postgres": "^3.4.4", - "pretty-ms": "^9.1.0", - "sequelize": "^6.37.3" + "pretty-ms": "^9.1.0" }, "devDependencies": { "@eslint/eslintrc": "^3.1.0", @@ -64,12 +61,12 @@ "@typescript-eslint/eslint-plugin": "^8.7.0", "@typescript-eslint/parser": "^8.7.0", "chokidar": "^4.0.1", + "dotenv": "^16.4.5", "dprint": "^0.47.2", "drizzle-kit": "^0.24.2", "eslint": "^9.11.1", "eslint-plugin-drizzle": "^0.2.3", "globals": "^15.9.0", - "sqlite3": "^5.1.7", "tsx": "^4.19.1", "typescript": "^5.6.2" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index fcd2d03..97861cf 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -43,18 +43,12 @@ importers: discord.js: specifier: ^14.16.2 version: 14.16.2 - dotenv: - specifier: ^16.4.5 - version: 16.4.5 drizzle-orm: specifier: ^0.33.0 version: 0.33.0(@types/pg@8.11.10)(pg@8.13.0)(postgres@3.4.4)(sqlite3@5.1.7) ioredis: specifier: ^5.4.1 version: 5.4.1 - mongoose: - specifier: ^8.6.3 - version: 8.6.3(socks@2.8.3) ms: specifier: ^2.1.3 version: 2.1.3 @@ -64,9 +58,6 @@ importers: pretty-ms: specifier: ^9.1.0 version: 9.1.0 - sequelize: - specifier: ^6.37.3 - version: 6.37.3(pg@8.13.0)(sqlite3@5.1.7) devDependencies: '@eslint/eslintrc': specifier: ^3.1.0 @@ -95,6 +86,9 @@ importers: chokidar: specifier: ^4.0.1 version: 4.0.1 + dotenv: + specifier: ^16.4.5 + version: 16.4.5 dprint: specifier: ^0.47.2 version: 0.47.2 @@ -110,9 +104,6 @@ importers: globals: specifier: ^15.9.0 version: 15.9.0 - sqlite3: - specifier: ^5.1.7 - version: 5.1.7 tsx: specifier: ^4.19.1 version: 4.19.1 @@ -690,9 +681,6 @@ packages: resolution: {integrity: sha512-sTGoeZnjI8N4KS+sW2AN95gDBErhAguvkw/tWdCjeM8bvxpz5lqrnd0vOJABA1A+Ic3zED7PYoLP/RANLgVotA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - '@mongodb-js/saslprep@1.1.9': - resolution: {integrity: sha512-tVkljjeEaAhCqTzajSdgbQ6gE6f3oneVwa3iXR6csiEwXXOFsiC6Uh9iAjAhXPtqa/XMDHWjjeNH/77m/Yq2dw==} - '@napi-rs/nice-android-arm-eabi@1.0.1': resolution: {integrity: sha512-5qpvOu5IGwDo7MEKVqqyAxF90I6aLj4n07OzpARdgDRfz8UbBztTByBp0RC59r3J1Ij8uzYi6jI7r5Lws7nn6w==} engines: {node: '>= 10'} @@ -929,9 +917,6 @@ packages: '@types/cacheable-request@6.0.3': resolution: {integrity: sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==} - '@types/debug@4.1.12': - resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} - '@types/estree@1.0.6': resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} @@ -959,15 +944,6 @@ packages: '@types/responselike@1.0.3': resolution: {integrity: sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==} - '@types/validator@13.12.2': - resolution: {integrity: sha512-6SlHBzUW8Jhf3liqrGGXyTJSIFe4nqlJ5A5KaMZ2l/vbM3Wh3KSybots/wfWVzNLK4D1NZluDlSQIbIEPx6oyA==} - - '@types/webidl-conversions@7.0.3': - resolution: {integrity: sha512-CiJJvcRtIgzadHCYXw7dqEnMNRjhGZlYK05Mj9OyktqV8uVT8fD2BFOB7S1uwBE3Kj2Z+4UyPmFw/Ixgw/LAlA==} - - '@types/whatwg-url@11.0.5': - resolution: {integrity: sha512-coYR071JRaHa+xoEvvYqvnIHaVqaYrLPbsufM9BF63HkwI5Lgmy2QR8Q5K/lYDYo5AK82wOvSOS0UsLTpTG7uQ==} - '@types/ws@8.5.12': resolution: {integrity: sha512-3tPRkv1EtkDpzlgyKyI8pGsGZAGPEaXeu0DOj5DI25Ja91bdAYddYHbADRYVrZMRbfW+1l5YwXVDKohDJNQxkQ==} @@ -1133,10 +1109,6 @@ packages: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} - bson@6.8.0: - resolution: {integrity: sha512-iOJg8pr7wq2tg/zSlCCHMi3hMm5JTOxLTagf3zxhcenHsFp+c6uOs6K7W5UE7A4QIJGtqh/ZovFNMP4mOPJynQ==} - engines: {node: '>=16.20.1'} - buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} @@ -1321,9 +1293,6 @@ packages: resolution: {integrity: sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==} engines: {node: '>=12'} - dottie@2.0.6: - resolution: {integrity: sha512-iGCHkfUc5kFekGiqhe8B/mdaurD+lakO9txNnTvKtA6PISrw86LgqHvRzWYPyoE2Ph5aMIrCw9/uko6XHTKCwA==} - dprint@0.47.2: resolution: {integrity: sha512-geUcVIIrmLaY+YtuOl4gD7J/QCjsXZa5gUqre9sO6cgH0X/Fa9heBN3l/AWVII6rKPw45ATuCSDWz1pyO+HkPQ==} hasBin: true @@ -1752,10 +1721,6 @@ packages: infer-owner@1.0.4: resolution: {integrity: sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==} - inflection@1.13.4: - resolution: {integrity: sha512-6I/HUDeYFfuNCVS3td055BaXBwKYuzw7K3ExVMStBowKo9oOAMJIXIHvdyR3iboTCp1b+1i5DSkIZTcwIktuDw==} - engines: {'0': node >= 0.4.0} - inflight@1.0.6: resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. @@ -1834,10 +1799,6 @@ packages: json-stable-stringify-without-jsonify@1.0.1: resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} - kareem@2.6.3: - resolution: {integrity: sha512-C3iHfuGUXK2u8/ipq9LfjFfXFxAZMQJJq7vLS45r3D9Y2xQ/m4S8zaR4zMLFWh9AsNPXmcFfUDhTEO8UIC/V6Q==} - engines: {node: '>=12.0.0'} - keyv@4.5.4: resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} @@ -1892,9 +1853,6 @@ packages: resolution: {integrity: sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg==} engines: {node: '>= 10'} - memory-pager@1.5.0: - resolution: {integrity: sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==} - merge-stream@2.0.0: resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} @@ -1980,54 +1938,6 @@ packages: engines: {node: '>=10'} hasBin: true - moment-timezone@0.5.45: - resolution: {integrity: sha512-HIWmqA86KcmCAhnMAN0wuDOARV/525R2+lOLotuGFzn4HO+FH+/645z2wx0Dt3iDv6/p61SIvKnDstISainhLQ==} - - moment@2.30.1: - resolution: {integrity: sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==} - - mongodb-connection-string-url@3.0.1: - resolution: {integrity: sha512-XqMGwRX0Lgn05TDB4PyG2h2kKO/FfWJyCzYQbIhXUxz7ETt0I/FqHjUeqj37irJ+Dl1ZtU82uYyj14u2XsZKfg==} - - mongodb@6.8.0: - resolution: {integrity: sha512-HGQ9NWDle5WvwMnrvUxsFYPd3JEbqD3RgABHBQRuoCEND0qzhsd0iH5ypHsf1eJ+sXmvmyKpP+FLOKY8Il7jMw==} - engines: {node: '>=16.20.1'} - peerDependencies: - '@aws-sdk/credential-providers': ^3.188.0 - '@mongodb-js/zstd': ^1.1.0 - gcp-metadata: ^5.2.0 - kerberos: ^2.0.1 - mongodb-client-encryption: '>=6.0.0 <7' - snappy: ^7.2.2 - socks: ^2.7.1 - peerDependenciesMeta: - '@aws-sdk/credential-providers': - optional: true - '@mongodb-js/zstd': - optional: true - gcp-metadata: - optional: true - kerberos: - optional: true - mongodb-client-encryption: - optional: true - snappy: - optional: true - socks: - optional: true - - mongoose@8.6.3: - resolution: {integrity: sha512-++yRmm7hjMbqVA/8WeiygTnEfrFbiy+OBjQi49GFJIvCQuSYE56myyQWo4j5hbpcHjhHQU8NukMNGTwAWFWjIw==} - engines: {node: '>=16.20.1'} - - mpath@0.9.0: - resolution: {integrity: sha512-ikJRQTk8hw5DEoFVxHG1Gn9T/xcjtdnOKIU1JTmGjZZlg9LST2mBLmcX3/ICIbgJydT2GOc15RnNy5mHmzfSew==} - engines: {node: '>=4.0.0'} - - mquery@5.0.0: - resolution: {integrity: sha512-iQMncpmEK8R8ncT8HJGsGc9Dsp8xcgYMVSbs5jgnm1lFHTZqMJTUWTDx1LBO8+mK3tPNZWFLBghQEIOULSTHZg==} - engines: {node: '>=14.0.0'} - ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} @@ -2359,9 +2269,6 @@ packages: responselike@2.0.1: resolution: {integrity: sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==} - retry-as-promised@7.0.4: - resolution: {integrity: sha512-XgmCoxKWkDofwH8WddD0w85ZfqYz+ZHlr5yo+3YUCfycWawU56T5ckWXsScsj5B8tqUcIG67DxXByo3VUgiAdA==} - retry@0.12.0: resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==} engines: {node: '>= 4'} @@ -2400,43 +2307,6 @@ packages: engines: {node: '>=10'} hasBin: true - sequelize-pool@7.1.0: - resolution: {integrity: sha512-G9c0qlIWQSK29pR/5U2JF5dDQeqqHRragoyahj/Nx4KOOQ3CPPfzxnfqFPCSB7x5UgjOgnZ61nSxz+fjDpRlJg==} - engines: {node: '>= 10.0.0'} - - sequelize@6.37.3: - resolution: {integrity: sha512-V2FTqYpdZjPy3VQrZvjTPnOoLm0KudCRXfGWp48QwhyPPp2yW8z0p0sCYZd/em847Tl2dVxJJ1DR+hF+O77T7A==} - engines: {node: '>=10.0.0'} - peerDependencies: - ibm_db: '*' - mariadb: '*' - mysql2: '*' - oracledb: '*' - pg: '*' - pg-hstore: '*' - snowflake-sdk: '*' - sqlite3: '*' - tedious: '*' - peerDependenciesMeta: - ibm_db: - optional: true - mariadb: - optional: true - mysql2: - optional: true - oracledb: - optional: true - pg: - optional: true - pg-hstore: - optional: true - snowflake-sdk: - optional: true - sqlite3: - optional: true - tedious: - optional: true - set-blocking@2.0.0: resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} @@ -2456,9 +2326,6 @@ packages: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} - sift@17.1.3: - resolution: {integrity: sha512-Rtlj66/b0ICeFzYTuNvX/EF1igRbbnGSvEyT79McoZa/DeGhMyC5pWKOEsZKnpkqtSeovd5FL/bjHWC3CIIvCQ==} - signal-exit@3.0.7: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} @@ -2506,9 +2373,6 @@ packages: resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} engines: {node: '>= 8'} - sparse-bitfield@3.0.3: - resolution: {integrity: sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==} - split2@4.2.0: resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} engines: {node: '>= 10.x'} @@ -2606,16 +2470,9 @@ packages: resolution: {integrity: sha512-Y2fmSnZjQdDb9W4w4r1tswlMHylzWIeOKpx0aZH9BgGtACHhrk3OkT52AzwcuqTRBZtvvnTjDBh8eynMulu8Vg==} engines: {node: '>=14.16'} - toposort-class@1.0.1: - resolution: {integrity: sha512-OsLcGGbYF3rMjPUf8oKktyvCiUxSbqMMS39m33MAjLTC1DVIH6x3WSt63/M77ihI09+Sdfk1AXvfhCEeUmC7mg==} - tr46@0.0.3: resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} - tr46@4.1.1: - resolution: {integrity: sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw==} - engines: {node: '>=14'} - trim-repeated@2.0.0: resolution: {integrity: sha512-QUHBFTJGdOwmp0tbOG505xAgOp/YliZP/6UgafFXYZ26WT1bvQmSMJUvkeVSASuJJHbqsFbynTvkd5W8RBTipg==} engines: {node: '>=12'} @@ -2675,14 +2532,6 @@ packages: util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - uuid@8.3.2: - resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} - hasBin: true - - validator@13.12.0: - resolution: {integrity: sha512-c1Q0mCiPlgdTVVVIJIrBuxNicYE+t/7oKeI9MWLj3fh/uq2Pxh/3eeWbVZ4OcGW1TUf53At0njHw5SMdA3tmMg==} - engines: {node: '>= 0.10'} - web-streams-polyfill@3.3.3: resolution: {integrity: sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==} engines: {node: '>= 8'} @@ -2690,14 +2539,6 @@ packages: webidl-conversions@3.0.1: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} - webidl-conversions@7.0.0: - resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} - engines: {node: '>=12'} - - whatwg-url@13.0.0: - resolution: {integrity: sha512-9WWbymnqj57+XEuqADHrCJ2eSXzn8WXIW/YSGaZtb2WKAInQ6CHfaUUcTyyver0p8BDg5StLQq8h1vtZuwmOig==} - engines: {node: '>=16'} - whatwg-url@5.0.0: resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} @@ -2713,9 +2554,6 @@ packages: wide-align@1.1.5: resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==} - wkx@0.5.0: - resolution: {integrity: sha512-Xng/d4Ichh8uN4l0FToV/258EjMGU9MGcA0HV2d9B/ZpZB3lqQm7nkOdZdm5GhKtLLhAE7PiVQwN4eN+2YJJUg==} - word-wrap@1.2.5: resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} engines: {node: '>=0.10.0'} @@ -3135,10 +2973,6 @@ snapshots: got: 11.8.6 os-filter-obj: 2.0.0 - '@mongodb-js/saslprep@1.1.9': - dependencies: - sparse-bitfield: 3.0.3 - '@napi-rs/nice-android-arm-eabi@1.0.1': optional: true @@ -3325,10 +3159,6 @@ snapshots: '@types/node': 22.7.2 '@types/responselike': 1.0.3 - '@types/debug@4.1.12': - dependencies: - '@types/ms': 0.7.34 - '@types/estree@1.0.6': {} '@types/http-cache-semantics@4.0.4': {} @@ -3358,14 +3188,6 @@ snapshots: dependencies: '@types/node': 22.7.2 - '@types/validator@13.12.2': {} - - '@types/webidl-conversions@7.0.3': {} - - '@types/whatwg-url@11.0.5': - dependencies: - '@types/webidl-conversions': 7.0.3 - '@types/ws@8.5.12': dependencies: '@types/node': 22.7.2 @@ -3524,7 +3346,8 @@ snapshots: balanced-match@1.0.2: {} - base64-js@1.5.1: {} + base64-js@1.5.1: + optional: true bin-check@4.1.0: dependencies: @@ -3545,12 +3368,14 @@ snapshots: bindings@1.5.0: dependencies: file-uri-to-path: 1.0.0 + optional: true bl@4.1.0: dependencies: buffer: 5.7.1 inherits: 2.0.4 readable-stream: 3.6.2 + optional: true boolbase@1.0.0: {} @@ -3567,14 +3392,13 @@ snapshots: dependencies: fill-range: 7.1.1 - bson@6.8.0: {} - buffer-from@1.1.2: {} buffer@5.7.1: dependencies: base64-js: 1.5.1 ieee754: 1.2.1 + optional: true cacache@15.3.0: dependencies: @@ -3625,9 +3449,11 @@ snapshots: dependencies: readdirp: 4.0.1 - chownr@1.1.4: {} + chownr@1.1.4: + optional: true - chownr@2.0.0: {} + chownr@2.0.0: + optional: true clean-stack@2.2.0: optional: true @@ -3699,7 +3525,8 @@ snapshots: dependencies: mimic-response: 3.1.0 - deep-extend@0.6.0: {} + deep-extend@0.6.0: + optional: true deep-is@0.1.4: {} @@ -3712,7 +3539,8 @@ snapshots: denque@2.1.0: {} - detect-libc@2.0.3: {} + detect-libc@2.0.3: + optional: true discord-api-types@0.37.101: {} @@ -3797,8 +3625,6 @@ snapshots: dotenv@16.4.5: {} - dottie@2.0.6: {} - dprint@0.47.2: optionalDependencies: '@dprint/darwin-arm64': 0.47.2 @@ -4034,7 +3860,8 @@ snapshots: dependencies: pify: 2.3.0 - expand-template@2.0.3: {} + expand-template@2.0.3: + optional: true ext-list@2.2.2: dependencies: @@ -4084,7 +3911,8 @@ snapshots: strtok3: 7.1.1 token-types: 5.0.1 - file-uri-to-path@1.0.0: {} + file-uri-to-path@1.0.0: + optional: true filename-reserved-regex@3.0.0: {} @@ -4126,11 +3954,13 @@ snapshots: dependencies: fetch-blob: 3.2.0 - fs-constants@1.0.0: {} + fs-constants@1.0.0: + optional: true fs-minipass@2.1.0: dependencies: minipass: 3.3.6 + optional: true fs.realpath@1.0.0: optional: true @@ -4167,7 +3997,8 @@ snapshots: dependencies: resolve-pkg-maps: 1.0.0 - github-from-package@0.0.0: {} + github-from-package@0.0.0: + optional: true glob-parent@5.1.2: dependencies: @@ -4272,8 +4103,6 @@ snapshots: infer-owner@1.0.4: optional: true - inflection@1.13.4: {} - inflight@1.0.6: dependencies: once: 1.4.0 @@ -4282,7 +4111,8 @@ snapshots: inherits@2.0.4: {} - ini@1.3.8: {} + ini@1.3.8: + optional: true ioredis@5.4.1: dependencies: @@ -4350,8 +4180,6 @@ snapshots: json-stable-stringify-without-jsonify@1.0.1: {} - kareem@2.6.3: {} - keyv@4.5.4: dependencies: json-buffer: 3.0.1 @@ -4420,8 +4248,6 @@ snapshots: - supports-color optional: true - memory-pager@1.5.0: {} - merge-stream@2.0.0: {} merge2@1.4.1: {} @@ -4453,7 +4279,8 @@ snapshots: dependencies: brace-expansion: 2.0.1 - minimist@1.2.8: {} + minimist@1.2.8: + optional: true minipass-collect@1.0.2: dependencies: @@ -4487,67 +4314,27 @@ snapshots: minipass@3.3.6: dependencies: yallist: 4.0.0 + optional: true - minipass@5.0.0: {} + minipass@5.0.0: + optional: true minizlib@2.1.2: dependencies: minipass: 3.3.6 yallist: 4.0.0 + optional: true - mkdirp-classic@0.5.3: {} + mkdirp-classic@0.5.3: + optional: true - mkdirp@1.0.4: {} - - moment-timezone@0.5.45: - dependencies: - moment: 2.30.1 - - moment@2.30.1: {} - - mongodb-connection-string-url@3.0.1: - dependencies: - '@types/whatwg-url': 11.0.5 - whatwg-url: 13.0.0 - - mongodb@6.8.0(socks@2.8.3): - dependencies: - '@mongodb-js/saslprep': 1.1.9 - bson: 6.8.0 - mongodb-connection-string-url: 3.0.1 - optionalDependencies: - socks: 2.8.3 - - mongoose@8.6.3(socks@2.8.3): - dependencies: - bson: 6.8.0 - kareem: 2.6.3 - mongodb: 6.8.0(socks@2.8.3) - mpath: 0.9.0 - mquery: 5.0.0 - ms: 2.1.3 - sift: 17.1.3 - transitivePeerDependencies: - - '@aws-sdk/credential-providers' - - '@mongodb-js/zstd' - - gcp-metadata - - kerberos - - mongodb-client-encryption - - snappy - - socks - - supports-color - - mpath@0.9.0: {} - - mquery@5.0.0: - dependencies: - debug: 4.3.7 - transitivePeerDependencies: - - supports-color + mkdirp@1.0.4: + optional: true ms@2.1.3: {} - napi-build-utils@1.0.2: {} + napi-build-utils@1.0.2: + optional: true natural-compare@1.4.0: {} @@ -4557,8 +4344,10 @@ snapshots: node-abi@3.68.0: dependencies: semver: 7.6.3 + optional: true - node-addon-api@7.1.1: {} + node-addon-api@7.1.1: + optional: true node-domexception@1.0.0: {} @@ -4686,7 +4475,8 @@ snapshots: pg-cloudflare@1.1.1: optional: true - pg-connection-string@2.7.0: {} + pg-connection-string@2.7.0: + optional: true pg-int8@1.0.1: optional: true @@ -4793,6 +4583,7 @@ snapshots: simple-get: 4.0.1 tar-fs: 2.1.1 tunnel-agent: 0.6.0 + optional: true prelude-ls@1.2.1: {} @@ -4832,6 +4623,7 @@ snapshots: ini: 1.3.8 minimist: 1.2.8 strip-json-comments: 2.0.1 + optional: true readable-stream@3.6.2: dependencies: @@ -4861,8 +4653,6 @@ snapshots: dependencies: lowercase-keys: 2.0.0 - retry-as-promised@7.0.4: {} - retry@0.12.0: optional: true @@ -4896,32 +4686,6 @@ snapshots: semver@7.6.3: {} - sequelize-pool@7.1.0: {} - - sequelize@6.37.3(pg@8.13.0)(sqlite3@5.1.7): - dependencies: - '@types/debug': 4.1.12 - '@types/validator': 13.12.2 - debug: 4.3.7 - dottie: 2.0.6 - inflection: 1.13.4 - lodash: 4.17.21 - moment: 2.30.1 - moment-timezone: 0.5.45 - pg-connection-string: 2.7.0 - retry-as-promised: 7.0.4 - semver: 7.6.3 - sequelize-pool: 7.1.0 - toposort-class: 1.0.1 - uuid: 8.3.2 - validator: 13.12.0 - wkx: 0.5.0 - optionalDependencies: - pg: 8.13.0 - sqlite3: 5.1.7 - transitivePeerDependencies: - - supports-color - set-blocking@2.0.0: optional: true @@ -4937,17 +4701,17 @@ snapshots: shebang-regex@3.0.0: {} - sift@17.1.3: {} - signal-exit@3.0.7: {} - simple-concat@1.0.1: {} + simple-concat@1.0.1: + optional: true simple-get@4.0.1: dependencies: decompress-response: 6.0.0 once: 1.4.0 simple-concat: 1.0.1 + optional: true slash@3.0.0: {} @@ -4990,10 +4754,6 @@ snapshots: source-map@0.7.4: {} - sparse-bitfield@3.0.3: - dependencies: - memory-pager: 1.5.0 - split2@4.2.0: optional: true @@ -5018,6 +4778,7 @@ snapshots: transitivePeerDependencies: - bluebird - supports-color + optional: true ssri@8.0.1: dependencies: @@ -5045,7 +4806,8 @@ snapshots: strip-final-newline@2.0.0: {} - strip-json-comments@2.0.1: {} + strip-json-comments@2.0.1: + optional: true strip-json-comments@3.1.1: {} @@ -5071,6 +4833,7 @@ snapshots: mkdirp-classic: 0.5.3 pump: 3.0.2 tar-stream: 2.2.0 + optional: true tar-stream@2.2.0: dependencies: @@ -5079,6 +4842,7 @@ snapshots: fs-constants: 1.0.0 inherits: 2.0.4 readable-stream: 3.6.2 + optional: true tar@6.2.1: dependencies: @@ -5088,6 +4852,7 @@ snapshots: minizlib: 2.1.2 mkdirp: 1.0.4 yallist: 4.0.0 + optional: true text-table@0.2.0: {} @@ -5107,14 +4872,8 @@ snapshots: '@tokenizer/token': 0.3.0 ieee754: 1.2.1 - toposort-class@1.0.1: {} - tr46@0.0.3(patch_hash=bpj6gcw6zugqpvk6vn5cnxkdsq): {} - tr46@4.1.1: - dependencies: - punycode: 2.3.1 - trim-repeated@2.0.0: dependencies: escape-string-regexp: 5.0.0 @@ -5137,6 +4896,7 @@ snapshots: tunnel-agent@0.6.0: dependencies: safe-buffer: 5.2.1 + optional: true type-check@0.4.0: dependencies: @@ -5170,21 +4930,10 @@ snapshots: util-deprecate@1.0.2: {} - uuid@8.3.2: {} - - validator@13.12.0: {} - web-streams-polyfill@3.3.3: {} webidl-conversions@3.0.1: {} - webidl-conversions@7.0.0: {} - - whatwg-url@13.0.0: - dependencies: - tr46: 4.1.1 - webidl-conversions: 7.0.0 - whatwg-url@5.0.0(patch_hash=qm5bqxbojl4aucv5lfj4d2vjuu): dependencies: tr46: 0.0.3(patch_hash=bpj6gcw6zugqpvk6vn5cnxkdsq) @@ -5203,10 +4952,6 @@ snapshots: string-width: 4.2.3 optional: true - wkx@0.5.0: - dependencies: - '@types/node': 22.7.2 - word-wrap@1.2.5: {} wrappy@1.0.2: {} @@ -5218,7 +4963,8 @@ snapshots: yallist@2.1.2: {} - yallist@4.0.0: {} + yallist@4.0.0: + optional: true yocto-queue@0.1.0: {} diff --git a/src/drizzle/migrations/0001_quick_meggan.sql b/src/drizzle/migrations/0001_quick_meggan.sql new file mode 100644 index 0000000..546c09a --- /dev/null +++ b/src/drizzle/migrations/0001_quick_meggan.sql @@ -0,0 +1,10 @@ +ALTER TABLE "guildApps" ALTER COLUMN "userID" SET DATA TYPE varchar(32);--> statement-breakpoint +ALTER TABLE "guildApps" ALTER COLUMN "uuid" SET DATA TYPE varchar(32);--> statement-breakpoint +ALTER TABLE "settings" ALTER COLUMN "name" SET DATA TYPE varchar(32);--> statement-breakpoint +ALTER TABLE "settings" ALTER COLUMN "value" SET DATA TYPE varchar(256);--> statement-breakpoint +ALTER TABLE "staffApps" ALTER COLUMN "userID" SET DATA TYPE varchar(32);--> statement-breakpoint +ALTER TABLE "staffApps" ALTER COLUMN "uuid" SET DATA TYPE varchar(32);--> statement-breakpoint +ALTER TABLE "verifies" ALTER COLUMN "userID" SET DATA TYPE varchar(32);--> statement-breakpoint +ALTER TABLE "verifies" ALTER COLUMN "uuid" SET DATA TYPE varchar(32);--> statement-breakpoint +ALTER TABLE "waitingLists" ALTER COLUMN "userID" SET DATA TYPE varchar(32);--> statement-breakpoint +ALTER TABLE "waitingLists" ALTER COLUMN "uuid" SET DATA TYPE varchar(32); \ No newline at end of file diff --git a/src/drizzle/migrations/meta/0001_snapshot.json b/src/drizzle/migrations/meta/0001_snapshot.json new file mode 100644 index 0000000..13d1ea7 --- /dev/null +++ b/src/drizzle/migrations/meta/0001_snapshot.json @@ -0,0 +1,232 @@ +{ + "id": "de8f78f2-dc26-427d-9c12-233b5d3fa301", + "prevId": "6343d646-6e68-4bcd-ae1e-5cecb4569268", + "version": "7", + "dialect": "postgresql", + "tables": { + "public.guildApps": { + "name": "guildApps", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "userID": { + "name": "userID", + "type": "varchar(32)", + "primaryKey": false, + "notNull": true + }, + "uuid": { + "name": "uuid", + "type": "varchar(32)", + "primaryKey": false, + "notNull": true + }, + "createdAt": { + "name": "createdAt", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updatedAt": { + "name": "updatedAt", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {} + }, + "public.settings": { + "name": "settings", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "name": { + "name": "name", + "type": "varchar(32)", + "primaryKey": false, + "notNull": true + }, + "value": { + "name": "value", + "type": "varchar(256)", + "primaryKey": false, + "notNull": true + }, + "createdAt": { + "name": "createdAt", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updatedAt": { + "name": "updatedAt", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {} + }, + "public.staffApps": { + "name": "staffApps", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "userID": { + "name": "userID", + "type": "varchar(32)", + "primaryKey": false, + "notNull": true + }, + "uuid": { + "name": "uuid", + "type": "varchar(32)", + "primaryKey": false, + "notNull": true + }, + "createdAt": { + "name": "createdAt", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updatedAt": { + "name": "updatedAt", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {} + }, + "public.verifies": { + "name": "verifies", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "userID": { + "name": "userID", + "type": "varchar(32)", + "primaryKey": false, + "notNull": true + }, + "uuid": { + "name": "uuid", + "type": "varchar(32)", + "primaryKey": false, + "notNull": true + }, + "createdAt": { + "name": "createdAt", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updatedAt": { + "name": "updatedAt", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {} + }, + "public.waitingLists": { + "name": "waitingLists", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "userID": { + "name": "userID", + "type": "varchar(32)", + "primaryKey": false, + "notNull": true + }, + "uuid": { + "name": "uuid", + "type": "varchar(32)", + "primaryKey": false, + "notNull": true + }, + "timestamp": { + "name": "timestamp", + "type": "bigint", + "primaryKey": false, + "notNull": true + }, + "createdAt": { + "name": "createdAt", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updatedAt": { + "name": "updatedAt", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {} + } + }, + "enums": {}, + "schemas": {}, + "sequences": {}, + "_meta": { + "columns": {}, + "schemas": {}, + "tables": {} + } +} \ No newline at end of file diff --git a/src/drizzle/migrations/meta/_journal.json b/src/drizzle/migrations/meta/_journal.json index a1d64b8..818fdcc 100644 --- a/src/drizzle/migrations/meta/_journal.json +++ b/src/drizzle/migrations/meta/_journal.json @@ -8,6 +8,13 @@ "when": 1727906753913, "tag": "0000_bouncy_thor_girl", "breakpoints": true + }, + { + "idx": 1, + "version": "7", + "when": 1728318584421, + "tag": "0001_quick_meggan", + "breakpoints": true } ] } \ No newline at end of file diff --git a/src/drizzle/schema.ts b/src/drizzle/schema.ts index cb1d050..7f270ee 100644 --- a/src/drizzle/schema.ts +++ b/src/drizzle/schema.ts @@ -1,36 +1,36 @@ -import { bigint, pgTable, serial, text, timestamp } from "drizzle-orm/pg-core" +import { bigint, pgTable, serial, timestamp, varchar } from "drizzle-orm/pg-core" const createdAt = timestamp("createdAt").notNull().defaultNow() const updatedAt = timestamp("updatedAt").notNull().defaultNow().$onUpdate(() => new Date()) export const verifies = pgTable("verifies", { id: serial("id").primaryKey(), - userID: text("userID").notNull(), - uuid: text("uuid").notNull(), + userID: varchar("userID", { length: 32 }).notNull(), + uuid: varchar("uuid", { length: 32 }).notNull(), createdAt, updatedAt }) export const guildApps = pgTable("guildApps", { id: serial("id").primaryKey(), - userID: text("userID").notNull(), - uuid: text("uuid").notNull(), + userID: varchar("userID", { length: 32 }).notNull(), + uuid: varchar("uuid", { length: 32 }).notNull(), createdAt, updatedAt }) export const staffApps = pgTable("staffApps", { id: serial("id").primaryKey(), - userID: text("userID").notNull(), - uuid: text("uuid").notNull(), + userID: varchar("userID", { length: 32 }).notNull(), + uuid: varchar("uuid", { length: 32 }).notNull(), createdAt, updatedAt }) export const waitingLists = pgTable("waitingLists", { id: serial("id").primaryKey(), - userID: text("userID").notNull(), - uuid: text("uuid").notNull(), + userID: varchar("userID", { length: 32 }).notNull(), + uuid: varchar("uuid", { length: 32 }).notNull(), timestamp: bigint("timestamp", { mode: "number" }).notNull(), createdAt, updatedAt @@ -38,8 +38,23 @@ export const waitingLists = pgTable("waitingLists", { export const settings = pgTable("settings", { id: serial("id").primaryKey(), - name: text("name").notNull(), - value: text("value").notNull(), + name: varchar("name", { length: 32 }).notNull(), + value: varchar("value", { length: 256 }).notNull(), createdAt, updatedAt }) + +export type SelectVerify = typeof verifies.$inferSelect +export type InsertVerify = typeof verifies.$inferInsert + +export type SelectGuildApp = typeof guildApps.$inferSelect +export type InsertGuildApp = typeof guildApps.$inferInsert + +export type SelectStaffApp = typeof staffApps.$inferSelect +export type InsertStaffApp = typeof staffApps.$inferInsert + +export type SelectWaitingList = typeof waitingLists.$inferSelect +export type InsertWaitingList = typeof waitingLists.$inferInsert + +export type SelectSetting = typeof settings.$inferSelect +export type InsertSetting = typeof settings.$inferInsert diff --git a/src/utils/Illegitimate.ts b/src/utils/Illegitimate.ts index a307dea..f1fc520 100644 --- a/src/utils/Illegitimate.ts +++ b/src/utils/Illegitimate.ts @@ -1,21 +1,18 @@ +import { Player } from "discord-player" +import { YoutubeiExtractor } from "discord-player-youtubei" +import { drizzle } from "drizzle-orm/postgres-js" +import { migrate } from "drizzle-orm/postgres-js/migrator" import { Redis } from "ioredis" +import postgres from "postgres" import { ExtendedClient as Client } from "~/utils/Client.js" import env from "~/utils/Env.js" import { color } from "~/utils/functions/colors.js" -// import { connect } from "mongoose" -import { Player } from "discord-player" -import { YoutubeiExtractor } from "discord-player-youtubei" -// import { Sequelize } from "sequelize" import { MissingEnvVarsError } from "./Classes.js" import loadAllEvents from "./Events/loadevents.js" const client = new Client() const redis = new Redis(env.prod.redisURI) const player = new Player(client) -// const sequelize = new Sequelize({ -// dialect: "sqlite", -// storage: "dev/db.sqlite" -// }) let ft: "js" | "ts" if (process.env.NODE_ENV === "dev" && process.env.TYPESCRIPT === "true") { @@ -27,6 +24,7 @@ if (process.env.NODE_ENV === "dev" && process.env.TYPESCRIPT === "true") { class Illegitimate { async start() { await this.init() + await this.migrations() await loadAllEvents(client, ft) // await player.extractors.loadDefault() await player.extractors.loadDefault(ext => ext != "YouTubeExtractor") @@ -40,14 +38,6 @@ class Illegitimate { redis.on("ready", () => { console.log(color("Connected to Redis", "green")) }) - // if (process.env.NODE_ENV === "dev") { - // sequelize.sync({ logging: false }).then(() => { - // console.log(color("Synced the db [dev]", "green")) - // }) - // } - // connect(env.prod.mongoURI, {}).then(() => { - // console.log(color("Connected to MongoDB", "green")) - // }) } private async init() { @@ -68,6 +58,14 @@ class Illegitimate { } } + private async migrations() { + const migrationsClient = postgres(env.prod.postgresURI) + const migrations = drizzle(migrationsClient) + await migrate(migrations, { + migrationsFolder: "./src/drizzle/migrations/" + }) + } + private loadMethods() { String.prototype.removeIndents = function(this: string) { return this.replace(/^ */gm, "")