api: add prisma pg adapters and requirements
Pedro Lucas Porcellis porcellis@eletrotupi.com · 6 months ago
76fe3a3c176623f40e7fef881515a0d904392c0b Browse filesParents
3e2d237Changed files
3
Additions
+216
Deletions
-17
api/package-lock.json
1 1
{
2 2
"name": "orbit-api",
3 3
"version": "0.0.0",
4 4
"lockfileVersion": 3,
5 5
"requires": true,
8 8
"name": "orbit-api",
9 9
"version": "0.0.0",
10 10
"license": "ISC",
11 11
"dependencies": {
12 12
"@prisma/adapter-better-sqlite3": "^7.5.0",
13 +
"@prisma/adapter-pg": "^7.7.0",
13 14
"@prisma/client": "^7.5.0",
14 15
"@types/cors": "^2.8.19",
15 16
"@types/jsonwebtoken": "^9.0.10",
16 17
"bcryptjs": "^3.0.3",
17 18
"better-sqlite3": "^12.5.0",
18 19
"cors": "^2.8.6",
19 20
"date-fns": "^4.1.0",
20 21
"express": "^5.2.1",
21 22
"jsonwebtoken": "^9.0.3",
22 -
"morgan": "^1.10.1"
23 +
"morgan": "^1.10.1",
24 +
"pg": "^8.20.0"
23 25
},
24 26
"devDependencies": {
25 27
"@types/better-sqlite3": "^7.6.13",
26 28
"@types/express": "^5.0.6",
27 29
"@types/morgan": "^1.9.10",
28 -
"@types/node": "^25.5.0",
30 +
"@types/node": "^25.5.2",
29 31
"ava": "^6.4.1",
30 32
"prisma": "^7.5.0",
31 33
"supertest": "^7.1.4",
32 34
"ts-node": "^10.9.2",
33 35
"tsc-alias": "^1.8.16",
34 -
"tsconfig-paths": "^4.2.0"
36 +
"tsconfig-paths": "^4.2.0",
37 +
"typescript": "^6.0.2"
35 38
}
36 39
},
37 40
"node_modules/@chevrotain/cst-dts-gen": {
38 41
"version": "10.5.0",
39 42
"resolved": "https://registry.npmjs.org/@chevrotain/cst-dts-gen/-/cst-dts-gen-10.5.0.tgz",
327 330
"dependencies": {
328 331
"@prisma/driver-adapter-utils": "7.5.0",
329 332
"better-sqlite3": "^12.6.0"
330 333
}
331 334
},
335 +
"node_modules/@prisma/adapter-pg": {
336 +
"version": "7.7.0",
337 +
"resolved": "https://registry.npmjs.org/@prisma/adapter-pg/-/adapter-pg-7.7.0.tgz",
338 +
"integrity": "sha512-q33Ta8sKbgzEpAy0lx45tAq//yMv0qcb+8nj+TCA3P4wiAY+OBFEFk/NDkZncAfHaNJeGo5WJpJdpbL+ijYx8g==",
339 +
"license": "Apache-2.0",
340 +
"dependencies": {
341 +
"@prisma/driver-adapter-utils": "7.7.0",
342 +
"@types/pg": "^8.16.0",
343 +
"pg": "^8.16.3",
344 +
"postgres-array": "3.0.4"
345 +
}
346 +
},
347 +
"node_modules/@prisma/adapter-pg/node_modules/@prisma/debug": {
348 +
"version": "7.7.0",
349 +
"resolved": "https://registry.npmjs.org/@prisma/debug/-/debug-7.7.0.tgz",
350 +
"integrity": "sha512-12J62XdqCmpiwJHhHdQxZeY3ckVCWIFmcJP8hg5dPTceeiQ0wiojXGFYTluKqFQfu46fRLgb/rLALZMAx3+dTA==",
351 +
"license": "Apache-2.0"
352 +
},
353 +
"node_modules/@prisma/adapter-pg/node_modules/@prisma/driver-adapter-utils": {
354 +
"version": "7.7.0",
355 +
"resolved": "https://registry.npmjs.org/@prisma/driver-adapter-utils/-/driver-adapter-utils-7.7.0.tgz",
356 +
"integrity": "sha512-gZXREeu6mOk7zXfGFJgh86p7Vhj0sXNKp+4Cg1tWYo7V2dfncP2qxS2BiTmbIIha8xPqItkl0WSw38RuSq1HoQ==",
357 +
"license": "Apache-2.0",
358 +
"dependencies": {
359 +
"@prisma/debug": "7.7.0"
360 +
}
361 +
},
332 362
"node_modules/@prisma/client": {
333 363
"version": "7.5.0",
334 364
"resolved": "https://registry.npmjs.org/@prisma/client/-/client-7.5.0.tgz",
335 365
"integrity": "sha512-h4hF9ctp+kSRs7ENHGsFQmHAgHcfkOCxbYt6Ti9Xi8x7D+kP4tTi9x51UKmiTH/OqdyJAO+8V+r+JA5AWdav7w==",
336 366
"license": "Apache-2.0",
681 711
"resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz",
682 712
"integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==",
683 713
"license": "MIT"
684 714
},
685 715
"node_modules/@types/node": {
686 -
"version": "25.5.0",
687 -
"resolved": "https://registry.npmjs.org/@types/node/-/node-25.5.0.tgz",
688 -
"integrity": "sha512-jp2P3tQMSxWugkCUKLRPVUpGaL5MVFwF8RDuSRztfwgN1wmqJeMSbKlnEtQqU8UrhTmzEmZdu2I6v2dpp7XIxw==",
716 +
"version": "25.5.2",
717 +
"resolved": "https://registry.npmjs.org/@types/node/-/node-25.5.2.tgz",
718 +
"integrity": "sha512-tO4ZIRKNC+MDWV4qKVZe3Ql/woTnmHDr5JD8UI5hn2pwBrHEwOEMZK7WlNb5RKB6EoJ02gwmQS9OrjuFnZYdpg==",
689 719
"license": "MIT",
690 720
"dependencies": {
691 721
"undici-types": "~7.18.0"
722 +
}
723 +
},
724 +
"node_modules/@types/pg": {
725 +
"version": "8.20.0",
726 +
"resolved": "https://registry.npmjs.org/@types/pg/-/pg-8.20.0.tgz",
727 +
"integrity": "sha512-bEPFOaMAHTEP1EzpvHTbmwR8UsFyHSKsRisLIHVMXnpNefSbGA1bD6CVy+qKjGSqmZqNqBDV2azOBo8TgkcVow==",
728 +
"license": "MIT",
729 +
"dependencies": {
730 +
"@types/node": "*",
731 +
"pg-protocol": "*",
732 +
"pg-types": "^2.2.0"
692 733
}
693 734
},
694 735
"node_modules/@types/qs": {
695 736
"version": "6.15.0",
696 737
"resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.15.0.tgz",
3827 3868
"resolved": "https://registry.npmjs.org/perfect-debounce/-/perfect-debounce-1.0.0.tgz",
3828 3869
"integrity": "sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==",
3829 3870
"devOptional": true,
3830 3871
"license": "MIT"
3831 3872
},
3873 +
"node_modules/pg": {
3874 +
"version": "8.20.0",
3875 +
"resolved": "https://registry.npmjs.org/pg/-/pg-8.20.0.tgz",
3876 +
"integrity": "sha512-ldhMxz2r8fl/6QkXnBD3CR9/xg694oT6DZQ2s6c/RI28OjtSOpxnPrUCGOBJ46RCUxcWdx3p6kw/xnDHjKvaRA==",
3877 +
"license": "MIT",
3878 +
"dependencies": {
3879 +
"pg-connection-string": "^2.12.0",
3880 +
"pg-pool": "^3.13.0",
3881 +
"pg-protocol": "^1.13.0",
3882 +
"pg-types": "2.2.0",
3883 +
"pgpass": "1.0.5"
3884 +
},
3885 +
"engines": {
3886 +
"node": ">= 16.0.0"
3887 +
},
3888 +
"optionalDependencies": {
3889 +
"pg-cloudflare": "^1.3.0"
3890 +
},
3891 +
"peerDependencies": {
3892 +
"pg-native": ">=3.0.1"
3893 +
},
3894 +
"peerDependenciesMeta": {
3895 +
"pg-native": {
3896 +
"optional": true
3897 +
}
3898 +
}
3899 +
},
3900 +
"node_modules/pg-cloudflare": {
3901 +
"version": "1.3.0",
3902 +
"resolved": "https://registry.npmjs.org/pg-cloudflare/-/pg-cloudflare-1.3.0.tgz",
3903 +
"integrity": "sha512-6lswVVSztmHiRtD6I8hw4qP/nDm1EJbKMRhf3HCYaqud7frGysPv7FYJ5noZQdhQtN2xJnimfMtvQq21pdbzyQ==",
3904 +
"license": "MIT",
3905 +
"optional": true
3906 +
},
3907 +
"node_modules/pg-connection-string": {
3908 +
"version": "2.12.0",
3909 +
"resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.12.0.tgz",
3910 +
"integrity": "sha512-U7qg+bpswf3Cs5xLzRqbXbQl85ng0mfSV/J0nnA31MCLgvEaAo7CIhmeyrmJpOr7o+zm0rXK+hNnT5l9RHkCkQ==",
3911 +
"license": "MIT"
3912 +
},
3913 +
"node_modules/pg-int8": {
3914 +
"version": "1.0.1",
3915 +
"resolved": "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz",
3916 +
"integrity": "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==",
3917 +
"license": "ISC",
3918 +
"engines": {
3919 +
"node": ">=4.0.0"
3920 +
}
3921 +
},
3922 +
"node_modules/pg-pool": {
3923 +
"version": "3.13.0",
3924 +
"resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.13.0.tgz",
3925 +
"integrity": "sha512-gB+R+Xud1gLFuRD/QgOIgGOBE2KCQPaPwkzBBGC9oG69pHTkhQeIuejVIk3/cnDyX39av2AxomQiyPT13WKHQA==",
3926 +
"license": "MIT",
3927 +
"peerDependencies": {
3928 +
"pg": ">=8.0"
3929 +
}
3930 +
},
3931 +
"node_modules/pg-protocol": {
3932 +
"version": "1.13.0",
3933 +
"resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.13.0.tgz",
3934 +
"integrity": "sha512-zzdvXfS6v89r6v7OcFCHfHlyG/wvry1ALxZo4LqgUoy7W9xhBDMaqOuMiF3qEV45VqsN6rdlcehHrfDtlCPc8w==",
3935 +
"license": "MIT"
3936 +
},
3937 +
"node_modules/pg-types": {
3938 +
"version": "2.2.0",
3939 +
"resolved": "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz",
3940 +
"integrity": "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==",
3941 +
"license": "MIT",
3942 +
"dependencies": {
3943 +
"pg-int8": "1.0.1",
3944 +
"postgres-array": "~2.0.0",
3945 +
"postgres-bytea": "~1.0.0",
3946 +
"postgres-date": "~1.0.4",
3947 +
"postgres-interval": "^1.1.0"
3948 +
},
3949 +
"engines": {
3950 +
"node": ">=4"
3951 +
}
3952 +
},
3953 +
"node_modules/pg-types/node_modules/postgres-array": {
3954 +
"version": "2.0.0",
3955 +
"resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz",
3956 +
"integrity": "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==",
3957 +
"license": "MIT",
3958 +
"engines": {
3959 +
"node": ">=4"
3960 +
}
3961 +
},
3962 +
"node_modules/pgpass": {
3963 +
"version": "1.0.5",
3964 +
"resolved": "https://registry.npmjs.org/pgpass/-/pgpass-1.0.5.tgz",
3965 +
"integrity": "sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==",
3966 +
"license": "MIT",
3967 +
"dependencies": {
3968 +
"split2": "^4.1.0"
3969 +
}
3970 +
},
3832 3971
"node_modules/picomatch": {
3833 3972
"version": "4.0.3",
3834 3973
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz",
3835 3974
"integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==",
3836 3975
"dev": true,
3895 4034
"funding": {
3896 4035
"type": "individual",
3897 4036
"url": "https://github.com/sponsors/porsager"
3898 4037
}
3899 4038
},
4039 +
"node_modules/postgres-array": {
4040 +
"version": "3.0.4",
4041 +
"resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-3.0.4.tgz",
4042 +
"integrity": "sha512-nAUSGfSDGOaOAEGwqsRY27GPOea7CNipJPOA7lPbdEpx5Kg3qzdP0AaWC5MlhTWV9s4hFX39nomVZ+C4tnGOJQ==",
4043 +
"license": "MIT",
4044 +
"engines": {
4045 +
"node": ">=12"
4046 +
}
4047 +
},
4048 +
"node_modules/postgres-bytea": {
4049 +
"version": "1.0.1",
4050 +
"resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.1.tgz",
4051 +
"integrity": "sha512-5+5HqXnsZPE65IJZSMkZtURARZelel2oXUEO8rH83VS/hxH5vv1uHquPg5wZs8yMAfdv971IU+kcPUczi7NVBQ==",
4052 +
"license": "MIT",
4053 +
"engines": {
4054 +
"node": ">=0.10.0"
4055 +
}
4056 +
},
4057 +
"node_modules/postgres-date": {
4058 +
"version": "1.0.7",
4059 +
"resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.7.tgz",
4060 +
"integrity": "sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==",
4061 +
"license": "MIT",
4062 +
"engines": {
4063 +
"node": ">=0.10.0"
4064 +
}
4065 +
},
4066 +
"node_modules/postgres-interval": {
4067 +
"version": "1.2.0",
4068 +
"resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz",
4069 +
"integrity": "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==",
4070 +
"license": "MIT",
4071 +
"dependencies": {
4072 +
"xtend": "^4.0.0"
4073 +
},
4074 +
"engines": {
4075 +
"node": ">=0.10.0"
4076 +
}
4077 +
},
3900 4078
"node_modules/prebuild-install": {
3901 4079
"version": "7.1.3",
3902 4080
"resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.3.tgz",
3903 4081
"integrity": "sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug==",
3904 4082
"license": "MIT",
4594 4772
},
4595 4773
"funding": {
4596 4774
"url": "https://github.com/chalk/slice-ansi?sponsor=1"
4597 4775
}
4598 4776
},
4777 +
"node_modules/split2": {
4778 +
"version": "4.2.0",
4779 +
"resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz",
4780 +
"integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==",
4781 +
"license": "ISC",
4782 +
"engines": {
4783 +
"node": ">= 10.x"
4784 +
}
4785 +
},
4599 4786
"node_modules/sprintf-js": {
4600 4787
"version": "1.0.3",
4601 4788
"resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
4602 4789
"integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==",
4603 4790
"dev": true,
5170 5357
"engines": {
5171 5358
"node": ">= 0.6"
5172 5359
}
5173 5360
},
5174 5361
"node_modules/typescript": {
5175 -
"version": "5.9.3",
5176 -
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz",
5177 -
"integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==",
5362 +
"version": "6.0.2",
5363 +
"resolved": "https://registry.npmjs.org/typescript/-/typescript-6.0.2.tgz",
5364 +
"integrity": "sha512-bGdAIrZ0wiGDo5l8c++HWtbaNCWTS4UTv7RaTH/ThVIgjkveJt83m74bBHMJkuCbslY8ixgLBVZJIOiQlQTjfQ==",
5178 5365
"devOptional": true,
5179 5366
"license": "Apache-2.0",
5180 -
"peer": true,
5181 5367
"bin": {
5182 5368
"tsc": "bin/tsc",
5183 5369
"tsserver": "bin/tsserver"
5184 5370
},
5185 5371
"engines": {
5444 5630
"imurmurhash": "^0.1.4",
5445 5631
"signal-exit": "^4.0.1"
5446 5632
},
5447 5633
"engines": {
5448 5634
"node": "^18.17.0 || >=20.5.0"
5635 +
}
5636 +
},
5637 +
"node_modules/xtend": {
5638 +
"version": "4.0.2",
5639 +
"resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
5640 +
"integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
5641 +
"license": "MIT",
5642 +
"engines": {
5643 +
"node": ">=0.4"
5449 5644
}
5450 5645
},
5451 5646
"node_modules/y18n": {
5452 5647
"version": "5.0.8",
5453 5648
"resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
5573 5768
"graphmatch": "^1.1.0"
5574 5769
}
5575 5770
}
5576 5771
}
5577 5772
}
api/package.json
1 1
{
2 2
"name": "orbit-api",
3 3
"version": "0.0.0",
4 4
"description": "",
5 5
"license": "ISC",
9 9
"test": "tests"
10 10
},
11 11
"scripts": {
12 12
"build": "tsc && tsc-alias",
13 13
"start": "ts-node -r tsconfig-paths/register src/index.ts",
14 -
"test": "npx ava"
14 +
"test": "npx ava",
15 +
"dev": "prisma generate && prisma migrate deploy && npm run start"
15 16
},
16 17
"dependencies": {
17 18
"@prisma/adapter-better-sqlite3": "^7.5.0",
19 +
"@prisma/adapter-pg": "^7.7.0",
18 20
"@prisma/client": "^7.5.0",
19 21
"@types/cors": "^2.8.19",
20 22
"@types/jsonwebtoken": "^9.0.10",
21 23
"bcryptjs": "^3.0.3",
22 24
"better-sqlite3": "^12.5.0",
23 25
"cors": "^2.8.6",
24 26
"date-fns": "^4.1.0",
25 27
"express": "^5.2.1",
26 28
"jsonwebtoken": "^9.0.3",
27 -
"morgan": "^1.10.1"
29 +
"morgan": "^1.10.1",
30 +
"pg": "^8.20.0"
28 31
},
29 32
"devDependencies": {
30 33
"@types/better-sqlite3": "^7.6.13",
31 34
"@types/express": "^5.0.6",
32 35
"@types/morgan": "^1.9.10",
33 -
"@types/node": "^25.5.0",
36 +
"@types/node": "^25.5.2",
34 37
"ava": "^6.4.1",
35 38
"prisma": "^7.5.0",
36 39
"supertest": "^7.1.4",
37 40
"ts-node": "^10.9.2",
38 41
"tsc-alias": "^1.8.16",
39 -
"tsconfig-paths": "^4.2.0"
42 +
"tsconfig-paths": "^4.2.0",
43 +
"typescript": "^6.0.2"
40 44
}
41 45
}
api/src/lib/prisma.ts
1 1
import "dotenv/config"
2 -
import { PrismaBetterSqlite3 } from '@prisma/adapter-better-sqlite3';
2 +
import { PrismaPg } from '@prisma/adapter-pg';
3 3
import { PrismaClient } from '@prisma/client';
4 4
5 -
const connectionStr = `${process.env.DATABASE_URL}`;
5 +
const connectionString = `${process.env.DATABASE_URL}`;
6 6
7 -
const adapter = new PrismaBetterSqlite3({ url: connectionStr });
7 +
const adapter = new PrismaPg({ connectionString });
8 8
const prisma = new PrismaClient({ adapter });
9 9
10 10
export {
11 11
prisma
12 12
}