Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in
Toggle navigation
A
ajs_22_shop_api
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Нұрасыл Қайратұлы
ajs_22_shop_api
Commits
6edad83d
Commit
6edad83d
authored
Sep 02, 2025
by
Нұрасыл Қайратұлы
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
add classwork-87
parent
dd77e9f7
Hide whitespace changes
Inline
Side-by-side
Showing
15 changed files
with
680 additions
and
37 deletions
+680
-37
.env.example
server/.env.example
+6
-0
package.json
server/package.json
+5
-1
pnpm-lock.yaml
server/pnpm-lock.yaml
+450
-0
app.module.ts
server/src/app.module.ts
+25
-1
categories.controller.ts
server/src/categories/categories.controller.ts
+45
-0
categories.module.ts
server/src/categories/categories.module.ts
+13
-0
categories.service.ts
server/src/categories/categories.service.ts
+42
-0
create-category.dto.ts
server/src/categories/dto/create-category.dto.ts
+10
-0
update-category.dto.ts
server/src/categories/dto/update-category.dto.ts
+4
-0
category.entity.ts
server/src/categories/entities/category.entity.ts
+17
-0
create-product.dto.ts
server/src/products/dto/create-product.dto.ts
+4
-0
product.ts
server/src/products/entity/product.ts
+23
-0
products.controller.ts
server/src/products/products.controller.ts
+1
-1
products.module.ts
server/src/products/products.module.ts
+6
-1
products.service.ts
server/src/products/products.service.ts
+29
-33
No files found.
server/.env.example
0 → 100644
View file @
6edad83d
DB_HOST=
DB_PORT=
DB_USER=
DB_PASS=
DB_NAME=
PORT=
server/package.json
View file @
6edad83d
...
...
@@ -21,15 +21,19 @@
},
"dependencies"
:
{
"@nestjs/common"
:
"^11.0.1"
,
"@nestjs/config"
:
"^4.0.2"
,
"@nestjs/core"
:
"^11.0.1"
,
"@nestjs/mapped-types"
:
"*"
,
"@nestjs/platform-express"
:
"^11.0.1"
,
"@nestjs/serve-static"
:
"^5.0.3"
,
"@nestjs/typeorm"
:
"^11.0.0"
,
"class-transformer"
:
"^0.5.1"
,
"class-validator"
:
"^0.14.2"
,
"multer"
:
"^2.0.2"
,
"pg"
:
"^8.16.3"
,
"reflect-metadata"
:
"^0.2.2"
,
"rxjs"
:
"^7.8.1"
"rxjs"
:
"^7.8.1"
,
"typeorm"
:
"^0.3.26"
},
"devDependencies"
:
{
"@eslint/eslintrc"
:
"^3.2.0"
,
...
...
server/pnpm-lock.yaml
View file @
6edad83d
...
...
@@ -11,6 +11,9 @@ importers:
'
@nestjs/common'
:
specifier
:
^11.0.1
version
:
11.1.6(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2)
'
@nestjs/config'
:
specifier
:
^4.0.2
version
:
4.0.2(@nestjs/common@11.1.6(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(rxjs@7.8.2)
'
@nestjs/core'
:
specifier
:
^11.0.1
version
:
11.1.6(@nestjs/common@11.1.6(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@11.1.6)(reflect-metadata@0.2.2)(rxjs@7.8.2)
...
...
@@ -23,6 +26,9 @@ importers:
'
@nestjs/serve-static'
:
specifier
:
^5.0.3
version
:
5.0.3(@nestjs/common@11.1.6(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.6)(express@5.1.0)
'
@nestjs/typeorm'
:
specifier
:
^11.0.0
version
:
11.0.0(@nestjs/common@11.1.6(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.6)(reflect-metadata@0.2.2)(rxjs@7.8.2)(typeorm@0.3.26(pg@8.16.3)(reflect-metadata@0.2.2)(ts-node@10.9.2(@swc/core@1.13.3)(@types/node@22.17.1)(typescript@5.9.2)))
class-transformer
:
specifier
:
^0.5.1
version
:
0.5.1
...
...
@@ -32,12 +38,18 @@ importers:
multer
:
specifier
:
^2.0.2
version
:
2.0.2
pg
:
specifier
:
^8.16.3
version
:
8.16.3
reflect-metadata
:
specifier
:
^0.2.2
version
:
0.2.2
rxjs
:
specifier
:
^7.8.1
version
:
7.8.2
typeorm
:
specifier
:
^0.3.26
version
:
0.3.26(pg@8.16.3)(reflect-metadata@0.2.2)(ts-node@10.9.2(@swc/core@1.13.3)(@types/node@22.17.1)(typescript@5.9.2))
devDependencies
:
'
@eslint/eslintrc'
:
specifier
:
^3.2.0
...
...
@@ -747,6 +759,12 @@ packages:
class-validator
:
optional
:
true
'
@nestjs/config@4.0.2'
:
resolution
:
{
integrity
:
sha512-McMW6EXtpc8+CwTUwFdg6h7dYcBUpH5iUILCclAsa+MbCEvC9ZKu4dCHRlJqALuhjLw97pbQu62l4+wRwGeZqA==
}
peerDependencies
:
'
@nestjs/common'
:
^10.0.0 || ^11.0.0
rxjs
:
^7.1.0
'
@nestjs/core@11.1.6'
:
resolution
:
{
integrity
:
sha512-siWX7UDgErisW18VTeJA+x+/tpNZrJewjTBsRPF3JVxuWRuAB1kRoiJcxHgln8Lb5UY9NdvklITR84DUEXD0Cg==
}
engines
:
{
node
:
'
>=
20'
}
...
...
@@ -818,6 +836,15 @@ packages:
'
@nestjs/platform-express'
:
optional
:
true
'
@nestjs/typeorm@11.0.0'
:
resolution
:
{
integrity
:
sha512-SOeUQl70Lb2OfhGkvnh4KXWlsd+zA08RuuQgT7kKbzivngxzSo1Oc7Usu5VxCxACQC9wc2l9esOHILSJeK7rJA==
}
peerDependencies
:
'
@nestjs/common'
:
^10.0.0 || ^11.0.0
'
@nestjs/core'
:
^10.0.0 || ^11.0.0
reflect-metadata
:
^0.1.13 || ^0.2.0
rxjs
:
^7.2.0
typeorm
:
^0.3.0
'
@noble/hashes@1.8.0'
:
resolution
:
{
integrity
:
sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==
}
engines
:
{
node
:
^14.21.3 || >=16
}
...
...
@@ -842,6 +869,10 @@ packages:
'
@paralleldrive/cuid2@2.2.2'
:
resolution
:
{
integrity
:
sha512-ZOBkgDwEdoYVlSeRbYYXs0S9MejQofiVYoTbKzy/6GQa39/q5tQU2IX46+shYnUkpEl3wc+J6wRlar7r2EK2xA==
}
'
@pkgjs/parseargs@0.11.0'
:
resolution
:
{
integrity
:
sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==
}
engines
:
{
node
:
'
>=14'
}
'
@pkgr/core@0.2.9'
:
resolution
:
{
integrity
:
sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==
}
engines
:
{
node
:
^12.20.0 || ^14.18.0 || >=16.0.0
}
...
...
@@ -859,6 +890,9 @@ packages:
'
@sinonjs/fake-timers@10.3.0'
:
resolution
:
{
integrity
:
sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==
}
'
@sqltools/formatter@1.2.5'
:
resolution
:
{
integrity
:
sha512-Uy0+khmZqUrUGm5dmMqVlnvufZRSK0FbYzVgp0UMstm+F5+W2/jnEEQyc9vo1ZR/E5ZI/B1WjjoTqBqwJL6Krw==
}
'
@swc/cli@0.6.0'
:
resolution
:
{
integrity
:
sha512-Q5FsI3Cw0fGMXhmsg7c08i4EmXCrcl+WnAxb6LYOLHw4JFFC3yzmx9LaXZ7QMbA+JZXbigU2TirI7RAfO0Qlnw==
}
engines
:
{
node
:
'
>=
16.14.0'
}
...
...
@@ -1304,6 +1338,10 @@ packages:
resolution
:
{
integrity
:
sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==
}
engines
:
{
node
:
'
>=12'
}
ansis@3.17.0
:
resolution
:
{
integrity
:
sha512-0qWUglt9JEqLFr3w1I1pbrChn1grhaiAR2ocX1PP/flRmxgtwTzPFFFnfIlD6aMOLQZgSuCRlidD70lvx8yhzg==
}
engines
:
{
node
:
'
>=14'
}
ansis@4.1.0
:
resolution
:
{
integrity
:
sha512-BGcItUBWSMRgOCe+SVZJ+S7yTRG0eGt9cXAHev72yuGcY23hnLA7Bky5L/xLyPINoSN95geovfBkqoTlNZYa7w==
}
engines
:
{
node
:
'
>=14'
}
...
...
@@ -1312,6 +1350,10 @@ packages:
resolution
:
{
integrity
:
sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==
}
engines
:
{
node
:
'
>=
8'
}
app-root-path@3.1.0
:
resolution
:
{
integrity
:
sha512-biN3PwB2gUtjaYy/isrU3aNWI5w+fAfvHkSvCKeQGxhmYpwKFUxudR3Yya+KqVRHBmEDYh+/lTozYCFbmzX4nA==
}
engines
:
{
node
:
'
>=
6.0.0'
}
append-field@1.0.0
:
resolution
:
{
integrity
:
sha512-klpgFSWLW1ZEs8svjfb7g4qWY0YS5imI82dTg+QahUvJ8YqAY0P10Uk8tTyh9ZGuYEZEMaeJYCF5BFuX552hsw==
}
...
...
@@ -1336,6 +1378,10 @@ packages:
asynckit@0.4.0
:
resolution
:
{
integrity
:
sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==
}
available-typed-arrays@1.0.7
:
resolution
:
{
integrity
:
sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==
}
engines
:
{
node
:
'
>=
0.4'
}
b4a@1.6.7
:
resolution
:
{
integrity
:
sha512-OnAYlL5b7LEkALw87fUVafQw5rVR9RjwGd4KUwNQ6DrrNmaVaUCgLipfVlzrPQ4tWOR9P0IXGNOx50jYCCdSJg==
}
...
...
@@ -1419,6 +1465,9 @@ packages:
buffer@5.7.1
:
resolution
:
{
integrity
:
sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==
}
buffer@6.0.3
:
resolution
:
{
integrity
:
sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==
}
busboy@1.6.0
:
resolution
:
{
integrity
:
sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==
}
engines
:
{
node
:
'
>=10.16.0'
}
...
...
@@ -1439,6 +1488,10 @@ packages:
resolution
:
{
integrity
:
sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==
}
engines
:
{
node
:
'
>=
0.4'
}
call-bind@1.0.8
:
resolution
:
{
integrity
:
sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==
}
engines
:
{
node
:
'
>=
0.4'
}
call-bound@1.0.4
:
resolution
:
{
integrity
:
sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==
}
engines
:
{
node
:
'
>=
0.4'
}
...
...
@@ -1619,6 +1672,9 @@ packages:
resolution
:
{
integrity
:
sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==
}
engines
:
{
node
:
'
>=
8'
}
dayjs@1.11.18
:
resolution
:
{
integrity
:
sha512-zFBQ7WFRvVRhKcWoUh+ZA1g2HVgUbsZm9sbddh8EC5iv93sui8DVVz1Npvz+r6meo9VKfa8NyLWBsQK1VvIKPA==
}
debug@4.4.1
:
resolution
:
{
integrity
:
sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==
}
engines
:
{
node
:
'
>=6.0'
}
...
...
@@ -1658,6 +1714,10 @@ packages:
resolution
:
{
integrity
:
sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==
}
engines
:
{
node
:
'
>=10'
}
define-data-property@1.1.4
:
resolution
:
{
integrity
:
sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==
}
engines
:
{
node
:
'
>=
0.4'
}
delayed-stream@1.0.0
:
resolution
:
{
integrity
:
sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==
}
engines
:
{
node
:
'
>=0.4.0'
}
...
...
@@ -1681,6 +1741,14 @@ packages:
resolution
:
{
integrity
:
sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==
}
engines
:
{
node
:
'
>=0.3.1'
}
dotenv-expand@12.0.1
:
resolution
:
{
integrity
:
sha512-LaKRbou8gt0RNID/9RoI+J2rvXsBRPMV7p+ElHlPhcSARbCPDYcYG2s1TIzAfWv4YSgyY5taidWzzs31lNV3yQ==
}
engines
:
{
node
:
'
>=12'
}
dotenv@16.4.7
:
resolution
:
{
integrity
:
sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==
}
engines
:
{
node
:
'
>=12'
}
dunder-proto@1.0.1
:
resolution
:
{
integrity
:
sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==
}
engines
:
{
node
:
'
>=
0.4'
}
...
...
@@ -1937,6 +2005,10 @@ packages:
flatted@3.3.3
:
resolution
:
{
integrity
:
sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==
}
for-each@0.3.5
:
resolution
:
{
integrity
:
sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==
}
engines
:
{
node
:
'
>=
0.4'
}
foreground-child@3.3.1
:
resolution
:
{
integrity
:
sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==
}
engines
:
{
node
:
'
>=14'
}
...
...
@@ -2021,6 +2093,10 @@ packages:
glob-to-regexp@0.4.1
:
resolution
:
{
integrity
:
sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==
}
glob@10.4.5
:
resolution
:
{
integrity
:
sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==
}
hasBin
:
true
glob@11.0.3
:
resolution
:
{
integrity
:
sha512-2Nim7dha1KVkaiF4q6Dj+ngPPMdfvLJEOpZk/jKiUAkqKebpGAWQXAq9z1xu9HKu5lWfqw/FASuccEjyznjPaA==
}
engines
:
{
node
:
20 || >=22
}
...
...
@@ -2065,6 +2141,9 @@ packages:
resolution
:
{
integrity
:
sha512-Pq0h+hvsVm6dDEa8x82GnLSYHOzNDt7f0ddFa3FqcQlgzEiptPqL+XrOJNavjOzSYiYWIrgeVYYgGlLmnxwilQ==
}
engines
:
{
node
:
'
>=8'
}
has-property-descriptors@1.0.2
:
resolution
:
{
integrity
:
sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==
}
has-symbols@1.1.0
:
resolution
:
{
integrity
:
sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==
}
engines
:
{
node
:
'
>=
0.4'
}
...
...
@@ -2140,6 +2219,10 @@ packages:
is-arrayish@0.2.1
:
resolution
:
{
integrity
:
sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==
}
is-callable@1.2.7
:
resolution
:
{
integrity
:
sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==
}
engines
:
{
node
:
'
>=
0.4'
}
is-core-module@2.16.1
:
resolution
:
{
integrity
:
sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==
}
engines
:
{
node
:
'
>=
0.4'
}
...
...
@@ -2179,10 +2262,17 @@ packages:
resolution
:
{
integrity
:
sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==
}
engines
:
{
node
:
'
>=8'
}
is-typed-array@1.1.15
:
resolution
:
{
integrity
:
sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==
}
engines
:
{
node
:
'
>=
0.4'
}
is-unicode-supported@0.1.0
:
resolution
:
{
integrity
:
sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==
}
engines
:
{
node
:
'
>=10'
}
isarray@2.0.5
:
resolution
:
{
integrity
:
sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==
}
isexe@2.0.0
:
resolution
:
{
integrity
:
sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==
}
...
...
@@ -2214,6 +2304,9 @@ packages:
resolution
:
{
integrity
:
sha512-RKYVTCjAnRthyJes037NX/IiqeidgN1xc3j1RjFfECFp28A1GVwK9nA+i0rJPaHqSZwygLzRnFlzUuHFoWWy+Q==
}
engines
:
{
node
:
'
>=6'
}
jackspeak@3.4.3
:
resolution
:
{
integrity
:
sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==
}
jackspeak@4.1.1
:
resolution
:
{
integrity
:
sha512-zptv57P3GpL+O0I7VdMJNBZCu+BPHVQUk55Ft8/QCJjTVxrnJHuVuX/0Bl2A6/+2oyR/ZMEuFKwmzqqZ/U5nPQ==
}
engines
:
{
node
:
20 || >=22
}
...
...
@@ -2451,6 +2544,9 @@ packages:
resolution
:
{
integrity
:
sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==
}
engines
:
{
node
:
^12.20.0 || ^14.13.1 || >=16.0.0
}
lru-cache@10.4.3
:
resolution
:
{
integrity
:
sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==
}
lru-cache@11.1.0
:
resolution
:
{
integrity
:
sha512-QIXZUBJUx+2zHUdQujWejBkcD9+cs94tLn0+YL8UrCh+D5sCXZ4c7LaEH48pNwRY3MLDgqUFyhlCyjJPf1WP0A==
}
engines
:
{
node
:
20 || >=22
}
...
...
@@ -2687,6 +2783,10 @@ packages:
path-parse@1.0.7
:
resolution
:
{
integrity
:
sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==
}
path-scurry@1.11.1
:
resolution
:
{
integrity
:
sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==
}
engines
:
{
node
:
'
>=16
||
14
>=14.18'
}
path-scurry@2.0.0
:
resolution
:
{
integrity
:
sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==
}
engines
:
{
node
:
20 || >=22
}
...
...
@@ -2702,6 +2802,40 @@ packages:
pend@1.2.0
:
resolution
:
{
integrity
:
sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==
}
pg-cloudflare@1.2.7
:
resolution
:
{
integrity
:
sha512-YgCtzMH0ptvZJslLM1ffsY4EuGaU0cx4XSdXLRFae8bPP4dS5xL1tNB3k2o/N64cHJpwU7dxKli/nZ2lUa5fLg==
}
pg-connection-string@2.9.1
:
resolution
:
{
integrity
:
sha512-nkc6NpDcvPVpZXxrreI/FOtX3XemeLl8E0qFr6F2Lrm/I8WOnaWNhIPK2Z7OHpw7gh5XJThi6j6ppgNoaT1w4w==
}
pg-int8@1.0.1
:
resolution
:
{
integrity
:
sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==
}
engines
:
{
node
:
'
>=4.0.0'
}
pg-pool@3.10.1
:
resolution
:
{
integrity
:
sha512-Tu8jMlcX+9d8+QVzKIvM/uJtp07PKr82IUOYEphaWcoBhIYkoHpLXN3qO59nAI11ripznDsEzEv8nUxBVWajGg==
}
peerDependencies
:
pg
:
'
>=8.0'
pg-protocol@1.10.3
:
resolution
:
{
integrity
:
sha512-6DIBgBQaTKDJyxnXaLiLR8wBpQQcGWuAESkRBX/t6OwA8YsqP+iVSiond2EDy6Y/dsGk8rh/jtax3js5NeV7JQ==
}
pg-types@2.2.0
:
resolution
:
{
integrity
:
sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==
}
engines
:
{
node
:
'
>=4'
}
pg@8.16.3
:
resolution
:
{
integrity
:
sha512-enxc1h0jA/aq5oSDMvqyW3q89ra6XIIDZgCX9vkMrnz5DFTw/Ny3Li2lFQ+pt3L6MCgm/5o2o8HW9hiJji+xvw==
}
engines
:
{
node
:
'
>=
16.0.0'
}
peerDependencies
:
pg-native
:
'
>=3.0.1'
peerDependenciesMeta
:
pg-native
:
optional
:
true
pgpass@1.0.5
:
resolution
:
{
integrity
:
sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==
}
picocolors@1.1.1
:
resolution
:
{
integrity
:
sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==
}
...
...
@@ -2728,6 +2862,26 @@ packages:
resolution
:
{
integrity
:
sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==
}
engines
:
{
node
:
'
>=4'
}
possible-typed-array-names@1.1.0
:
resolution
:
{
integrity
:
sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==
}
engines
:
{
node
:
'
>=
0.4'
}
postgres-array@2.0.0
:
resolution
:
{
integrity
:
sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==
}
engines
:
{
node
:
'
>=4'
}
postgres-bytea@1.0.0
:
resolution
:
{
integrity
:
sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==
}
engines
:
{
node
:
'
>=0.10.0'
}
postgres-date@1.0.7
:
resolution
:
{
integrity
:
sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==
}
engines
:
{
node
:
'
>=0.10.0'
}
postgres-interval@1.2.0
:
resolution
:
{
integrity
:
sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==
}
engines
:
{
node
:
'
>=0.10.0'
}
prelude-ls@1.2.1
:
resolution
:
{
integrity
:
sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==
}
engines
:
{
node
:
'
>=
0.8.0'
}
...
...
@@ -2903,9 +3057,18 @@ packages:
resolution
:
{
integrity
:
sha512-61g9pCh0Vnh7IutZjtLGGpTA355+OPn2TyDv/6ivP2h/AdAVX9azsoxmg2/M6nZeQZNYBEwIcsne1mJd9oQItQ==
}
engines
:
{
node
:
'
>=
18'
}
set-function-length@1.2.2
:
resolution
:
{
integrity
:
sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==
}
engines
:
{
node
:
'
>=
0.4'
}
setprototypeof@1.2.0
:
resolution
:
{
integrity
:
sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==
}
sha.js@2.4.12
:
resolution
:
{
integrity
:
sha512-8LzC5+bvI45BjpfXU8V5fdU2mfeKiQe1D1gIMn7XUlF3OTUrpdJpPPH4EMAnF0DsHHdSZqCdSss5qCmJKuiO3w==
}
engines
:
{
node
:
'
>=
0.10'
}
hasBin
:
true
shebang-command@2.0.0
:
resolution
:
{
integrity
:
sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==
}
engines
:
{
node
:
'
>=8'
}
...
...
@@ -2970,9 +3133,17 @@ packages:
resolution
:
{
integrity
:
sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==
}
engines
:
{
node
:
'
>=
12'
}
split2@4.2.0
:
resolution
:
{
integrity
:
sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==
}
engines
:
{
node
:
'
>=
10.x'
}
sprintf-js@1.0.3
:
resolution
:
{
integrity
:
sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==
}
sql-highlight@6.1.0
:
resolution
:
{
integrity
:
sha512-ed7OK4e9ywpE7pgRMkMQmZDPKSVdm0oX5IEtZiKnFucSF0zu6c80GZBe38UqHuVhTWJ9xsKgSMjCG2bml86KvA==
}
engines
:
{
node
:
'
>=14'
}
stack-utils@2.0.6
:
resolution
:
{
integrity
:
sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==
}
engines
:
{
node
:
'
>=10'
}
...
...
@@ -3107,6 +3278,10 @@ packages:
tmpl@1.0.5
:
resolution
:
{
integrity
:
sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==
}
to-buffer@1.2.1
:
resolution
:
{
integrity
:
sha512-tB82LpAIWjhLYbqjx3X4zEeHN6M8CiuOEy2JY8SEQVdYRe3CCHOFaqrBW1doLDrfpWhplcW7BL+bO3/6S3pcDQ==
}
engines
:
{
node
:
'
>=
0.4'
}
to-regex-range@5.0.1
:
resolution
:
{
integrity
:
sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==
}
engines
:
{
node
:
'
>=8.0'
}
...
...
@@ -3212,9 +3387,69 @@ packages:
resolution
:
{
integrity
:
sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==
}
engines
:
{
node
:
'
>=
0.6'
}
typed-array-buffer@1.0.3
:
resolution
:
{
integrity
:
sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==
}
engines
:
{
node
:
'
>=
0.4'
}
typedarray@0.0.6
:
resolution
:
{
integrity
:
sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==
}
typeorm@0.3.26
:
resolution
:
{
integrity
:
sha512-o2RrBNn3lczx1qv4j+JliVMmtkPSqEGpG0UuZkt9tCfWkoXKu8MZnjvp2GjWPll1SehwemQw6xrbVRhmOglj8Q==
}
engines
:
{
node
:
'
>=16.13.0'
}
hasBin
:
true
peerDependencies
:
'
@google-cloud/spanner'
:
^5.18.0 || ^6.0.0 || ^7.0.0
'
@sap/hana-client'
:
^2.14.22
better-sqlite3
:
^8.0.0 || ^9.0.0 || ^10.0.0 || ^11.0.0 || ^12.0.0
ioredis
:
^5.0.4
mongodb
:
^5.8.0 || ^6.0.0
mssql
:
^9.1.1 || ^10.0.1 || ^11.0.1
mysql2
:
^2.2.5 || ^3.0.1
oracledb
:
^6.3.0
pg
:
^8.5.1
pg-native
:
^3.0.0
pg-query-stream
:
^4.0.0
redis
:
^3.1.1 || ^4.0.0 || ^5.0.14
reflect-metadata
:
^0.1.14 || ^0.2.0
sql.js
:
^1.4.0
sqlite3
:
^5.0.3
ts-node
:
^10.7.0
typeorm-aurora-data-api-driver
:
^2.0.0 || ^3.0.0
peerDependenciesMeta
:
'
@google-cloud/spanner'
:
optional
:
true
'
@sap/hana-client'
:
optional
:
true
better-sqlite3
:
optional
:
true
ioredis
:
optional
:
true
mongodb
:
optional
:
true
mssql
:
optional
:
true
mysql2
:
optional
:
true
oracledb
:
optional
:
true
pg
:
optional
:
true
pg-native
:
optional
:
true
pg-query-stream
:
optional
:
true
redis
:
optional
:
true
sql.js
:
optional
:
true
sqlite3
:
optional
:
true
ts-node
:
optional
:
true
typeorm-aurora-data-api-driver
:
optional
:
true
typescript-eslint@8.39.1
:
resolution
:
{
integrity
:
sha512-GDUv6/NDYngUlNvwaHM1RamYftxf782IyEDbdj3SeaIHHv8fNQVRC++fITT7kUJV/5rIA/tkoRSSskt6osEfqg==
}
engines
:
{
node
:
^18.18.0 || ^20.9.0 || >=21.1.0
}
...
...
@@ -3271,6 +3506,10 @@ packages:
util-deprecate@1.0.2
:
resolution
:
{
integrity
:
sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==
}
uuid@11.1.0
:
resolution
:
{
integrity
:
sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==
}
hasBin
:
true
v8-compile-cache-lib@3.0.1
:
resolution
:
{
integrity
:
sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==
}
...
...
@@ -3314,6 +3553,10 @@ packages:
webpack-cli
:
optional
:
true
which-typed-array@1.1.19
:
resolution
:
{
integrity
:
sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==
}
engines
:
{
node
:
'
>=
0.4'
}
which@2.0.2
:
resolution
:
{
integrity
:
sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==
}
engines
:
{
node
:
'
>=
8'
}
...
...
@@ -4138,6 +4381,14 @@ snapshots:
transitivePeerDependencies
:
-
supports-color
'
@nestjs/config@4.0.2(@nestjs/common@11.1.6(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(rxjs@7.8.2)'
:
dependencies
:
'
@nestjs/common'
:
11.1.6(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2)
dotenv
:
16.4.7
dotenv-expand
:
12.0.1
lodash
:
4.17.21
rxjs
:
7.8.2
'
@nestjs/core@11.1.6(@nestjs/common@11.1.6(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@11.1.6)(reflect-metadata@0.2.2)(rxjs@7.8.2)'
:
dependencies
:
'
@nestjs/common'
:
11.1.6(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2)
...
...
@@ -4210,6 +4461,14 @@ snapshots:
optionalDependencies
:
'
@nestjs/platform-express'
:
11.1.6(@nestjs/common@11.1.6(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.6)
'
@nestjs/typeorm@11.0.0(@nestjs/common@11.1.6(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.6)(reflect-metadata@0.2.2)(rxjs@7.8.2)(typeorm@0.3.26(pg@8.16.3)(reflect-metadata@0.2.2)(ts-node@10.9.2(@swc/core@1.13.3)(@types/node@22.17.1)(typescript@5.9.2)))'
:
dependencies
:
'
@nestjs/common'
:
11.1.6(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2)
'
@nestjs/core'
:
11.1.6(@nestjs/common@11.1.6(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@11.1.6)(reflect-metadata@0.2.2)(rxjs@7.8.2)
reflect-metadata
:
0.2.2
rxjs
:
7.8.2
typeorm
:
0.3.26(pg@8.16.3)(reflect-metadata@0.2.2)(ts-node@10.9.2(@swc/core@1.13.3)(@types/node@22.17.1)(typescript@5.9.2))
'
@noble/hashes@1.8.0'
:
{}
'
@nodelib/fs.scandir@2.1.5'
:
...
...
@@ -4232,6 +4491,9 @@ snapshots:
dependencies
:
'
@noble/hashes'
:
1.8.0
'
@pkgjs/parseargs@0.11.0'
:
optional
:
true
'
@pkgr/core@0.2.9'
:
{}
'
@sinclair/typebox@0.27.8'
:
{}
...
...
@@ -4246,6 +4508,8 @@ snapshots:
dependencies
:
'
@sinonjs/commons'
:
3.0.1
'
@sqltools/formatter@1.2.5'
:
{}
'
@swc/cli@0.6.0(@swc/core@1.13.3)(chokidar@4.0.3)'
:
dependencies
:
'
@swc/core'
:
1.13.3
...
...
@@ -4792,6 +5056,8 @@ snapshots:
ansi-styles@6.2.1
:
{}
ansis@3.17.0
:
{}
ansis@4.1.0
:
{}
anymatch@3.1.3
:
...
...
@@ -4799,6 +5065,8 @@ snapshots:
normalize-path
:
3.0.0
picomatch
:
2.3.1
app-root-path@3.1.0
:
{}
append-field@1.0.0
:
{}
arch@3.0.0
:
{}
...
...
@@ -4817,6 +5085,10 @@ snapshots:
asynckit@0.4.0
:
{}
available-typed-arrays@1.0.7
:
dependencies
:
possible-typed-array-names
:
1.1.0
b4a@1.6.7
:
{}
babel-jest@29.7.0(@babel/core@7.28.0)
:
...
...
@@ -4949,6 +5221,11 @@ snapshots:
base64-js
:
1.5.1
ieee754
:
1.2.1
buffer@6.0.3
:
dependencies
:
base64-js
:
1.5.1
ieee754
:
1.2.1
busboy@1.6.0
:
dependencies
:
streamsearch
:
1.1.0
...
...
@@ -4972,6 +5249,13 @@ snapshots:
es-errors
:
1.3.0
function-bind
:
1.1.2
call-bind@1.0.8
:
dependencies
:
call-bind-apply-helpers
:
1.0.2
es-define-property
:
1.0.1
get-intrinsic
:
1.3.0
set-function-length
:
1.2.2
call-bound@1.0.4
:
dependencies
:
call-bind-apply-helpers
:
1.0.2
...
...
@@ -5134,6 +5418,8 @@ snapshots:
shebang-command
:
2.0.0
which
:
2.0.2
dayjs@1.11.18
:
{}
debug@4.4.1
:
dependencies
:
ms
:
2.1.3
...
...
@@ -5156,6 +5442,12 @@ snapshots:
defer-to-connect@2.0.1
:
{}
define-data-property@1.1.4
:
dependencies
:
es-define-property
:
1.0.1
es-errors
:
1.3.0
gopd
:
1.2.0
delayed-stream@1.0.0
:
{}
depd@2.0.0
:
{}
...
...
@@ -5171,6 +5463,12 @@ snapshots:
diff@4.0.2
:
{}
dotenv-expand@12.0.1
:
dependencies
:
dotenv
:
16.4.7
dotenv@16.4.7
:
{}
dunder-proto@1.0.1
:
dependencies
:
call-bind-apply-helpers
:
1.0.2
...
...
@@ -5478,6 +5776,10 @@ snapshots:
flatted@3.3.3
:
{}
for-each@0.3.5
:
dependencies
:
is-callable
:
1.2.7
foreground-child@3.3.1
:
dependencies
:
cross-spawn
:
7.0.6
...
...
@@ -5571,6 +5873,15 @@ snapshots:
glob-to-regexp@0.4.1
:
{}
glob@10.4.5
:
dependencies
:
foreground-child
:
3.3.1
jackspeak
:
3.4.3
minimatch
:
9.0.5
minipass
:
7.1.2
package-json-from-dist
:
1.0.1
path-scurry
:
1.11.1
glob@11.0.3
:
dependencies
:
foreground-child
:
3.3.1
...
...
@@ -5626,6 +5937,10 @@ snapshots:
has-own-prop@2.0.0
:
{}
has-property-descriptors@1.0.2
:
dependencies
:
es-define-property
:
1.0.1
has-symbols@1.1.0
:
{}
has-tostringtag@1.0.2
:
...
...
@@ -5692,6 +6007,8 @@ snapshots:
is-arrayish@0.2.1
:
{}
is-callable@1.2.7
:
{}
is-core-module@2.16.1
:
dependencies
:
hasown
:
2.0.2
...
...
@@ -5716,8 +6033,14 @@ snapshots:
is-stream@2.0.1
:
{}
is-typed-array@1.1.15
:
dependencies
:
which-typed-array
:
1.1.19
is-unicode-supported@0.1.0
:
{}
isarray@2.0.5
:
{}
isexe@2.0.0
:
{}
istanbul-lib-coverage@3.2.2
:
{}
...
...
@@ -5763,6 +6086,12 @@ snapshots:
iterare@1.2.1
:
{}
jackspeak@3.4.3
:
dependencies
:
'
@isaacs/cliui'
:
8.0.2
optionalDependencies
:
'
@pkgjs/parseargs'
:
0.11.0
jackspeak@4.1.1
:
dependencies
:
'
@isaacs/cliui'
:
8.0.2
...
...
@@ -6159,6 +6488,8 @@ snapshots:
lowercase-keys@3.0.0
:
{}
lru-cache@10.4.3
:
{}
lru-cache@11.1.0
:
{}
lru-cache@5.1.1
:
...
...
@@ -6360,6 +6691,11 @@ snapshots:
path-parse@1.0.7
:
{}
path-scurry@1.11.1
:
dependencies
:
lru-cache
:
10.4.3
minipass
:
7.1.2
path-scurry@2.0.0
:
dependencies
:
lru-cache
:
11.1.0
...
...
@@ -6371,6 +6707,41 @@ snapshots:
pend@1.2.0
:
{}
pg-cloudflare@1.2.7
:
optional
:
true
pg-connection-string@2.9.1
:
{}
pg-int8@1.0.1
:
{}
pg-pool@3.10.1(pg@8.16.3)
:
dependencies
:
pg
:
8.16.3
pg-protocol@1.10.3
:
{}
pg-types@2.2.0
:
dependencies
:
pg-int8
:
1.0.1
postgres-array
:
2.0.0
postgres-bytea
:
1.0.0
postgres-date
:
1.0.7
postgres-interval
:
1.2.0
pg@8.16.3
:
dependencies
:
pg-connection-string
:
2.9.1
pg-pool
:
3.10.1(pg@8.16.3)
pg-protocol
:
1.10.3
pg-types
:
2.2.0
pgpass
:
1.0.5
optionalDependencies
:
pg-cloudflare
:
1.2.7
pgpass@1.0.5
:
dependencies
:
split2
:
4.2.0
picocolors@1.1.1
:
{}
picomatch@2.3.1
:
{}
...
...
@@ -6389,6 +6760,18 @@ snapshots:
pluralize@8.0.0
:
{}
possible-typed-array-names@1.1.0
:
{}
postgres-array@2.0.0
:
{}
postgres-bytea@1.0.0
:
{}
postgres-date@1.0.7
:
{}
postgres-interval@1.2.0
:
dependencies
:
xtend
:
4.0.2
prelude-ls@1.2.1
:
{}
prettier-linter-helpers@1.0.0
:
...
...
@@ -6567,8 +6950,23 @@ snapshots:
transitivePeerDependencies
:
-
supports-color
set-function-length@1.2.2
:
dependencies
:
define-data-property
:
1.1.4
es-errors
:
1.3.0
function-bind
:
1.1.2
get-intrinsic
:
1.3.0
gopd
:
1.2.0
has-property-descriptors
:
1.0.2
setprototypeof@1.2.0
:
{}
sha.js@2.4.12
:
dependencies
:
inherits
:
2.0.4
safe-buffer
:
5.2.1
to-buffer
:
1.2.1
shebang-command@2.0.0
:
dependencies
:
shebang-regex
:
3.0.0
...
...
@@ -6635,8 +7033,12 @@ snapshots:
source-map@0.7.6
:
{}
split2@4.2.0
:
{}
sprintf-js@1.0.3
:
{}
sql-highlight@6.1.0
:
{}
stack-utils@2.0.6
:
dependencies
:
escape-string-regexp
:
2.0.0
...
...
@@ -6777,6 +7179,12 @@ snapshots:
tmpl@1.0.5
:
{}
to-buffer@1.2.1
:
dependencies
:
isarray
:
2.0.5
safe-buffer
:
5.2.1
typed-array-buffer
:
1.0.3
to-regex-range@5.0.1
:
dependencies
:
is-number
:
7.0.0
...
...
@@ -6881,8 +7289,38 @@ snapshots:
media-typer
:
1.1.0
mime-types
:
3.0.1
typed-array-buffer@1.0.3
:
dependencies
:
call-bound
:
1.0.4
es-errors
:
1.3.0
is-typed-array
:
1.1.15
typedarray@0.0.6
:
{}
typeorm@0.3.26(pg@8.16.3)(reflect-metadata@0.2.2)(ts-node@10.9.2(@swc/core@1.13.3)(@types/node@22.17.1)(typescript@5.9.2))
:
dependencies
:
'
@sqltools/formatter'
:
1.2.5
ansis
:
3.17.0
app-root-path
:
3.1.0
buffer
:
6.0.3
dayjs
:
1.11.18
debug
:
4.4.1
dedent
:
1.6.0
dotenv
:
16.4.7
glob
:
10.4.5
reflect-metadata
:
0.2.2
sha.js
:
2.4.12
sql-highlight
:
6.1.0
tslib
:
2.8.1
uuid
:
11.1.0
yargs
:
17.7.2
optionalDependencies
:
pg
:
8.16.3
ts-node
:
10.9.2(@swc/core@1.13.3)(@types/node@22.17.1)(typescript@5.9.2)
transitivePeerDependencies
:
-
babel-plugin-macros
-
supports-color
typescript-eslint@8.39.1(eslint@9.33.0)(typescript@5.9.2)
:
dependencies
:
'
@typescript-eslint/eslint-plugin'
:
8.39.1(@typescript-eslint/parser@8.39.1(eslint@9.33.0)(typescript@5.9.2))(eslint@9.33.0)(typescript@5.9.2)
...
...
@@ -6930,6 +7368,8 @@ snapshots:
util-deprecate@1.0.2
:
{}
uuid@11.1.0
:
{}
v8-compile-cache-lib@3.0.1
:
{}
v8-to-istanbul@9.3.0
:
...
...
@@ -6991,6 +7431,16 @@ snapshots:
-
esbuild
-
uglify-js
which-typed-array@1.1.19
:
dependencies
:
available-typed-arrays
:
1.0.7
call-bind
:
1.0.8
call-bound
:
1.0.4
for-each
:
0.3.5
get-proto
:
1.0.1
gopd
:
1.2.0
has-tostringtag
:
1.0.2
which@2.0.2
:
dependencies
:
isexe
:
2.0.0
...
...
server/src/app.module.ts
View file @
6edad83d
import
{
Module
}
from
'@nestjs/common'
;
import
{
ConfigModule
,
ConfigService
}
from
'@nestjs/config'
;
import
{
TypeOrmModule
}
from
'@nestjs/typeorm'
;
import
{
ProductsModule
}
from
'./products/products.module'
;
import
{
CategoriesModule
}
from
'./categories/categories.module'
;
@
Module
({
imports
:
[
ProductsModule
],
imports
:
[
ConfigModule
.
forRoot
({
isGlobal
:
true
,
envFilePath
:
'.env'
,
}),
TypeOrmModule
.
forRootAsync
({
imports
:
[
ConfigModule
],
inject
:
[
ConfigService
],
useFactory
:
(
configService
:
ConfigService
)
=>
({
type
:
'postgres'
,
host
:
configService
.
get
<
string
>
(
'DB_HOST'
),
port
:
configService
.
get
<
number
>
(
'DB_PORT'
),
username
:
configService
.
get
<
string
>
(
'DB_USER'
),
password
:
configService
.
get
<
string
>
(
'DB_PASS'
),
database
:
configService
.
get
<
string
>
(
'DB_NAME'
),
autoLoadEntities
:
true
,
synchronize
:
true
,
}),
}),
ProductsModule
,
CategoriesModule
,
],
controllers
:
[],
providers
:
[],
})
...
...
server/src/categories/categories.controller.ts
0 → 100644
View file @
6edad83d
import
{
Body
,
Controller
,
Delete
,
Get
,
Param
,
Post
,
Put
,
}
from
'@nestjs/common'
;
import
{
CategoriesService
}
from
'./categories.service'
;
import
{
CreateCategoryDto
}
from
'./dto/create-category.dto'
;
import
{
UpdateCategoryDto
}
from
'./dto/update-category.dto'
;
@
Controller
(
'categories'
)
export
class
CategoriesController
{
constructor
(
private
readonly
categoriesService
:
CategoriesService
)
{}
@
Post
()
create
(@
Body
()
createCategoryDto
:
CreateCategoryDto
)
{
return
this
.
categoriesService
.
create
(
createCategoryDto
);
}
@
Get
()
findAll
()
{
return
this
.
categoriesService
.
findAll
();
}
@
Get
(
':id'
)
findOne
(@
Param
(
'id'
)
id
:
string
)
{
return
this
.
categoriesService
.
findOne
(
+
id
);
}
@
Put
(
':id'
)
update
(
@
Param
(
'id'
)
id
:
string
,
@
Body
()
updateCategoryDto
:
UpdateCategoryDto
,
)
{
return
this
.
categoriesService
.
update
(
+
id
,
updateCategoryDto
);
}
@
Delete
(
':id'
)
remove
(@
Param
(
'id'
)
id
:
string
)
{
return
this
.
categoriesService
.
remove
(
+
id
);
}
}
server/src/categories/categories.module.ts
0 → 100644
View file @
6edad83d
import
{
Module
}
from
'@nestjs/common'
;
import
{
TypeOrmModule
}
from
'@nestjs/typeorm'
;
import
{
CategoriesController
}
from
'./categories.controller'
;
import
{
CategoriesService
}
from
'./categories.service'
;
import
{
Category
}
from
'./entities/category.entity'
;
@
Module
({
imports
:
[
TypeOrmModule
.
forFeature
([
Category
])],
controllers
:
[
CategoriesController
],
providers
:
[
CategoriesService
],
exports
:
[
CategoriesService
],
})
export
class
CategoriesModule
{}
server/src/categories/categories.service.ts
0 → 100644
View file @
6edad83d
import
{
Injectable
}
from
'@nestjs/common'
;
import
{
InjectRepository
}
from
'@nestjs/typeorm'
;
import
{
Repository
}
from
'typeorm'
;
import
{
CreateCategoryDto
}
from
'./dto/create-category.dto'
;
import
{
UpdateCategoryDto
}
from
'./dto/update-category.dto'
;
import
{
Category
}
from
'./entities/category.entity'
;
@
Injectable
()
export
class
CategoriesService
{
constructor
(
@
InjectRepository
(
Category
)
private
readonly
categoryRepo
:
Repository
<
Category
>
,
)
{}
async
create
(
createCategoryDto
:
CreateCategoryDto
):
Promise
<
Category
>
{
const
category
=
this
.
categoryRepo
.
create
(
createCategoryDto
);
return
await
this
.
categoryRepo
.
save
(
category
);
}
async
findAll
():
Promise
<
Category
[]
>
{
return
await
this
.
categoryRepo
.
find
();
}
async
findOne
(
id
:
number
):
Promise
<
Category
|
null
>
{
return
await
this
.
categoryRepo
.
findOneBy
({
id
});
}
async
update
(
id
:
number
,
updateCategoryDto
:
UpdateCategoryDto
,
):
Promise
<
Category
|
null
>
{
await
this
.
categoryRepo
.
update
(
id
,
updateCategoryDto
);
return
await
this
.
categoryRepo
.
findOneBy
({
id
});
}
async
remove
(
id
:
number
):
Promise
<
number
>
{
await
this
.
categoryRepo
.
delete
(
id
);
return
id
;
}
}
server/src/categories/dto/create-category.dto.ts
0 → 100644
View file @
6edad83d
import
{
IsOptional
,
IsString
}
from
'class-validator'
;
export
class
CreateCategoryDto
{
@
IsString
({
message
:
'Title must have be string'
})
title
:
string
;
@
IsOptional
()
@
IsString
({
message
:
'Description must have be string'
})
description
?:
string
;
}
server/src/categories/dto/update-category.dto.ts
0 → 100644
View file @
6edad83d
import
{
PartialType
}
from
'@nestjs/mapped-types'
;
import
{
CreateCategoryDto
}
from
'./create-category.dto'
;
export
class
UpdateCategoryDto
extends
PartialType
(
CreateCategoryDto
)
{}
server/src/categories/entities/category.entity.ts
0 → 100644
View file @
6edad83d
import
{
Product
}
from
'src/products/entity/product'
;
import
{
Column
,
Entity
,
OneToMany
,
PrimaryGeneratedColumn
}
from
'typeorm'
;
@
Entity
({
name
:
'categories'
})
export
class
Category
{
@
PrimaryGeneratedColumn
()
id
:
number
;
@
Column
({
type
:
'varchar'
,
length
:
150
})
title
:
string
;
@
Column
({
type
:
'text'
,
nullable
:
true
})
description
?:
string
;
@
OneToMany
(()
=>
Product
,
(
product
)
=>
product
.
category
)
products
:
Product
[];
}
server/src/products/dto/create-product.dto.ts
View file @
6edad83d
...
...
@@ -12,4 +12,8 @@ export class CreateProductDto {
@
Type
(()
=>
Number
)
@
IsNumber
()
price
:
number
;
@
Type
(()
=>
Number
)
@
IsNumber
()
categoryId
:
number
;
}
server/src/products/entity/product.ts
0 → 100644
View file @
6edad83d
import
{
Category
}
from
'src/categories/entities/category.entity'
;
import
{
Column
,
Entity
,
ManyToOne
,
PrimaryGeneratedColumn
}
from
'typeorm'
;
@
Entity
({
name
:
'products'
})
export
class
Product
{
@
PrimaryGeneratedColumn
()
id
:
number
;
@
Column
({
type
:
'varchar'
,
length
:
150
})
title
:
string
;
@
Column
({
type
:
'text'
,
nullable
:
true
})
description
?:
string
;
@
Column
({
type
:
'numeric'
})
price
:
number
;
@
Column
({
type
:
'text'
,
nullable
:
true
})
image
?:
string
;
@
ManyToOne
(()
=>
Category
,
(
category
)
=>
category
.
products
)
category
:
Category
;
}
server/src/products/products.controller.ts
View file @
6edad83d
...
...
@@ -21,7 +21,7 @@ export class ProductsController {
@
Body
()
createProductDto
:
CreateProductDto
,
@
UploadedFile
()
image
:
Express
.
Multer
.
File
,
)
{
return
this
.
productsService
.
create
(
createProductDto
,
image
.
filename
);
return
this
.
productsService
.
create
(
createProductDto
,
image
?
.
filename
);
}
@
Get
()
...
...
server/src/products/products.module.ts
View file @
6edad83d
import
{
Module
}
from
'@nestjs/common'
;
import
{
ProductsService
}
from
'./products.service'
;
import
{
TypeOrmModule
}
from
'@nestjs/typeorm'
;
import
{
CategoriesModule
}
from
'src/categories/categories.module'
;
import
{
Category
}
from
'src/categories/entities/category.entity'
;
import
{
Product
}
from
'./entity/product'
;
import
{
ProductsController
}
from
'./products.controller'
;
import
{
ProductsService
}
from
'./products.service'
;
@
Module
({
imports
:
[
TypeOrmModule
.
forFeature
([
Product
,
Category
]),
CategoriesModule
],
controllers
:
[
ProductsController
],
providers
:
[
ProductsService
],
})
...
...
server/src/products/products.service.ts
View file @
6edad83d
import
{
Injectable
}
from
'@nestjs/common'
;
import
{
randomUUID
}
from
'crypto'
;
import
*
as
fs
from
'fs'
;
import
*
as
path
from
'path'
;
import
{
IProduct
}
from
'src/interface/product'
;
import
{
Injectable
,
NotFoundException
}
from
'@nestjs/common'
;
import
{
InjectRepository
}
from
'@nestjs/typeorm'
;
import
{
Category
}
from
'src/categories/entities/category.entity'
;
import
{
Repository
}
from
'typeorm'
;
import
{
CreateProductDto
}
from
'./dto/create-product.dto'
;
import
{
Product
}
from
'./entity/product'
;
@
Injectable
()
export
class
ProductsService
{
constructor
()
{
this
.
init
();
}
constructor
(
@
InjectRepository
(
Product
)
private
readonly
productRepo
:
Repository
<
Product
>
,
@
InjectRepository
(
Category
)
private
readonly
categoryRepo
:
Repository
<
Category
>
,
)
{}
private
products
:
IProduct
[]
=
[];
private
readonly
filePath
=
path
?.
resolve
(
process
.
cwd
(),
'src/data/products.json'
,
);
async
create
(
createProductDto
:
CreateProductDto
,
fileName
?:
string
,
):
Promise
<
Product
>
{
const
category
=
await
this
.
categoryRepo
.
findOneBy
({
id
:
createProductDto
.
categoryId
,
});
private
init
():
void
{
try
{
const
fileContents
=
fs
.
readFileSync
(
this
.
filePath
);
this
.
products
=
JSON
.
parse
(
fileContents
.
toString
())
as
IProduct
[];
}
catch
{
this
.
products
=
[];
}
}
if
(
!
category
)
throw
new
NotFoundException
(
'Category not found'
);
create
(
createProductDto
:
CreateProductDto
,
fileName
:
string
)
{
const
product
=
{
const
product
=
this
.
productRepo
.
create
({
...
createProductDto
,
id
:
randomUUID
(),
image
:
fileName
,
};
this
.
products
.
push
(
product
);
this
.
save
();
}
category
,
});
findAll
():
IProduct
[]
{
return
this
.
products
;
return
await
this
.
productRepo
.
save
(
product
);
}
private
save
():
void
{
fs
.
writeFileSync
(
this
.
filePath
,
JSON
.
stringify
(
this
.
products
,
null
,
2
));
async
findAll
():
Promise
<
Product
[]
>
{
return
await
this
.
productRepo
.
find
({
relations
:
{
category
:
true
,
},
});
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment