anhledger12 commited on
Commit
59ad08d
2 Parent(s): fac3fcb 2fc4f90

Merge pull request #17 from PBL6-team-CATS/feat/backend/feeds

Browse files
backend/package-lock.json CHANGED
@@ -22,6 +22,7 @@
22
  "dotenv": "^16.4.5",
23
  "mysql2": "^3.11.3",
24
  "nest-access-control": "^3.1.0",
 
25
  "pg": "^8.13.0",
26
  "reflect-metadata": "^0.2.0",
27
  "rxjs": "^7.8.1",
@@ -906,6 +907,45 @@
906
  "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
907
  }
908
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
909
  "node_modules/@humanwhocodes/config-array": {
910
  "version": "0.13.0",
911
  "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz",
@@ -1603,6 +1643,13 @@
1603
  "semver": "bin/semver.js"
1604
  }
1605
  },
 
 
 
 
 
 
 
1606
  "node_modules/@nestjs/cli": {
1607
  "version": "10.4.5",
1608
  "resolved": "https://registry.npmjs.org/@nestjs/cli/-/cli-10.4.5.tgz",
@@ -1815,6 +1862,40 @@
1815
  "integrity": "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==",
1816
  "dev": true
1817
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1818
  "node_modules/@nestjs/testing": {
1819
  "version": "10.4.3",
1820
  "resolved": "https://registry.npmjs.org/@nestjs/testing/-/testing-10.4.3.tgz",
@@ -2597,6 +2678,13 @@
2597
  "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==",
2598
  "license": "ISC"
2599
  },
 
 
 
 
 
 
 
2600
  "node_modules/accepts": {
2601
  "version": "1.3.8",
2602
  "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
@@ -2676,7 +2764,6 @@
2676
  "version": "8.12.0",
2677
  "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz",
2678
  "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==",
2679
- "dev": true,
2680
  "dependencies": {
2681
  "fast-deep-equal": "^3.1.1",
2682
  "json-schema-traverse": "^1.0.0",
@@ -2692,7 +2779,6 @@
2692
  "version": "2.1.1",
2693
  "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz",
2694
  "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==",
2695
- "dev": true,
2696
  "dependencies": {
2697
  "ajv": "^8.0.0"
2698
  },
@@ -2849,8 +2935,7 @@
2849
  "node_modules/argparse": {
2850
  "version": "2.0.1",
2851
  "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
2852
- "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
2853
- "dev": true
2854
  },
2855
  "node_modules/array-flatten": {
2856
  "version": "1.1.1",
@@ -2881,6 +2966,27 @@
2881
  "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==",
2882
  "dev": true
2883
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2884
  "node_modules/aws-ssl-profiles": {
2885
  "version": "1.1.2",
2886
  "resolved": "https://registry.npmjs.org/aws-ssl-profiles/-/aws-ssl-profiles-1.1.2.tgz",
@@ -4543,11 +4649,24 @@
4543
  "node": ">=4"
4544
  }
4545
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4546
  "node_modules/fast-deep-equal": {
4547
  "version": "3.1.3",
4548
  "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
4549
- "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
4550
- "dev": true
4551
  },
4552
  "node_modules/fast-diff": {
4553
  "version": "1.3.0",
@@ -4577,22 +4696,117 @@
4577
  "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
4578
  "dev": true
4579
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4580
  "node_modules/fast-levenshtein": {
4581
  "version": "2.0.6",
4582
  "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
4583
  "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
4584
  "dev": true
4585
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4586
  "node_modules/fast-safe-stringify": {
4587
  "version": "2.1.1",
4588
  "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz",
4589
  "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA=="
4590
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4591
  "node_modules/fastq": {
4592
  "version": "1.17.1",
4593
  "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz",
4594
  "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==",
4595
- "dev": true,
4596
  "dependencies": {
4597
  "reusify": "^1.0.4"
4598
  }
@@ -4705,6 +4919,21 @@
4705
  "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
4706
  "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
4707
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4708
  "node_modules/find-up": {
4709
  "version": "5.0.0",
4710
  "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
@@ -6311,7 +6540,6 @@
6311
  "version": "4.1.0",
6312
  "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
6313
  "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
6314
- "dev": true,
6315
  "dependencies": {
6316
  "argparse": "^2.0.1"
6317
  },
@@ -6343,11 +6571,20 @@
6343
  "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==",
6344
  "dev": true
6345
  },
 
 
 
 
 
 
 
 
 
 
6346
  "node_modules/json-schema-traverse": {
6347
  "version": "1.0.0",
6348
  "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
6349
- "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
6350
- "dev": true
6351
  },
6352
  "node_modules/json-stable-stringify-without-jsonify": {
6353
  "version": "1.0.1",
@@ -6474,6 +6711,28 @@
6474
  "integrity": "sha512-QkJn9/D7zZ1ucvT++TQSvZuSA2xAWeUytU+DiEQwbPKLyrDpvbul2AFs1CGbRAPpSCCk47aRAb5DX5mmcayp4g==",
6475
  "license": "MIT"
6476
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6477
  "node_modules/lines-and-columns": {
6478
  "version": "1.2.4",
6479
  "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
@@ -6961,6 +7220,22 @@
6961
  }
6962
  }
6963
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6964
  "node_modules/node-abort-controller": {
6965
  "version": "3.1.1",
6966
  "resolved": "https://registry.npmjs.org/node-abort-controller/-/node-abort-controller-3.1.1.tgz",
@@ -7087,6 +7362,16 @@
7087
  "url": "https://github.com/sponsors/ljharb"
7088
  }
7089
  },
 
 
 
 
 
 
 
 
 
 
7090
  "node_modules/on-finished": {
7091
  "version": "2.4.1",
7092
  "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
@@ -7442,6 +7727,53 @@
7442
  "url": "https://github.com/sponsors/jonschlinkert"
7443
  }
7444
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7445
  "node_modules/pirates": {
7446
  "version": "4.0.6",
7447
  "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz",
@@ -7630,6 +7962,13 @@
7630
  "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
7631
  "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="
7632
  },
 
 
 
 
 
 
 
7633
  "node_modules/prompts": {
7634
  "version": "2.4.2",
7635
  "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz",
@@ -7659,7 +7998,6 @@
7659
  "version": "2.3.1",
7660
  "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
7661
  "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
7662
- "dev": true,
7663
  "engines": {
7664
  "node": ">=6"
7665
  }
@@ -7714,6 +8052,13 @@
7714
  }
7715
  ]
7716
  },
 
 
 
 
 
 
 
7717
  "node_modules/randombytes": {
7718
  "version": "2.1.0",
7719
  "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
@@ -7794,6 +8139,16 @@
7794
  "url": "https://github.com/sponsors/jonschlinkert"
7795
  }
7796
  },
 
 
 
 
 
 
 
 
 
 
7797
  "node_modules/reflect-metadata": {
7798
  "version": "0.2.2",
7799
  "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.2.2.tgz",
@@ -7820,7 +8175,6 @@
7820
  "version": "2.0.2",
7821
  "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
7822
  "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==",
7823
- "dev": true,
7824
  "engines": {
7825
  "node": ">=0.10.0"
7826
  }
@@ -7900,16 +8254,32 @@
7900
  "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
7901
  "dev": true
7902
  },
 
 
 
 
 
 
 
 
 
 
7903
  "node_modules/reusify": {
7904
  "version": "1.0.4",
7905
  "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
7906
  "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
7907
- "dev": true,
7908
  "engines": {
7909
  "iojs": ">=1.0.0",
7910
  "node": ">=0.10.0"
7911
  }
7912
  },
 
 
 
 
 
 
 
7913
  "node_modules/rimraf": {
7914
  "version": "3.0.2",
7915
  "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
@@ -8024,6 +8394,26 @@
8024
  }
8025
  ]
8026
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8027
  "node_modules/safer-buffer": {
8028
  "version": "2.1.2",
8029
  "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
@@ -8078,6 +8468,13 @@
8078
  "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
8079
  "dev": true
8080
  },
 
 
 
 
 
 
 
8081
  "node_modules/semver": {
8082
  "version": "7.6.3",
8083
  "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
@@ -8167,6 +8564,13 @@
8167
  "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==",
8168
  "license": "ISC"
8169
  },
 
 
 
 
 
 
 
8170
  "node_modules/set-function-length": {
8171
  "version": "1.2.2",
8172
  "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz",
@@ -8262,6 +8666,16 @@
8262
  "node": ">=8"
8263
  }
8264
  },
 
 
 
 
 
 
 
 
 
 
8265
  "node_modules/source-map": {
8266
  "version": "0.7.4",
8267
  "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz",
@@ -8524,6 +8938,13 @@
8524
  "url": "https://github.com/sponsors/ljharb"
8525
  }
8526
  },
 
 
 
 
 
 
 
8527
  "node_modules/symbol-observable": {
8528
  "version": "4.0.0",
8529
  "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-4.0.0.tgz",
@@ -8771,6 +9192,16 @@
8771
  "node": ">=0.8"
8772
  }
8773
  },
 
 
 
 
 
 
 
 
 
 
8774
  "node_modules/through": {
8775
  "version": "2.3.8",
8776
  "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
@@ -8816,6 +9247,16 @@
8816
  "node": ">=8.0"
8817
  }
8818
  },
 
 
 
 
 
 
 
 
 
 
8819
  "node_modules/toidentifier": {
8820
  "version": "1.0.1",
8821
  "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
@@ -9276,7 +9717,6 @@
9276
  "version": "4.4.1",
9277
  "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
9278
  "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
9279
- "dev": true,
9280
  "dependencies": {
9281
  "punycode": "^2.1.0"
9282
  }
 
22
  "dotenv": "^16.4.5",
23
  "mysql2": "^3.11.3",
24
  "nest-access-control": "^3.1.0",
25
+ "nestjs-paginate": "^9.3.0",
26
  "pg": "^8.13.0",
27
  "reflect-metadata": "^0.2.0",
28
  "rxjs": "^7.8.1",
 
907
  "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
908
  }
909
  },
910
+ "node_modules/@fastify/ajv-compiler": {
911
+ "version": "3.6.0",
912
+ "resolved": "https://registry.npmjs.org/@fastify/ajv-compiler/-/ajv-compiler-3.6.0.tgz",
913
+ "integrity": "sha512-LwdXQJjmMD+GwLOkP7TVC68qa+pSSogeWWmznRJ/coyTcfe9qA05AHFSe1eZFwK6q+xVRpChnvFUkf1iYaSZsQ==",
914
+ "license": "MIT",
915
+ "peer": true,
916
+ "dependencies": {
917
+ "ajv": "^8.11.0",
918
+ "ajv-formats": "^2.1.1",
919
+ "fast-uri": "^2.0.0"
920
+ }
921
+ },
922
+ "node_modules/@fastify/error": {
923
+ "version": "3.4.1",
924
+ "resolved": "https://registry.npmjs.org/@fastify/error/-/error-3.4.1.tgz",
925
+ "integrity": "sha512-wWSvph+29GR783IhmvdwWnN4bUxTD01Vm5Xad4i7i1VuAOItLvbPAb69sb0IQ2N57yprvhNIwAP5B6xfKTmjmQ==",
926
+ "license": "MIT",
927
+ "peer": true
928
+ },
929
+ "node_modules/@fastify/fast-json-stringify-compiler": {
930
+ "version": "4.3.0",
931
+ "resolved": "https://registry.npmjs.org/@fastify/fast-json-stringify-compiler/-/fast-json-stringify-compiler-4.3.0.tgz",
932
+ "integrity": "sha512-aZAXGYo6m22Fk1zZzEUKBvut/CIIQe/BapEORnxiD5Qr0kPHqqI69NtEMCme74h+at72sPhbkb4ZrLd1W3KRLA==",
933
+ "license": "MIT",
934
+ "peer": true,
935
+ "dependencies": {
936
+ "fast-json-stringify": "^5.7.0"
937
+ }
938
+ },
939
+ "node_modules/@fastify/merge-json-schemas": {
940
+ "version": "0.1.1",
941
+ "resolved": "https://registry.npmjs.org/@fastify/merge-json-schemas/-/merge-json-schemas-0.1.1.tgz",
942
+ "integrity": "sha512-fERDVz7topgNjtXsJTTW1JKLy0rhuLRcquYqNR9rF7OcVpCa2OVW49ZPDIhaRRCaUuvVxI+N416xUoF76HNSXA==",
943
+ "license": "MIT",
944
+ "peer": true,
945
+ "dependencies": {
946
+ "fast-deep-equal": "^3.1.3"
947
+ }
948
+ },
949
  "node_modules/@humanwhocodes/config-array": {
950
  "version": "0.13.0",
951
  "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz",
 
1643
  "semver": "bin/semver.js"
1644
  }
1645
  },
1646
+ "node_modules/@microsoft/tsdoc": {
1647
+ "version": "0.15.0",
1648
+ "resolved": "https://registry.npmjs.org/@microsoft/tsdoc/-/tsdoc-0.15.0.tgz",
1649
+ "integrity": "sha512-HZpPoABogPvjeJOdzCOSJsXeL/SMCBgBZMVC3X3d7YYp2gf31MfxhUoYUNwf1ERPJOnQc0wkFn9trqI6ZEdZuA==",
1650
+ "license": "MIT",
1651
+ "peer": true
1652
+ },
1653
  "node_modules/@nestjs/cli": {
1654
  "version": "10.4.5",
1655
  "resolved": "https://registry.npmjs.org/@nestjs/cli/-/cli-10.4.5.tgz",
 
1862
  "integrity": "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==",
1863
  "dev": true
1864
  },
1865
+ "node_modules/@nestjs/swagger": {
1866
+ "version": "7.4.2",
1867
+ "resolved": "https://registry.npmjs.org/@nestjs/swagger/-/swagger-7.4.2.tgz",
1868
+ "integrity": "sha512-Mu6TEn1M/owIvAx2B4DUQObQXqo2028R2s9rSZ/hJEgBK95+doTwS0DjmVA2wTeZTyVtXOoN7CsoM5pONBzvKQ==",
1869
+ "license": "MIT",
1870
+ "peer": true,
1871
+ "dependencies": {
1872
+ "@microsoft/tsdoc": "^0.15.0",
1873
+ "@nestjs/mapped-types": "2.0.5",
1874
+ "js-yaml": "4.1.0",
1875
+ "lodash": "4.17.21",
1876
+ "path-to-regexp": "3.3.0",
1877
+ "swagger-ui-dist": "5.17.14"
1878
+ },
1879
+ "peerDependencies": {
1880
+ "@fastify/static": "^6.0.0 || ^7.0.0",
1881
+ "@nestjs/common": "^9.0.0 || ^10.0.0",
1882
+ "@nestjs/core": "^9.0.0 || ^10.0.0",
1883
+ "class-transformer": "*",
1884
+ "class-validator": "*",
1885
+ "reflect-metadata": "^0.1.12 || ^0.2.0"
1886
+ },
1887
+ "peerDependenciesMeta": {
1888
+ "@fastify/static": {
1889
+ "optional": true
1890
+ },
1891
+ "class-transformer": {
1892
+ "optional": true
1893
+ },
1894
+ "class-validator": {
1895
+ "optional": true
1896
+ }
1897
+ }
1898
+ },
1899
  "node_modules/@nestjs/testing": {
1900
  "version": "10.4.3",
1901
  "resolved": "https://registry.npmjs.org/@nestjs/testing/-/testing-10.4.3.tgz",
 
2678
  "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==",
2679
  "license": "ISC"
2680
  },
2681
+ "node_modules/abstract-logging": {
2682
+ "version": "2.0.1",
2683
+ "resolved": "https://registry.npmjs.org/abstract-logging/-/abstract-logging-2.0.1.tgz",
2684
+ "integrity": "sha512-2BjRTZxTPvheOvGbBslFSYOUkr+SjPtOnrLP33f+VIWLzezQpZcqVg7ja3L4dBXmzzgwT+a029jRx5PCi3JuiA==",
2685
+ "license": "MIT",
2686
+ "peer": true
2687
+ },
2688
  "node_modules/accepts": {
2689
  "version": "1.3.8",
2690
  "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
 
2764
  "version": "8.12.0",
2765
  "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz",
2766
  "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==",
 
2767
  "dependencies": {
2768
  "fast-deep-equal": "^3.1.1",
2769
  "json-schema-traverse": "^1.0.0",
 
2779
  "version": "2.1.1",
2780
  "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz",
2781
  "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==",
 
2782
  "dependencies": {
2783
  "ajv": "^8.0.0"
2784
  },
 
2935
  "node_modules/argparse": {
2936
  "version": "2.0.1",
2937
  "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
2938
+ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="
 
2939
  },
2940
  "node_modules/array-flatten": {
2941
  "version": "1.1.1",
 
2966
  "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==",
2967
  "dev": true
2968
  },
2969
+ "node_modules/atomic-sleep": {
2970
+ "version": "1.0.0",
2971
+ "resolved": "https://registry.npmjs.org/atomic-sleep/-/atomic-sleep-1.0.0.tgz",
2972
+ "integrity": "sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==",
2973
+ "license": "MIT",
2974
+ "peer": true,
2975
+ "engines": {
2976
+ "node": ">=8.0.0"
2977
+ }
2978
+ },
2979
+ "node_modules/avvio": {
2980
+ "version": "8.4.0",
2981
+ "resolved": "https://registry.npmjs.org/avvio/-/avvio-8.4.0.tgz",
2982
+ "integrity": "sha512-CDSwaxINFy59iNwhYnkvALBwZiTydGkOecZyPkqBpABYR1KqGEsET0VOOYDwtleZSUIdeY36DC2bSZ24CO1igA==",
2983
+ "license": "MIT",
2984
+ "peer": true,
2985
+ "dependencies": {
2986
+ "@fastify/error": "^3.3.0",
2987
+ "fastq": "^1.17.1"
2988
+ }
2989
+ },
2990
  "node_modules/aws-ssl-profiles": {
2991
  "version": "1.1.2",
2992
  "resolved": "https://registry.npmjs.org/aws-ssl-profiles/-/aws-ssl-profiles-1.1.2.tgz",
 
4649
  "node": ">=4"
4650
  }
4651
  },
4652
+ "node_modules/fast-content-type-parse": {
4653
+ "version": "1.1.0",
4654
+ "resolved": "https://registry.npmjs.org/fast-content-type-parse/-/fast-content-type-parse-1.1.0.tgz",
4655
+ "integrity": "sha512-fBHHqSTFLVnR61C+gltJuE5GkVQMV0S2nqUO8TJ+5Z3qAKG8vAx4FKai1s5jq/inV1+sREynIWSuQ6HgoSXpDQ==",
4656
+ "license": "MIT",
4657
+ "peer": true
4658
+ },
4659
+ "node_modules/fast-decode-uri-component": {
4660
+ "version": "1.0.1",
4661
+ "resolved": "https://registry.npmjs.org/fast-decode-uri-component/-/fast-decode-uri-component-1.0.1.tgz",
4662
+ "integrity": "sha512-WKgKWg5eUxvRZGwW8FvfbaH7AXSh2cL+3j5fMGzUMCxWBJ3dV3a7Wz8y2f/uQ0e3B6WmodD3oS54jTQ9HVTIIg==",
4663
+ "license": "MIT",
4664
+ "peer": true
4665
+ },
4666
  "node_modules/fast-deep-equal": {
4667
  "version": "3.1.3",
4668
  "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
4669
+ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
 
4670
  },
4671
  "node_modules/fast-diff": {
4672
  "version": "1.3.0",
 
4696
  "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
4697
  "dev": true
4698
  },
4699
+ "node_modules/fast-json-stringify": {
4700
+ "version": "5.16.1",
4701
+ "resolved": "https://registry.npmjs.org/fast-json-stringify/-/fast-json-stringify-5.16.1.tgz",
4702
+ "integrity": "sha512-KAdnLvy1yu/XrRtP+LJnxbBGrhN+xXu+gt3EUvZhYGKCr3lFHq/7UFJHHFgmJKoqlh6B40bZLEv7w46B0mqn1g==",
4703
+ "license": "MIT",
4704
+ "peer": true,
4705
+ "dependencies": {
4706
+ "@fastify/merge-json-schemas": "^0.1.0",
4707
+ "ajv": "^8.10.0",
4708
+ "ajv-formats": "^3.0.1",
4709
+ "fast-deep-equal": "^3.1.3",
4710
+ "fast-uri": "^2.1.0",
4711
+ "json-schema-ref-resolver": "^1.0.1",
4712
+ "rfdc": "^1.2.0"
4713
+ }
4714
+ },
4715
+ "node_modules/fast-json-stringify/node_modules/ajv-formats": {
4716
+ "version": "3.0.1",
4717
+ "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-3.0.1.tgz",
4718
+ "integrity": "sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==",
4719
+ "license": "MIT",
4720
+ "peer": true,
4721
+ "dependencies": {
4722
+ "ajv": "^8.0.0"
4723
+ },
4724
+ "peerDependencies": {
4725
+ "ajv": "^8.0.0"
4726
+ },
4727
+ "peerDependenciesMeta": {
4728
+ "ajv": {
4729
+ "optional": true
4730
+ }
4731
+ }
4732
+ },
4733
  "node_modules/fast-levenshtein": {
4734
  "version": "2.0.6",
4735
  "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
4736
  "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
4737
  "dev": true
4738
  },
4739
+ "node_modules/fast-querystring": {
4740
+ "version": "1.1.2",
4741
+ "resolved": "https://registry.npmjs.org/fast-querystring/-/fast-querystring-1.1.2.tgz",
4742
+ "integrity": "sha512-g6KuKWmFXc0fID8WWH0jit4g0AGBoJhCkJMb1RmbsSEUNvQ+ZC8D6CUZ+GtF8nMzSPXnhiePyyqqipzNNEnHjg==",
4743
+ "license": "MIT",
4744
+ "peer": true,
4745
+ "dependencies": {
4746
+ "fast-decode-uri-component": "^1.0.1"
4747
+ }
4748
+ },
4749
+ "node_modules/fast-redact": {
4750
+ "version": "3.5.0",
4751
+ "resolved": "https://registry.npmjs.org/fast-redact/-/fast-redact-3.5.0.tgz",
4752
+ "integrity": "sha512-dwsoQlS7h9hMeYUq1W++23NDcBLV4KqONnITDV9DjfS3q1SgDGVrBdvvTLUotWtPSD7asWDV9/CmsZPy8Hf70A==",
4753
+ "license": "MIT",
4754
+ "peer": true,
4755
+ "engines": {
4756
+ "node": ">=6"
4757
+ }
4758
+ },
4759
  "node_modules/fast-safe-stringify": {
4760
  "version": "2.1.1",
4761
  "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz",
4762
  "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA=="
4763
  },
4764
+ "node_modules/fast-uri": {
4765
+ "version": "2.4.0",
4766
+ "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-2.4.0.tgz",
4767
+ "integrity": "sha512-ypuAmmMKInk5q7XcepxlnUWDLWv4GFtaJqAzWKqn62IpQ3pejtr5dTVbt3vwqVaMKmkNR55sTT+CqUKIaT21BA==",
4768
+ "license": "MIT",
4769
+ "peer": true
4770
+ },
4771
+ "node_modules/fastify": {
4772
+ "version": "4.28.1",
4773
+ "resolved": "https://registry.npmjs.org/fastify/-/fastify-4.28.1.tgz",
4774
+ "integrity": "sha512-kFWUtpNr4i7t5vY2EJPCN2KgMVpuqfU4NjnJNCgiNB900oiDeYqaNDRcAfeBbOF5hGixixxcKnOU4KN9z6QncQ==",
4775
+ "funding": [
4776
+ {
4777
+ "type": "github",
4778
+ "url": "https://github.com/sponsors/fastify"
4779
+ },
4780
+ {
4781
+ "type": "opencollective",
4782
+ "url": "https://opencollective.com/fastify"
4783
+ }
4784
+ ],
4785
+ "license": "MIT",
4786
+ "peer": true,
4787
+ "dependencies": {
4788
+ "@fastify/ajv-compiler": "^3.5.0",
4789
+ "@fastify/error": "^3.4.0",
4790
+ "@fastify/fast-json-stringify-compiler": "^4.3.0",
4791
+ "abstract-logging": "^2.0.1",
4792
+ "avvio": "^8.3.0",
4793
+ "fast-content-type-parse": "^1.1.0",
4794
+ "fast-json-stringify": "^5.8.0",
4795
+ "find-my-way": "^8.0.0",
4796
+ "light-my-request": "^5.11.0",
4797
+ "pino": "^9.0.0",
4798
+ "process-warning": "^3.0.0",
4799
+ "proxy-addr": "^2.0.7",
4800
+ "rfdc": "^1.3.0",
4801
+ "secure-json-parse": "^2.7.0",
4802
+ "semver": "^7.5.4",
4803
+ "toad-cache": "^3.3.0"
4804
+ }
4805
+ },
4806
  "node_modules/fastq": {
4807
  "version": "1.17.1",
4808
  "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz",
4809
  "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==",
 
4810
  "dependencies": {
4811
  "reusify": "^1.0.4"
4812
  }
 
4919
  "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
4920
  "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
4921
  },
4922
+ "node_modules/find-my-way": {
4923
+ "version": "8.2.2",
4924
+ "resolved": "https://registry.npmjs.org/find-my-way/-/find-my-way-8.2.2.tgz",
4925
+ "integrity": "sha512-Dobi7gcTEq8yszimcfp/R7+owiT4WncAJ7VTTgFH1jYJ5GaG1FbhjwDG820hptN0QDFvzVY3RfCzdInvGPGzjA==",
4926
+ "license": "MIT",
4927
+ "peer": true,
4928
+ "dependencies": {
4929
+ "fast-deep-equal": "^3.1.3",
4930
+ "fast-querystring": "^1.0.0",
4931
+ "safe-regex2": "^3.1.0"
4932
+ },
4933
+ "engines": {
4934
+ "node": ">=14"
4935
+ }
4936
+ },
4937
  "node_modules/find-up": {
4938
  "version": "5.0.0",
4939
  "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
 
6540
  "version": "4.1.0",
6541
  "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
6542
  "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
 
6543
  "dependencies": {
6544
  "argparse": "^2.0.1"
6545
  },
 
6571
  "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==",
6572
  "dev": true
6573
  },
6574
+ "node_modules/json-schema-ref-resolver": {
6575
+ "version": "1.0.1",
6576
+ "resolved": "https://registry.npmjs.org/json-schema-ref-resolver/-/json-schema-ref-resolver-1.0.1.tgz",
6577
+ "integrity": "sha512-EJAj1pgHc1hxF6vo2Z3s69fMjO1INq6eGHXZ8Z6wCQeldCuwxGK9Sxf4/cScGn3FZubCVUehfWtcDM/PLteCQw==",
6578
+ "license": "MIT",
6579
+ "peer": true,
6580
+ "dependencies": {
6581
+ "fast-deep-equal": "^3.1.3"
6582
+ }
6583
+ },
6584
  "node_modules/json-schema-traverse": {
6585
  "version": "1.0.0",
6586
  "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
6587
+ "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="
 
6588
  },
6589
  "node_modules/json-stable-stringify-without-jsonify": {
6590
  "version": "1.0.1",
 
6711
  "integrity": "sha512-QkJn9/D7zZ1ucvT++TQSvZuSA2xAWeUytU+DiEQwbPKLyrDpvbul2AFs1CGbRAPpSCCk47aRAb5DX5mmcayp4g==",
6712
  "license": "MIT"
6713
  },
6714
+ "node_modules/light-my-request": {
6715
+ "version": "5.14.0",
6716
+ "resolved": "https://registry.npmjs.org/light-my-request/-/light-my-request-5.14.0.tgz",
6717
+ "integrity": "sha512-aORPWntbpH5esaYpGOOmri0OHDOe3wC5M2MQxZ9dvMLZm6DnaAn0kJlcbU9hwsQgLzmZyReKwFwwPkR+nHu5kA==",
6718
+ "license": "BSD-3-Clause",
6719
+ "peer": true,
6720
+ "dependencies": {
6721
+ "cookie": "^0.7.0",
6722
+ "process-warning": "^3.0.0",
6723
+ "set-cookie-parser": "^2.4.1"
6724
+ }
6725
+ },
6726
+ "node_modules/light-my-request/node_modules/cookie": {
6727
+ "version": "0.7.2",
6728
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz",
6729
+ "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==",
6730
+ "license": "MIT",
6731
+ "peer": true,
6732
+ "engines": {
6733
+ "node": ">= 0.6"
6734
+ }
6735
+ },
6736
  "node_modules/lines-and-columns": {
6737
  "version": "1.2.4",
6738
  "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
 
7220
  }
7221
  }
7222
  },
7223
+ "node_modules/nestjs-paginate": {
7224
+ "version": "9.3.0",
7225
+ "resolved": "https://registry.npmjs.org/nestjs-paginate/-/nestjs-paginate-9.3.0.tgz",
7226
+ "integrity": "sha512-wqg7qzH0Li19oS0X9eN5n1r37adlZiUwcZM9QJ8iIdMyDAG/faD8U5uUgqOd+hGhBbIOgat5yRGNxfW4UlXhSw==",
7227
+ "license": "MIT",
7228
+ "dependencies": {
7229
+ "lodash": "^4.17.21"
7230
+ },
7231
+ "peerDependencies": {
7232
+ "@nestjs/common": "^10.0.0",
7233
+ "@nestjs/swagger": "^7.0.0",
7234
+ "express": "^4.0.0",
7235
+ "fastify": "^4.0.0",
7236
+ "typeorm": "^0.3.17"
7237
+ }
7238
+ },
7239
  "node_modules/node-abort-controller": {
7240
  "version": "3.1.1",
7241
  "resolved": "https://registry.npmjs.org/node-abort-controller/-/node-abort-controller-3.1.1.tgz",
 
7362
  "url": "https://github.com/sponsors/ljharb"
7363
  }
7364
  },
7365
+ "node_modules/on-exit-leak-free": {
7366
+ "version": "2.1.2",
7367
+ "resolved": "https://registry.npmjs.org/on-exit-leak-free/-/on-exit-leak-free-2.1.2.tgz",
7368
+ "integrity": "sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==",
7369
+ "license": "MIT",
7370
+ "peer": true,
7371
+ "engines": {
7372
+ "node": ">=14.0.0"
7373
+ }
7374
+ },
7375
  "node_modules/on-finished": {
7376
  "version": "2.4.1",
7377
  "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
 
7727
  "url": "https://github.com/sponsors/jonschlinkert"
7728
  }
7729
  },
7730
+ "node_modules/pino": {
7731
+ "version": "9.5.0",
7732
+ "resolved": "https://registry.npmjs.org/pino/-/pino-9.5.0.tgz",
7733
+ "integrity": "sha512-xSEmD4pLnV54t0NOUN16yCl7RIB1c5UUOse5HSyEXtBp+FgFQyPeDutc+Q2ZO7/22vImV7VfEjH/1zV2QuqvYw==",
7734
+ "license": "MIT",
7735
+ "peer": true,
7736
+ "dependencies": {
7737
+ "atomic-sleep": "^1.0.0",
7738
+ "fast-redact": "^3.1.1",
7739
+ "on-exit-leak-free": "^2.1.0",
7740
+ "pino-abstract-transport": "^2.0.0",
7741
+ "pino-std-serializers": "^7.0.0",
7742
+ "process-warning": "^4.0.0",
7743
+ "quick-format-unescaped": "^4.0.3",
7744
+ "real-require": "^0.2.0",
7745
+ "safe-stable-stringify": "^2.3.1",
7746
+ "sonic-boom": "^4.0.1",
7747
+ "thread-stream": "^3.0.0"
7748
+ },
7749
+ "bin": {
7750
+ "pino": "bin.js"
7751
+ }
7752
+ },
7753
+ "node_modules/pino-abstract-transport": {
7754
+ "version": "2.0.0",
7755
+ "resolved": "https://registry.npmjs.org/pino-abstract-transport/-/pino-abstract-transport-2.0.0.tgz",
7756
+ "integrity": "sha512-F63x5tizV6WCh4R6RHyi2Ml+M70DNRXt/+HANowMflpgGFMAym/VKm6G7ZOQRjqN7XbGxK1Lg9t6ZrtzOaivMw==",
7757
+ "license": "MIT",
7758
+ "peer": true,
7759
+ "dependencies": {
7760
+ "split2": "^4.0.0"
7761
+ }
7762
+ },
7763
+ "node_modules/pino-std-serializers": {
7764
+ "version": "7.0.0",
7765
+ "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-7.0.0.tgz",
7766
+ "integrity": "sha512-e906FRY0+tV27iq4juKzSYPbUj2do2X2JX4EzSca1631EB2QJQUqGbDuERal7LCtOpxl6x3+nvo9NPZcmjkiFA==",
7767
+ "license": "MIT",
7768
+ "peer": true
7769
+ },
7770
+ "node_modules/pino/node_modules/process-warning": {
7771
+ "version": "4.0.0",
7772
+ "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-4.0.0.tgz",
7773
+ "integrity": "sha512-/MyYDxttz7DfGMMHiysAsFE4qF+pQYAA8ziO/3NcRVrQ5fSk+Mns4QZA/oRPFzvcqNoVJXQNWNAsdwBXLUkQKw==",
7774
+ "license": "MIT",
7775
+ "peer": true
7776
+ },
7777
  "node_modules/pirates": {
7778
  "version": "4.0.6",
7779
  "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz",
 
7962
  "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
7963
  "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="
7964
  },
7965
+ "node_modules/process-warning": {
7966
+ "version": "3.0.0",
7967
+ "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-3.0.0.tgz",
7968
+ "integrity": "sha512-mqn0kFRl0EoqhnL0GQ0veqFHyIN1yig9RHh/InzORTUiZHFRAur+aMtRkELNwGs9aNwKS6tg/An4NYBPGwvtzQ==",
7969
+ "license": "MIT",
7970
+ "peer": true
7971
+ },
7972
  "node_modules/prompts": {
7973
  "version": "2.4.2",
7974
  "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz",
 
7998
  "version": "2.3.1",
7999
  "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
8000
  "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
 
8001
  "engines": {
8002
  "node": ">=6"
8003
  }
 
8052
  }
8053
  ]
8054
  },
8055
+ "node_modules/quick-format-unescaped": {
8056
+ "version": "4.0.4",
8057
+ "resolved": "https://registry.npmjs.org/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz",
8058
+ "integrity": "sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==",
8059
+ "license": "MIT",
8060
+ "peer": true
8061
+ },
8062
  "node_modules/randombytes": {
8063
  "version": "2.1.0",
8064
  "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
 
8139
  "url": "https://github.com/sponsors/jonschlinkert"
8140
  }
8141
  },
8142
+ "node_modules/real-require": {
8143
+ "version": "0.2.0",
8144
+ "resolved": "https://registry.npmjs.org/real-require/-/real-require-0.2.0.tgz",
8145
+ "integrity": "sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==",
8146
+ "license": "MIT",
8147
+ "peer": true,
8148
+ "engines": {
8149
+ "node": ">= 12.13.0"
8150
+ }
8151
+ },
8152
  "node_modules/reflect-metadata": {
8153
  "version": "0.2.2",
8154
  "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.2.2.tgz",
 
8175
  "version": "2.0.2",
8176
  "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
8177
  "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==",
 
8178
  "engines": {
8179
  "node": ">=0.10.0"
8180
  }
 
8254
  "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
8255
  "dev": true
8256
  },
8257
+ "node_modules/ret": {
8258
+ "version": "0.4.3",
8259
+ "resolved": "https://registry.npmjs.org/ret/-/ret-0.4.3.tgz",
8260
+ "integrity": "sha512-0f4Memo5QP7WQyUEAYUO3esD/XjOc3Zjjg5CPsAq1p8sIu0XPeMbHJemKA0BO7tV0X7+A0FoEpbmHXWxPyD3wQ==",
8261
+ "license": "MIT",
8262
+ "peer": true,
8263
+ "engines": {
8264
+ "node": ">=10"
8265
+ }
8266
+ },
8267
  "node_modules/reusify": {
8268
  "version": "1.0.4",
8269
  "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
8270
  "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
 
8271
  "engines": {
8272
  "iojs": ">=1.0.0",
8273
  "node": ">=0.10.0"
8274
  }
8275
  },
8276
+ "node_modules/rfdc": {
8277
+ "version": "1.4.1",
8278
+ "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz",
8279
+ "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==",
8280
+ "license": "MIT",
8281
+ "peer": true
8282
+ },
8283
  "node_modules/rimraf": {
8284
  "version": "3.0.2",
8285
  "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
 
8394
  }
8395
  ]
8396
  },
8397
+ "node_modules/safe-regex2": {
8398
+ "version": "3.1.0",
8399
+ "resolved": "https://registry.npmjs.org/safe-regex2/-/safe-regex2-3.1.0.tgz",
8400
+ "integrity": "sha512-RAAZAGbap2kBfbVhvmnTFv73NWLMvDGOITFYTZBAaY8eR+Ir4ef7Up/e7amo+y1+AH+3PtLkrt9mvcTsG9LXug==",
8401
+ "license": "MIT",
8402
+ "peer": true,
8403
+ "dependencies": {
8404
+ "ret": "~0.4.0"
8405
+ }
8406
+ },
8407
+ "node_modules/safe-stable-stringify": {
8408
+ "version": "2.5.0",
8409
+ "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.5.0.tgz",
8410
+ "integrity": "sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==",
8411
+ "license": "MIT",
8412
+ "peer": true,
8413
+ "engines": {
8414
+ "node": ">=10"
8415
+ }
8416
+ },
8417
  "node_modules/safer-buffer": {
8418
  "version": "2.1.2",
8419
  "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
 
8468
  "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
8469
  "dev": true
8470
  },
8471
+ "node_modules/secure-json-parse": {
8472
+ "version": "2.7.0",
8473
+ "resolved": "https://registry.npmjs.org/secure-json-parse/-/secure-json-parse-2.7.0.tgz",
8474
+ "integrity": "sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==",
8475
+ "license": "BSD-3-Clause",
8476
+ "peer": true
8477
+ },
8478
  "node_modules/semver": {
8479
  "version": "7.6.3",
8480
  "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
 
8564
  "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==",
8565
  "license": "ISC"
8566
  },
8567
+ "node_modules/set-cookie-parser": {
8568
+ "version": "2.7.1",
8569
+ "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.1.tgz",
8570
+ "integrity": "sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ==",
8571
+ "license": "MIT",
8572
+ "peer": true
8573
+ },
8574
  "node_modules/set-function-length": {
8575
  "version": "1.2.2",
8576
  "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz",
 
8666
  "node": ">=8"
8667
  }
8668
  },
8669
+ "node_modules/sonic-boom": {
8670
+ "version": "4.2.0",
8671
+ "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-4.2.0.tgz",
8672
+ "integrity": "sha512-INb7TM37/mAcsGmc9hyyI6+QR3rR1zVRu36B0NeGXKnOOLiZOfER5SA+N7X7k3yUYRzLWafduTDvJAfDswwEww==",
8673
+ "license": "MIT",
8674
+ "peer": true,
8675
+ "dependencies": {
8676
+ "atomic-sleep": "^1.0.0"
8677
+ }
8678
+ },
8679
  "node_modules/source-map": {
8680
  "version": "0.7.4",
8681
  "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz",
 
8938
  "url": "https://github.com/sponsors/ljharb"
8939
  }
8940
  },
8941
+ "node_modules/swagger-ui-dist": {
8942
+ "version": "5.17.14",
8943
+ "resolved": "https://registry.npmjs.org/swagger-ui-dist/-/swagger-ui-dist-5.17.14.tgz",
8944
+ "integrity": "sha512-CVbSfaLpstV65OnSjbXfVd6Sta3q3F7Cj/yYuvHMp1P90LztOLs6PfUnKEVAeiIVQt9u2SaPwv0LiH/OyMjHRw==",
8945
+ "license": "Apache-2.0",
8946
+ "peer": true
8947
+ },
8948
  "node_modules/symbol-observable": {
8949
  "version": "4.0.0",
8950
  "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-4.0.0.tgz",
 
9192
  "node": ">=0.8"
9193
  }
9194
  },
9195
+ "node_modules/thread-stream": {
9196
+ "version": "3.1.0",
9197
+ "resolved": "https://registry.npmjs.org/thread-stream/-/thread-stream-3.1.0.tgz",
9198
+ "integrity": "sha512-OqyPZ9u96VohAyMfJykzmivOrY2wfMSf3C5TtFJVgN+Hm6aj+voFhlK+kZEIv2FBh1X6Xp3DlnCOfEQ3B2J86A==",
9199
+ "license": "MIT",
9200
+ "peer": true,
9201
+ "dependencies": {
9202
+ "real-require": "^0.2.0"
9203
+ }
9204
+ },
9205
  "node_modules/through": {
9206
  "version": "2.3.8",
9207
  "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
 
9247
  "node": ">=8.0"
9248
  }
9249
  },
9250
+ "node_modules/toad-cache": {
9251
+ "version": "3.7.0",
9252
+ "resolved": "https://registry.npmjs.org/toad-cache/-/toad-cache-3.7.0.tgz",
9253
+ "integrity": "sha512-/m8M+2BJUpoJdgAHoG+baCwBT+tf2VraSfkBgl0Y00qIWt41DJ8R5B8nsEw0I58YwF5IZH6z24/2TobDKnqSWw==",
9254
+ "license": "MIT",
9255
+ "peer": true,
9256
+ "engines": {
9257
+ "node": ">=12"
9258
+ }
9259
+ },
9260
  "node_modules/toidentifier": {
9261
  "version": "1.0.1",
9262
  "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
 
9717
  "version": "4.4.1",
9718
  "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
9719
  "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
 
9720
  "dependencies": {
9721
  "punycode": "^2.1.0"
9722
  }
backend/package.json CHANGED
@@ -38,6 +38,7 @@
38
  "dotenv": "^16.4.5",
39
  "mysql2": "^3.11.3",
40
  "nest-access-control": "^3.1.0",
 
41
  "pg": "^8.13.0",
42
  "reflect-metadata": "^0.2.0",
43
  "rxjs": "^7.8.1",
 
38
  "dotenv": "^16.4.5",
39
  "mysql2": "^3.11.3",
40
  "nest-access-control": "^3.1.0",
41
+ "nestjs-paginate": "^9.3.0",
42
  "pg": "^8.13.0",
43
  "reflect-metadata": "^0.2.0",
44
  "rxjs": "^7.8.1",
backend/src/app.module.ts CHANGED
@@ -11,6 +11,7 @@ import { UserModule } from './modules/user/user.module.js';
11
  import { BranchModule } from './modules/branch/branch.module.js';
12
  import { AuthenticationModule } from './modules/authentication/authentication.module.js';
13
  import { MenuItemModule } from './modules/menu-item/menu-item.module.js';
 
14
  @Module({
15
  imports: [
16
  ConfigModule.forRoot({
@@ -25,6 +26,7 @@ import { MenuItemModule } from './modules/menu-item/menu-item.module.js';
25
  BranchModule,
26
  AuthenticationModule,
27
  MenuItemModule,
 
28
  ],
29
  controllers: [AppController],
30
  providers: [AppService],
 
11
  import { BranchModule } from './modules/branch/branch.module.js';
12
  import { AuthenticationModule } from './modules/authentication/authentication.module.js';
13
  import { MenuItemModule } from './modules/menu-item/menu-item.module.js';
14
+ import { FeedsModule } from './modules/feeds/feeds.module.js';
15
  @Module({
16
  imports: [
17
  ConfigModule.forRoot({
 
26
  BranchModule,
27
  AuthenticationModule,
28
  MenuItemModule,
29
+ FeedsModule,
30
  ],
31
  controllers: [AppController],
32
  providers: [AppService],
backend/src/entities/feed.entity.ts ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import { Entity, Column, BaseEntity, PrimaryGeneratedColumn } from 'typeorm';
2
+
3
+ @Entity('feeds')
4
+ export class FeedEntity extends BaseEntity {
5
+ @PrimaryGeneratedColumn()
6
+ id: number;
7
+
8
+ @Column({ nullable: true })
9
+ author_id: string;
10
+
11
+ @Column({ nullable: true })
12
+ image_url: string;
13
+
14
+ @Column()
15
+ title: string;
16
+
17
+ @Column({ nullable: true })
18
+ description: string;
19
+
20
+ @Column({ type: 'timestamp', default: () => 'CURRENT_TIMESTAMP' })
21
+ create_at: Date;
22
+ }
backend/src/migrations/1729780814885-AddFeeds.ts ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import { MigrationInterface, QueryRunner } from "typeorm";
2
+
3
+ export class AddFeeds1729780814885 implements MigrationInterface {
4
+ name = 'AddFeeds1729780814885'
5
+
6
+ public async up(queryRunner: QueryRunner): Promise<void> {
7
+ await queryRunner.query(`CREATE TABLE "feeds" ("id" SERIAL NOT NULL, "author_id" character varying, "image_url" character varying, "title" character varying NOT NULL, "description" character varying, "create_at" TIMESTAMP NOT NULL DEFAULT now(), CONSTRAINT "PK_3dafbf766ecbb1eb2017732153f" PRIMARY KEY ("id"))`);
8
+ }
9
+
10
+ public async down(queryRunner: QueryRunner): Promise<void> {
11
+ await queryRunner.query(`DROP TABLE "feeds"`);
12
+ }
13
+
14
+ }
backend/src/modules/feeds/dto/create-feed.dto.ts ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import { IsString, IsUrl } from 'class-validator';
2
+
3
+ export class CreateFeedDto {
4
+ @IsUrl()
5
+ image_url: string;
6
+
7
+ @IsString()
8
+ title: string;
9
+
10
+ @IsString()
11
+ description: string;
12
+ }
backend/src/modules/feeds/dto/update-feed.dto.ts ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import { IsOptional, IsString, IsUrl } from 'class-validator';
2
+
3
+ export class UpdateFeedDto {
4
+ @IsUrl()
5
+ @IsOptional()
6
+ image_url?: string;
7
+
8
+ @IsString()
9
+ @IsOptional()
10
+ title?: string;
11
+
12
+ @IsString()
13
+ @IsOptional()
14
+ description?: string;
15
+ }
backend/src/modules/feeds/feeds.controller.ts ADDED
@@ -0,0 +1,45 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import {
2
+ Controller,
3
+ Get,
4
+ Post,
5
+ Body,
6
+ Patch,
7
+ Param,
8
+ Delete,
9
+ } from '@nestjs/common';
10
+ import { FeedsService } from './feeds.service.js';
11
+ import { CreateFeedDto } from './dto/create-feed.dto.js';
12
+ import { UpdateFeedDto } from './dto/update-feed.dto.js';
13
+ import { Public } from '../authentication/authentication.decorator.js';
14
+ import { Paginate, PaginateQuery } from 'nestjs-paginate';
15
+
16
+ @Public()
17
+ @Controller('feeds')
18
+ export class FeedsController {
19
+ constructor(private readonly feedsService: FeedsService) {}
20
+
21
+ @Post()
22
+ create(@Body() createFeedDto: CreateFeedDto) {
23
+ return this.feedsService.create(createFeedDto);
24
+ }
25
+
26
+ @Get()
27
+ findAll(@Paginate() paginateQuery: PaginateQuery) {
28
+ return this.feedsService.findAll(paginateQuery);
29
+ }
30
+
31
+ @Get(':id')
32
+ findOne(@Param('id') id: string) {
33
+ return this.feedsService.findOne(+id);
34
+ }
35
+
36
+ @Patch(':id')
37
+ update(@Param('id') id: string, @Body() updateFeedDto: UpdateFeedDto) {
38
+ return this.feedsService.update(+id, updateFeedDto);
39
+ }
40
+
41
+ @Delete(':id')
42
+ remove(@Param('id') id: string) {
43
+ return this.feedsService.remove(+id);
44
+ }
45
+ }
backend/src/modules/feeds/feeds.module.ts ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
 
1
+ import { Module } from '@nestjs/common';
2
+ import { FeedsService } from './feeds.service.js';
3
+ import { FeedsController } from './feeds.controller.js';
4
+
5
+ @Module({
6
+ controllers: [FeedsController],
7
+ providers: [FeedsService],
8
+ })
9
+ export class FeedsModule {}
backend/src/modules/feeds/feeds.service.ts ADDED
@@ -0,0 +1,59 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import { Injectable, NotFoundException } from '@nestjs/common';
2
+ import { CreateFeedDto } from './dto/create-feed.dto.js';
3
+ import { UpdateFeedDto } from './dto/update-feed.dto.js';
4
+ import { FeedEntity } from '../../entities/feed.entity.js';
5
+ import { plainToClass } from 'class-transformer';
6
+ import {
7
+ FilterOperator,
8
+ paginate,
9
+ PaginateConfig,
10
+ PaginateQuery,
11
+ } from 'nestjs-paginate';
12
+
13
+ @Injectable()
14
+ export class FeedsService {
15
+ async create(createFeedDto: CreateFeedDto) {
16
+ return await FeedEntity.create({ ...createFeedDto }).save();
17
+ }
18
+
19
+ async findAll(paginateQuery: PaginateQuery) {
20
+ const paginateConfig: PaginateConfig<FeedEntity> = {
21
+ sortableColumns: ['id', 'create_at', 'author_id'],
22
+ filterableColumns: {
23
+ author_id: [FilterOperator.EQ],
24
+ },
25
+ defaultSortBy: [['id', 'DESC']],
26
+ };
27
+ return paginate(
28
+ paginateQuery,
29
+ FeedEntity.createQueryBuilder(),
30
+ paginateConfig,
31
+ );
32
+ }
33
+
34
+ async findOne(id: number) {
35
+ return await FeedEntity.findOneBy({ id: id });
36
+ }
37
+
38
+ async getFeedOrError(id: number) {
39
+ let feed = await FeedEntity.findOneBy({ id });
40
+ if (!feed) {
41
+ throw new NotFoundException('Menu item not found');
42
+ }
43
+ return feed;
44
+ }
45
+
46
+ async update(id: number, updateFeedDto: UpdateFeedDto) {
47
+ let feed = await this.getFeedOrError(id);
48
+ feed = plainToClass(FeedEntity, {
49
+ ...feed,
50
+ ...updateFeedDto,
51
+ });
52
+ return await feed.save();
53
+ }
54
+
55
+ async remove(id: number) {
56
+ let feed = await this.getFeedOrError(id);
57
+ return await feed.remove();
58
+ }
59
+ }
backend/src/modules/menu-item/menu-item.controller.ts CHANGED
@@ -11,6 +11,7 @@ import { MenuItemService } from './menu-item.service.js';
11
  import { CreateMenuItemDto } from './dto/create-menu-item.dto.js';
12
  import { UpdateMenuItemDto } from './dto/update-menu-item.dto.js';
13
  import { Public } from '../authentication/authentication.decorator.js';
 
14
 
15
  @Public()
16
  @Controller('menu-items')
@@ -23,8 +24,8 @@ export class MenuItemController {
23
  }
24
 
25
  @Get()
26
- async findAll() {
27
- return this.menuItemService.findAll();
28
  }
29
 
30
  @Get(':id')
 
11
  import { CreateMenuItemDto } from './dto/create-menu-item.dto.js';
12
  import { UpdateMenuItemDto } from './dto/update-menu-item.dto.js';
13
  import { Public } from '../authentication/authentication.decorator.js';
14
+ import { Paginate, PaginateQuery } from 'nestjs-paginate';
15
 
16
  @Public()
17
  @Controller('menu-items')
 
24
  }
25
 
26
  @Get()
27
+ async findAll(@Paginate() query: PaginateQuery) {
28
+ return this.menuItemService.findAll(query);
29
  }
30
 
31
  @Get(':id')
backend/src/modules/menu-item/menu-item.service.ts CHANGED
@@ -4,6 +4,12 @@ import { UpdateMenuItemDto } from './dto/update-menu-item.dto.js';
4
  import { MenuItemEntity } from '../../entities/menu-item.entity.js';
5
  import { Public } from '../authentication/authentication.decorator.js';
6
  import { plainToClass } from 'class-transformer';
 
 
 
 
 
 
7
 
8
  @Public()
9
  @Injectable()
@@ -12,8 +18,28 @@ export class MenuItemService {
12
  return await MenuItemEntity.create({ ...createMenuItemDto }).save();
13
  }
14
 
15
- async findAll() {
16
- return await MenuItemEntity.find();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
17
  }
18
 
19
  async findOne(id: string) {
 
4
  import { MenuItemEntity } from '../../entities/menu-item.entity.js';
5
  import { Public } from '../authentication/authentication.decorator.js';
6
  import { plainToClass } from 'class-transformer';
7
+ import {
8
+ FilterOperator,
9
+ paginate,
10
+ PaginateConfig,
11
+ PaginateQuery,
12
+ } from 'nestjs-paginate';
13
 
14
  @Public()
15
  @Injectable()
 
18
  return await MenuItemEntity.create({ ...createMenuItemDto }).save();
19
  }
20
 
21
+ async findAll(query: PaginateQuery) {
22
+ const paginateConfig: PaginateConfig<MenuItemEntity> = {
23
+ sortableColumns: [
24
+ 'id',
25
+ 'item_group_id',
26
+ 'item_name',
27
+ 'price',
28
+ 'create_at',
29
+ ],
30
+ nullSort: 'last',
31
+ defaultSortBy: [['id', 'DESC']],
32
+ searchableColumns: ['item_name'],
33
+ filterableColumns: {
34
+ price: [
35
+ FilterOperator.LT,
36
+ FilterOperator.LTE,
37
+ FilterOperator.GT,
38
+ FilterOperator.GTE,
39
+ ],
40
+ },
41
+ };
42
+ return paginate(query, MenuItemEntity.createQueryBuilder(), paginateConfig);
43
  }
44
 
45
  async findOne(id: string) {