eletrotupi / tcc/ commit / 76fe3a3

api: add prisma pg adapters and requirements

Pedro Lucas Porcellis porcellis@eletrotupi.com · 6 months ago 76fe3a3c176623f40e7fef881515a0d904392c0b Browse files
Parents 3e2d237
Changed files
3
Additions
+216
Deletions
-17
api/package-lock.json modified+205 -10
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 modified+8 -4
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 modified+3 -3
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
}