{"id":76431,"date":"2024-09-11T20:11:48","date_gmt":"2024-09-11T16:41:48","guid":{"rendered":"https:\/\/nabfollower.com\/blog\/fivem-x-prisma-orm-3kpl\/"},"modified":"2024-09-11T20:11:48","modified_gmt":"2024-09-11T16:41:48","slug":"fivem-x-prisma-orm-3kpl","status":"publish","type":"post","link":"https:\/\/nabfollower.com\/blog\/fivem-x-prisma-orm-3kpl\/","title":{"rendered":"FiveM x Prisma ORM &#8211; \u0627\u0646\u062c\u0645\u0646 DEV"},"content":{"rendered":"<p>Summarize this content to 400 words in Persian Lang<br \/>\n            \u26a0\ufe0f \u0645\u0627 \u062f\u0631 \u0645\u0648\u0631\u062f \u0633\u0631\u0648\u0631 JavaScript\/TypeScript FiveM \u0635\u062d\u0628\u062a \u0645\u06cc \u06a9\u0646\u06cc\u0645 \u26a0\ufe0f\u26a0\ufe0f<\/p>\n<p>FiveM \u06cc\u06a9 \u062a\u063a\u06cc\u06cc\u0631 \u0628\u0631\u0627\u06cc Grand Theft Auto V \u0627\u0633\u062a \u06a9\u0647 \u0628\u0647 \u0634\u0645\u0627 \u0627\u0645\u06a9\u0627\u0646 \u0645\u06cc\u200c\u062f\u0647\u062f \u0628\u0647 \u0635\u0648\u0631\u062a \u0686\u0646\u062f \u0646\u0641\u0631\u0647 \u0631\u0648\u06cc \u0633\u0631\u0648\u0631\u0647\u0627\u06cc \u0627\u062e\u062a\u0635\u0627\u0635\u06cc \u0633\u0641\u0627\u0631\u0634\u06cc\u200c\u0633\u0627\u0632\u06cc \u0634\u062f\u0647 \u0628\u0627 Cfx.re \u0628\u0627\u0632\u06cc \u06a9\u0646\u06cc\u062f.<\/p>\n<p>\u0648\u0642\u062a\u06cc \u06cc\u06a9 \u0633\u0631\u0648\u0631 FiveM \u0631\u0627 \u062a\u0648\u0633\u0639\u0647 \u0645\u06cc\u200c\u062f\u0647\u06cc\u062f\u060c \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0628\u0631\u0627\u06cc \u0630\u062e\u06cc\u0631\u0647 \u062f\u0627\u062f\u0647\u200c\u0647\u0627\u06cc \u067e\u062e\u0634\u200c\u06a9\u0646\u0646\u062f\u0647 \u0648 \u0647\u0645\u0647 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u067e\u0627\u06cc\u062f\u0627\u0631 \u062f\u06cc\u06af\u0631 \u06a9\u0644\u0627\u0633\u06cc\u06a9 \u0627\u0633\u062a. <\/p>\n<p>\u0628\u0631\u0627\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u062f\u0631 \u06a9\u062f \u0633\u0645\u062a \u0633\u0631\u0648\u0631\u060c \u062c\u0627\u0645\u0639\u0647 FiveM \u0686\u0646\u062f\u06cc\u0646 \u0627\u062a\u0635\u0627\u0644 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0631\u062f:<\/p>\n<p>fivem-async-mysql<br \/>\noxmysql<br \/>\n\u2026<\/p>\n<p>\u0647\u0645\u0647 \u0627\u06cc\u0646 \u06a9\u0627\u0646\u06a9\u062a\u0648\u0631\u0647\u0627 \u0631\u0648\u0634 \u0647\u0627\u06cc\u06cc \u0631\u0627 \u0628\u0631\u0627\u06cc \u0627\u062c\u0631\u0627\u06cc \u067e\u0631\u0633 \u0648 \u062c\u0648\u0647\u0627\u06cc \u062e\u0627\u0645 \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc \u062f\u0647\u0646\u062f \u0645\u0627\u0646\u0646\u062f:<\/p>\n<p>const response = await MySQL.query(&#8216;SELECT `firstname`, `lastname` FROM `users` WHERE `identifier` = ?&#8217;, [<br \/>\n  identifier<br \/>\n])<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>2 \u0645\u0634\u06a9\u0644 \u0627\u0635\u0644\u06cc \u062f\u0631 \u0627\u06cc\u0646 \u0631\u0648\u0634 \u062a\u0639\u0627\u0645\u0644 \u0628\u0627 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f:<\/p>\n<p>Dev \u0628\u0627\u06cc\u062f \u067e\u0627\u0633\u062e \u0631\u0627 \u062a\u062c\u0632\u06cc\u0647 \u06a9\u0646\u062f \u062a\u0627 \u0622\u0646 \u0631\u0627 \u0628\u0627 \u06cc\u06a9 \u0645\u062f\u0644 \u062e\u0648\u0628 \u062a\u0627\u06cc\u067e \u06a9\u0646\u062f<br \/>\n\u067e\u0631\u0633 \u0648 \u062c\u0648 \u062f\u0631 \u0645\u0648\u0627\u062c\u0647\u0647 \u0628\u0627 \u0637\u0631\u062d\u0648\u0627\u0631\u0647 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0642\u0628\u0644 \u0627\u0632 \u0627\u062c\u0631\u0627 \u062a\u0627\u06cc\u06cc\u062f \u0646\u0645\u06cc \u0634\u0648\u062f<\/p>\n<p>\u0627\u06cc\u0646 \u0646\u0642\u0627\u0637 \u062f\u0631\u062f \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 ORM \u062d\u0644 \u0645\u06cc \u0634\u0648\u0646\u062f\u060c \u0622\u0646\u0647\u0627 \u0628\u0647 \u0634\u0645\u0627 \u0627\u062c\u0627\u0632\u0647 \u0645\u06cc \u062f\u0647\u0646\u062f \u0645\u062f\u0644 \u0647\u0627\u06cc \u062e\u0648\u062f \u0631\u0627 \u062a\u0648\u0635\u06cc\u0641 \u06a9\u0646\u06cc\u062f\u060c \u0628\u0631\u0631\u0633\u06cc \u0646\u0648\u0639 \u0631\u0627 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0645\u06cc \u06a9\u0646\u062f. \u062f\u0631 \u0627\u06cc\u0646 \u0645\u0642\u0627\u0644\u0647 \u0646\u062d\u0648\u0647 \u0627\u062f\u063a\u0627\u0645 Prisma ORM \u0631\u0627 \u062f\u0631 FiveM \u062e\u0648\u0627\u0647\u06cc\u0645 \u062f\u06cc\u062f.<\/p>\n<p>\u067e\u0648\u0634\u0647 \u0645\u0646\u0628\u0639 FiveM \u06a9\u0647 \u062f\u0631 \u0645\u0642\u0627\u0644\u0647 \u062e\u0648\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u062e\u0648\u0627\u0647\u0645 \u06a9\u0631\u062f \u06cc\u06a9 \u0641\u0636\u0627\u06cc \u06a9\u0627\u0631\u06cc pnpm \u0627\u0633\u062a. \u0627\u06cc\u0646 \u0627\u062c\u0627\u0632\u0647 \u0645\u06cc \u062f\u0647\u062f \u062a\u0627 \u0686\u0646\u062f\u06cc\u0646 \u0628\u0633\u062a\u0647 \u0631\u0627 \u0628\u0627 \u06a9\u062f \u0645\u0634\u062a\u0631\u06a9 \u0645\u062f\u06cc\u0631\u06cc\u062a \u06a9\u0646\u06cc\u062f.<\/p>\n<p>\u251c\u2500\u2500 player-manager<br \/>\n\u2502   \u2514\u2500\u2500 prisma<br \/>\n\u2502     \u2502   \u251c\u2500\u2500 player.schema.prisma<br \/>\n\u2502   \u2502   \u2514\u2500\u2500 package.json \/\/ @player-manager\/prisma package<br \/>\n\u2502     \u2514\u2500\u2500 server<br \/>\n\u2502     \u2502   \u251c\u2500\u2500 server.ts<br \/>\n\u2502   \u2502   \u2514\u2500\u2500 package.json \/\/ @player-manager\/server package<br \/>\n\u2502   \u2514\u2500\u2500 fxmanifest.lua<br \/>\n\u251c\u2500\u2500 lib<br \/>\n\u2502   \u2514\u2500\u2500 prisma-orm.  \/\/ @lib\/prisma-orm package<br \/>\n\u2502          \u251c\u2500\u2500 package.json<br \/>\n\u2502          \u2514\u2500\u2500 &#8230;<br \/>\n\u251c\u2500\u2500 package.json<br \/>\n\u2514\u2500\u2500 pnpm-worspace.yml<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>  \u0637\u0631\u062d\u0648\u0627\u0631\u0647 \u0645\u0646\u0634\u0648\u0631 \u0631\u0627 \u062a\u0642\u0633\u06cc\u0645 \u06a9\u0646\u06cc\u062f<\/p>\n<p>\u062f\u0631 prisma-orm \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u067e\u0648\u0634\u0647 Prisma \u067e\u0633 \u0627\u0632 \u0634\u0631\u0648\u0639. \u0627\u0628\u062a\u062f\u0627\u060c \u0645\u0627 \u0637\u0631\u062d\u0648\u0627\u0631\u0647 Prisma \u0631\u0627 \u0628\u0647 \u0686\u0646\u062f \u0645\u0646\u0628\u0639 \u062a\u0642\u0633\u06cc\u0645 \u0645\u06cc \u06a9\u0646\u06cc\u0645.<\/p>\n<p>\u0628\u0631\u0627\u06cc \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0627\u0632 \u0627\u0628\u0632\u0627\u0631 merge-prisma-schema \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u0645. \u0627\u0632 \u0622\u0646 \u0628\u0631\u0627\u06cc \u0627\u062f\u063a\u0627\u0645 \u0642\u0637\u0639\u0627\u062a \u0637\u0631\u062d\u0648\u0627\u0631\u0647 \u062f\u0631 \u0645\u0627\u0698\u0648\u0644 \u0647\u0627\u06cc \u0686\u0646\u062f\u06af\u0627\u0646\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u0634\u0648\u062f<\/p>\n<p>merge-prisma-schema.config.ts<\/p>\n<p>const config = {<br \/>\n  schemas: [<br \/>\n    &#8220;header.prisma&#8221;,<br \/>\n    &#8220;@player-manager\/prisma\/player.schema.prisma&#8221;,<br \/>\n  ],<br \/>\n  output: &#8220;prisma\/schema.prisma&#8221;,<br \/>\n  schemaSearchFolders: [&#8220;node_modules&#8221;, &#8220;prisma&#8221;],<br \/>\n  prismaCli: &#8220;npx prisma&#8221;,<br \/>\n};<\/p>\n<p>export default config;<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>header.prisma<\/p>\n<p>\/\/ This is your Prisma schema file,<br \/>\n\/\/ learn more about it in the docs: https:\/\/pris.ly\/d\/prisma-schema<\/p>\n<p>generator client {<br \/>\n  provider      = &#8220;prisma-client-js&#8221;<br \/>\n  engineType    = &#8220;binary&#8221;<br \/>\n  binaryTargets = [&#8220;windows&#8221;]\n  output        = &#8220;C:\/gta-fivem\/txData\/CFXDefaultFiveM_8AE314.base\/resources\/lib\/prisma-orm\/prisma\/generated&#8221;<br \/>\n}<\/p>\n<p>datasource db {<br \/>\n  provider = &#8220;sqlite&#8221;<br \/>\n  url      = &#8220;file:C:\/gta-fivem\/txData\/CFXDefaultFiveM_8AE314.base\/resources\/dev.db&#8221;<br \/>\n}<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u062f\u0627\u062e\u0644 @player-module \u0641\u0627\u06cc\u0644 player.schema.prisma<\/p>\n<p>model Player {<br \/>\n  id          Int      @id @default(autoincrement())<br \/>\n  steamId     String   @unique<br \/>\n  lastname    String<br \/>\n  firstname   String<br \/>\n  inventory   Inventory?<br \/>\n}<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0628\u0647 \u0631\u0648\u0632 \u0631\u0633\u0627\u0646\u06cc prisma-orm \u0645\u0627\u0698\u0648\u0644 package.json<\/p>\n<p>{<br \/>\n  &#8220;name&#8221;: &#8220;@lib\/database&#8221;,<br \/>\n  &#8220;version&#8221;: &#8220;1.0.0&#8221;,<br \/>\n  &#8220;scripts&#8221;: {<br \/>\n    &#8220;&#8212;&#8212;&#8212; BUILD &#8212;&#8212;&#8212;&#8220;: &#8220;&#8212;&#8212;&#8212; BUILD &#8212;&#8212;&#8212;&#8220;,<br \/>\n    &#8220;pregenerate&#8221;: &#8220;npx merge-prisma-schema &amp;&amp; rm -rf .\/prisma\/generated&#8221;,<br \/>\n    &#8220;generate&#8221;: &#8220;prisma generate&#8221;,<br \/>\n    &#8220;&#8212;&#8212;&#8212; MIGRATE &#8212;&#8212;&#8212;&#8220;: &#8220;&#8212;&#8212;&#8212; MIGRATE &#8212;&#8212;&#8212;&#8220;,<br \/>\n    &#8220;premigrate&#8221;: &#8220;npx merge-prisma-schema&#8221;,<br \/>\n    &#8220;migrate&#8221;: &#8220;prisma migrate&#8221;<br \/>\n  },<br \/>\n  &#8220;devDependencies&#8221;: {<br \/>\n    &#8220;@player-manager\/prisma&#8221;: &#8220;workspace:*&#8221;,<br \/>\n    &#8220;merge-prisma-schema&#8221;: &#8220;^1.0.0&#8221;,<br \/>\n    &#8220;prisma&#8221;: &#8220;catalog:&#8221;,<br \/>\n    &#8220;ts-node&#8221;: &#8220;catalog:&#8221;,<br \/>\n    &#8220;typescript&#8221;: &#8220;catalog:&#8221;,<br \/>\n  },<br \/>\n  &#8220;dependencies&#8221;: {<br \/>\n    &#8220;@prisma\/client&#8221;: &#8220;catalog:&#8221;<br \/>\n  }<br \/>\n}<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0627\u06af\u0631 \u0628\u062f\u0648\u06cc\u062f npx pregenerate \u0622\u0646 \u0631\u0627 \u0628\u0647 \u0631\u0648\u0632 \u0645\u06cc \u06a9\u0646\u062f prisma.schema \u0641\u0627\u06cc\u0644 \u0645\u0627\u0646\u0646\u062f \u0627\u06cc\u0646:<\/p>\n<p>\/\/ Generated at 2024-09-07T20:46:01.740Z by &#8220;merge-prisma-schema&#8221;<\/p>\n<p>\/\/ This is your Prisma schema file,<br \/>\n\/\/ learn more about it in the docs: https:\/\/pris.ly\/d\/prisma-schema<\/p>\n<p>generator client {<br \/>\n  provider      = &#8220;prisma-client-js&#8221;<br \/>\n  engineType    = &#8220;binary&#8221;<br \/>\n  binaryTargets = [&#8220;windows&#8221;]\n  output        = &#8220;C:\/gta-fivem\/txData\/CFXDefaultFiveM_8AE314.base\/resources\/lib\/database\/prisma\/generated&#8221;<br \/>\n}<\/p>\n<p>datasource db {<br \/>\n  provider = &#8220;sqlite&#8221;<br \/>\n  url      = &#8220;file:C:\/gta-fivem\/txData\/CFXDefaultFiveM_8AE314.base\/resources\/dev.db&#8221;<br \/>\n}<\/p>\n<p>model Player {<br \/>\n  id          Int      @id @default(autoincrement())<br \/>\n  steamId     String   @unique<br \/>\n  lastname    String<br \/>\n  firstname   String<br \/>\n  inventory   Inventory?<br \/>\n}<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>  \u0632\u0645\u0627\u0646 \u0627\u062c\u0631\u0627 \u0645\u0646\u0634\u0648\u0631 \u0631\u0627 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f<\/p>\n<p>\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u062e\u0648\u0627\u0647\u06cc\u0645 \u06a9\u0631\u062f npx generate \u0628\u0631\u0627\u06cc \u0627\u06cc\u062c\u0627\u062f \u0632\u0645\u0627\u0646 \u0627\u062c\u0631\u0627 Prisma\u060c \u0647\u0645\u0627\u0646\u0637\u0648\u0631 \u06a9\u0647 \u062f\u0631 \u0645\u0633\u062a\u0646\u062f\u0627\u062a \u062a\u0648\u0636\u06cc\u062d \u062f\u0627\u062f\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a. \u067e\u0633 \u0627\u0632 \u062a\u0648\u0644\u06cc\u062f\u060c \u0627\u0632 \u06cc\u06a9 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0628\u0631\u0627\u06cc \u0627\u0635\u0644\u0627\u062d \u0641\u0627\u06cc\u0644 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u0645 index.js \u06a9\u0647 \u062a\u0648\u0644\u06cc\u062f \u0634\u062f\u0647 \u0627\u0633\u062a. \u0628\u0631\u0627\u06cc \u0627\u0646\u062c\u0627\u0645 \u0622\u0646 \u0627\u0632 \u0628\u0633\u062a\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u0634\u0648\u062f tsx.<\/p>\n<p>package.json<\/p>\n<p>{<br \/>\n  &#8220;name&#8221;: &#8220;@lib\/prisma-orm&#8221;,<br \/>\n  &#8220;version&#8221;: &#8220;1.0.0&#8221;,<br \/>\n  &#8220;scripts&#8221;: {<br \/>\n    &#8220;&#8212;&#8212;&#8212; BUILD &#8212;&#8212;&#8212;&#8220;: &#8220;&#8212;&#8212;&#8212; BUILD &#8212;&#8212;&#8212;&#8220;,<br \/>\n    &#8220;pregenerate&#8221;: &#8220;npx merge-prisma-schema &amp;&amp; rm -rf .\/prisma\/generated&#8221;,<br \/>\n    &#8220;generate&#8221;: &#8220;prisma generate&#8221;,<br \/>\n    &#8220;postgenerate&#8221;: &#8220;npx tsx patch-generated-runtime.ts&#8221;,<br \/>\n    &#8220;&#8212;&#8212;&#8212; MIGRATE &#8212;&#8212;&#8212;&#8220;: &#8220;&#8212;&#8212;&#8212; MIGRATE &#8212;&#8212;&#8212;&#8220;,<br \/>\n    &#8220;premigrate&#8221;: &#8220;npx merge-prisma-schema&#8221;,<br \/>\n    &#8220;migrate&#8221;: &#8220;prisma migrate&#8221;<br \/>\n  },<br \/>\n  &#8220;devDependencies&#8221;: {<br \/>\n    &#8220;@player-manager\/prisma&#8221;: &#8220;workspace:*&#8221;,<br \/>\n    &#8220;merge-prisma-schema&#8221;: &#8220;^1.0.0&#8221;,<br \/>\n    &#8220;prisma&#8221;: &#8220;catalog:&#8221;,<br \/>\n    &#8220;ts-node&#8221;: &#8220;catalog:&#8221;,<br \/>\n    &#8220;typescript&#8221;: &#8220;catalog:&#8221;,<br \/>\n  },<br \/>\n  &#8220;dependencies&#8221;: {<br \/>\n    &#8220;@prisma\/client&#8221;: &#8220;catalog:&#8221;<br \/>\n  }<br \/>\n}<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>patch-generated-runtime.ts<\/p>\n<p>import { readFileSync, writeFileSync } from &#8220;fs&#8221;;<br \/>\nimport { join } from &#8220;path&#8221;;<\/p>\n<p>const toReplace = `<br \/>\n  const alternativePath = alternativePaths.find((altPath) =&gt; {<br \/>\n    return fs.existsSync(path.join(process.cwd(), altPath, &#8216;schema.prisma&#8217;))<br \/>\n  }) ?? alternativePaths[0]\n<p>  config.dirname = path.join(process.cwd(), alternativePath)<br \/>\n  config.isBundled = true<br \/>\n`;<\/p>\n<p>const replaceValue = `<br \/>\n  const alternativePath = alternativePaths.find((altPath) =&gt; {<br \/>\n    return fs.existsSync(path.join(process.cwd(), altPath, &#8216;schema.prisma&#8217;))<br \/>\n  }); <\/p>\n<p>  if(alternativePath) {<br \/>\n    config.dirname = path.join(process.cwd(), alternativePath)<br \/>\n  } else if(config?.generator?.output?.value) {<br \/>\n    config.dirname = config.generator.output.value;<br \/>\n  } else {<br \/>\n    config.dirname = path.join(process.cwd(), alternativePaths[0]);<br \/>\n  }<\/p>\n<p>  config.isBundled = true<br \/>\n`;<\/p>\n<p>const file = join(process.cwd(), &#8216;prisma&#8217;, &#8216;generated&#8217;, &#8216;index.js&#8217;);<\/p>\n<p>const indexContent = readFileSync(file, { encoding: &#8216;utf-8&#8217;});<\/p>\n<p>const newIndexContent = indexContent.replace(toReplace, replaceValue);<\/p>\n<p>writeFileSync(file, newIndexContent);<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0628\u0627 \u067e\u0686\u060c \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc Prisma \u0628\u0627 \u0639\u0628\u0627\u0631\u062a \u062a\u0639\u0631\u06cc\u0641 \u0645\u06cc \u0634\u0648\u062f output \u0627\u0645\u0648\u0627\u0644 \u062a\u0646\u0638\u06cc\u0645 \u0634\u062f\u0647 \u062f\u0631 schema.prisma <\/p>\n<p>  \u0628\u0633\u062a\u0647 \u0646\u0631\u0645 \u0627\u0641\u0632\u0627\u0631\u06cc prisma client<\/p>\n<p>\u0647\u0645\u0627\u0646\u0637\u0648\u0631 \u06a9\u0647 FiveM \u0641\u0642\u0637 \u0628\u0627 \u0622\u0646 \u06a9\u0627\u0631 \u0645\u06cc \u06a9\u0646\u062f commonjs \u0641\u0627\u06cc\u0644 \u0647\u0627\u06cc \u0647\u0645\u0631\u0627\u0647\u060c \u0645\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u062e\u0648\u0627\u0647\u06cc\u0645 \u06a9\u0631\u062f rollup \u0628\u0631\u0627\u06cc \u0627\u06cc\u062c\u0627\u062f \u06cc\u06a9 \u06a9\u062f \u0633\u0627\u062e\u062a\u0647 \u0634\u062f\u0647 \u0633\u0627\u0632\u06af\u0627\u0631. \u0627\u06cc\u0646 \u06a9\u062f \u0628\u0627 \u0628\u0633\u062a\u0647 \u0647\u0627\/\u0645\u0646\u0627\u0628\u0639 \u062f\u06cc\u06af\u0631 \u0628\u0647 \u0627\u0634\u062a\u0631\u0627\u06a9 \u06af\u0630\u0627\u0634\u062a\u0647 \u062e\u0648\u0627\u0647\u062f \u0634\u062f.<\/p>\n<p>rollup.config.mjs<\/p>\n<p>import typescript from &#8220;@rollup\/plugin-typescript&#8221;;<br \/>\nimport commonjs from &#8220;@rollup\/plugin-commonjs&#8221;;<br \/>\nimport resolve from &#8220;@rollup\/plugin-node-resolve&#8221;;<\/p>\n<p>const banner = `<br \/>\n  const { resolve, join } = require(&#8220;path&#8221;);<br \/>\n  const { cwd } = require(&#8220;process&#8221;);<\/p>\n<p>  var __dirname = resolve();<br \/>\n  var __filename = join(__dirname, &#8220;index.js&#8221;);<\/p>\n<p>  process.env[&#8220;PRISMA_QUERY_ENGINE_BINARY&#8221;] = join(cwd(), &#8220;resources&#8221;, &#8220;lib&#8221;, &#8220;prisma-orm&#8221;, &#8220;prisma&#8221;, &#8220;generated&#8221;, &#8220;query-engine-windows.exe&#8221;);<br \/>\n`;<\/p>\n<p>export default {<br \/>\n  input: &#8220;.\/index.ts&#8221;,<br \/>\n  output: {<br \/>\n    dir: &#8220;dist&#8221;,<br \/>\n    format: &#8220;cjs&#8221;,<br \/>\n    sourcemap: false,<br \/>\n    banner,<br \/>\n  },<br \/>\n  plugins: [resolve(), typescript(), commonjs()],<br \/>\n};<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0628\u0627 \u0627\u06cc\u0646 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc\u060c \u06cc\u06a9 \u0628\u0633\u062a\u0647 \u0646\u0631\u0645 \u0627\u0641\u0632\u0627\u0631\u06cc \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u06cc\u0645 \u0648 \u067e\u06cc\u0634\u0648\u0646\u062f \u0622\u0646 \u0631\u0627 \u0628\u0627 \u0628\u0631\u062e\u06cc \u0627\u0632 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0645\u0647\u0645 \u0627\u0636\u0627\u0641\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u0645:<\/p>\n<p>__dirname  \u0648 __filename \u062f\u0631 \u0632\u0645\u06cc\u0646\u0647 \u0627\u062c\u0631\u0627\u06cc \u06af\u0631\u0647 FiveM \u0648\u062c\u0648\u062f \u0646\u062f\u0627\u0631\u062f\u060c \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0645\u0627 \u0622\u0646 \u0631\u0627 \u0628\u0647 \u0635\u0648\u0631\u062a \u062f\u0633\u062a\u06cc \u062a\u0639\u0631\u06cc\u0641 \u0645\u06cc \u06a9\u0646\u06cc\u0645 \u0632\u06cc\u0631\u0627 Prisma \u0628\u0647 \u0622\u0646 \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u062f.<\/p>\n<p>process.env[&#8220;PRISMA_QUERY_ENGINE_BINARY&#8221;]  \u0645\u062d\u0644 \u0627\u062c\u0631\u0627\u06cc \u0645\u0648\u062a\u0648\u0631 \u067e\u0631\u0633 \u0648 \u062c\u0648 \u0627\u0633\u062a \u06a9\u0647 \u062f\u0631 \u067e\u0648\u0634\u0647 \u0632\u0645\u0627\u0646 \u0627\u062c\u0631\u0627 Prisma \u0627\u06cc\u062c\u0627\u062f \u0634\u062f\u0647 \u0627\u0633\u062a<\/p>\n<p>  \u0646\u0645\u0648\u0646\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647<\/p>\n<p>\u062f\u0627\u062e\u0644 @player-manager\/server \u06a9\u0647 \u06cc\u06a9 \u0628\u0633\u062a\u0647 Typescript \u0628\u0627 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc rollup \u0627\u0633\u062a \u06a9\u0647 \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u062a\u0648\u0636\u06cc\u062d \u062f\u0627\u062f\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a\u060c \u0627\u0636\u0627\u0641\u0647 \u0645\u06cc \u06a9\u0646\u0645 @lib\/prisma-orm \u0628\u0647  dependencies.<\/p>\n<p>server.ts<\/p>\n<p>import { prisma } from &#8220;@lib\/database&#8221;<\/p>\n<p>on(&#8220;onResourceStart&#8221;, async (resName: string) =&gt; {<br \/>\n  if (resName === GetCurrentResourceName()) {<br \/>\n    const players = await prisma.player.findMany();<br \/>\n    console.log(&#8220;players&#8221;, JSON.stringify(players))<br \/>\n  }<br \/>\n});<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u06cc\u06a9 \u0645\u062b\u0627\u0644 \u06a9\u0627\u0645\u0644 \u0631\u0627 \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0628\u0627\u0632\u06cc\u0627\u0628\u06cc \u06a9\u0646\u06cc\u062f https:\/\/github.com\/JustinMartinDev\/experimental-rp<\/p>\n<div data-article-id=\"1997040\" id=\"article-body\">\n<p>\u26a0\ufe0f \u0645\u0627 \u062f\u0631 \u0645\u0648\u0631\u062f \u0633\u0631\u0648\u0631 JavaScript\/TypeScript FiveM \u0635\u062d\u0628\u062a \u0645\u06cc \u06a9\u0646\u06cc\u0645 \u26a0\ufe0f\u26a0\ufe0f<\/p>\n<blockquote>\n<p>FiveM \u06cc\u06a9 \u062a\u063a\u06cc\u06cc\u0631 \u0628\u0631\u0627\u06cc Grand Theft Auto V \u0627\u0633\u062a \u06a9\u0647 \u0628\u0647 \u0634\u0645\u0627 \u0627\u0645\u06a9\u0627\u0646 \u0645\u06cc\u200c\u062f\u0647\u062f \u0628\u0647 \u0635\u0648\u0631\u062a \u0686\u0646\u062f \u0646\u0641\u0631\u0647 \u0631\u0648\u06cc \u0633\u0631\u0648\u0631\u0647\u0627\u06cc \u0627\u062e\u062a\u0635\u0627\u0635\u06cc \u0633\u0641\u0627\u0631\u0634\u06cc\u200c\u0633\u0627\u0632\u06cc \u0634\u062f\u0647 \u0628\u0627 Cfx.re \u0628\u0627\u0632\u06cc \u06a9\u0646\u06cc\u062f.<\/p>\n<\/blockquote>\n<p>\u0648\u0642\u062a\u06cc \u06cc\u06a9 \u0633\u0631\u0648\u0631 FiveM \u0631\u0627 \u062a\u0648\u0633\u0639\u0647 \u0645\u06cc\u200c\u062f\u0647\u06cc\u062f\u060c \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0628\u0631\u0627\u06cc \u0630\u062e\u06cc\u0631\u0647 \u062f\u0627\u062f\u0647\u200c\u0647\u0627\u06cc \u067e\u062e\u0634\u200c\u06a9\u0646\u0646\u062f\u0647 \u0648 \u0647\u0645\u0647 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u067e\u0627\u06cc\u062f\u0627\u0631 \u062f\u06cc\u06af\u0631 \u06a9\u0644\u0627\u0633\u06cc\u06a9 \u0627\u0633\u062a. <\/p>\n<p>\u0628\u0631\u0627\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u062f\u0631 \u06a9\u062f \u0633\u0645\u062a \u0633\u0631\u0648\u0631\u060c \u062c\u0627\u0645\u0639\u0647 FiveM \u0686\u0646\u062f\u06cc\u0646 \u0627\u062a\u0635\u0627\u0644 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0631\u062f:<\/p>\n<ul>\n<li><strong>fivem-async-mysql<\/strong><\/li>\n<li><strong>oxmysql<\/strong><\/li>\n<li>\u2026<\/li>\n<\/ul>\n<p>\u0647\u0645\u0647 \u0627\u06cc\u0646 \u06a9\u0627\u0646\u06a9\u062a\u0648\u0631\u0647\u0627 \u0631\u0648\u0634 \u0647\u0627\u06cc\u06cc \u0631\u0627 \u0628\u0631\u0627\u06cc \u0627\u062c\u0631\u0627\u06cc \u067e\u0631\u0633 \u0648 \u062c\u0648\u0647\u0627\u06cc \u062e\u0627\u0645 \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc \u062f\u0647\u0646\u062f \u0645\u0627\u0646\u0646\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight tsx\"><code><span class=\"kd\">const<\/span> <span class=\"nx\">response<\/span> <span class=\"o\">=<\/span> <span class=\"k\">await<\/span> <span class=\"nx\">MySQL<\/span><span class=\"p\">.<\/span><span class=\"nf\">query<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">SELECT `firstname`, `lastname` FROM `users` WHERE `identifier` = ?<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"p\">[<\/span>\n  <span class=\"nx\">identifier<\/span>\n<span class=\"p\">])<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>2 \u0645\u0634\u06a9\u0644 \u0627\u0635\u0644\u06cc \u062f\u0631 \u0627\u06cc\u0646 \u0631\u0648\u0634 \u062a\u0639\u0627\u0645\u0644 \u0628\u0627 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f:<\/p>\n<ul>\n<li>Dev \u0628\u0627\u06cc\u062f \u067e\u0627\u0633\u062e \u0631\u0627 \u062a\u062c\u0632\u06cc\u0647 \u06a9\u0646\u062f \u062a\u0627 \u0622\u0646 \u0631\u0627 \u0628\u0627 \u06cc\u06a9 \u0645\u062f\u0644 \u062e\u0648\u0628 \u062a\u0627\u06cc\u067e \u06a9\u0646\u062f<\/li>\n<li>\u067e\u0631\u0633 \u0648 \u062c\u0648 \u062f\u0631 \u0645\u0648\u0627\u062c\u0647\u0647 \u0628\u0627 \u0637\u0631\u062d\u0648\u0627\u0631\u0647 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0642\u0628\u0644 \u0627\u0632 \u0627\u062c\u0631\u0627 \u062a\u0627\u06cc\u06cc\u062f \u0646\u0645\u06cc \u0634\u0648\u062f<\/li>\n<\/ul>\n<p>\u0627\u06cc\u0646 \u0646\u0642\u0627\u0637 \u062f\u0631\u062f \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 ORM \u062d\u0644 \u0645\u06cc \u0634\u0648\u0646\u062f\u060c \u0622\u0646\u0647\u0627 \u0628\u0647 \u0634\u0645\u0627 \u0627\u062c\u0627\u0632\u0647 \u0645\u06cc \u062f\u0647\u0646\u062f \u0645\u062f\u0644 \u0647\u0627\u06cc \u062e\u0648\u062f \u0631\u0627 \u062a\u0648\u0635\u06cc\u0641 \u06a9\u0646\u06cc\u062f\u060c \u0628\u0631\u0631\u0633\u06cc \u0646\u0648\u0639 \u0631\u0627 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0645\u06cc \u06a9\u0646\u062f. \u062f\u0631 \u0627\u06cc\u0646 \u0645\u0642\u0627\u0644\u0647 \u0646\u062d\u0648\u0647 \u0627\u062f\u063a\u0627\u0645 Prisma ORM \u0631\u0627 \u062f\u0631 FiveM \u062e\u0648\u0627\u0647\u06cc\u0645 \u062f\u06cc\u062f.<\/p>\n<p>\u067e\u0648\u0634\u0647 \u0645\u0646\u0628\u0639 FiveM \u06a9\u0647 \u062f\u0631 \u0645\u0642\u0627\u0644\u0647 \u062e\u0648\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u062e\u0648\u0627\u0647\u0645 \u06a9\u0631\u062f \u06cc\u06a9 \u0641\u0636\u0627\u06cc \u06a9\u0627\u0631\u06cc pnpm \u0627\u0633\u062a. \u0627\u06cc\u0646 \u0627\u062c\u0627\u0632\u0647 \u0645\u06cc \u062f\u0647\u062f \u062a\u0627 \u0686\u0646\u062f\u06cc\u0646 \u0628\u0633\u062a\u0647 \u0631\u0627 \u0628\u0627 \u06a9\u062f \u0645\u0634\u062a\u0631\u06a9 \u0645\u062f\u06cc\u0631\u06cc\u062a \u06a9\u0646\u06cc\u062f.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight tsx\"><code><span class=\"err\">\u251c\u2500\u2500<\/span> <span class=\"nx\">player<\/span><span class=\"o\">-<\/span><span class=\"nx\">manager<\/span>\n<span class=\"err\">\u2502<\/span>   <span class=\"err\">\u2514\u2500\u2500<\/span> <span class=\"nx\">prisma<\/span>\n<span class=\"err\">\u2502<\/span>     <span class=\"err\">\u2502<\/span>   <span class=\"err\">\u251c\u2500\u2500<\/span> <span class=\"nx\">player<\/span><span class=\"p\">.<\/span><span class=\"nx\">schema<\/span><span class=\"p\">.<\/span><span class=\"nx\">prisma<\/span>\n<span class=\"err\">\u2502<\/span>   <span class=\"err\">\u2502<\/span>   <span class=\"err\">\u2514\u2500\u2500<\/span> <span class=\"kr\">package<\/span><span class=\"p\">.<\/span><span class=\"nx\">json<\/span> <span class=\"c1\">\/\/ @player-manager\/prisma package<\/span>\n<span class=\"err\">\u2502<\/span>     <span class=\"err\">\u2514\u2500\u2500<\/span> <span class=\"nx\">server<\/span>\n<span class=\"err\">\u2502<\/span>     <span class=\"err\">\u2502<\/span>   <span class=\"err\">\u251c\u2500\u2500<\/span> <span class=\"nx\">server<\/span><span class=\"p\">.<\/span><span class=\"nx\">ts<\/span>\n<span class=\"err\">\u2502<\/span>   <span class=\"err\">\u2502<\/span>   <span class=\"err\">\u2514\u2500\u2500<\/span> <span class=\"kr\">package<\/span><span class=\"p\">.<\/span><span class=\"nx\">json<\/span> <span class=\"c1\">\/\/ @player-manager\/server package<\/span>\n<span class=\"err\">\u2502<\/span>   <span class=\"err\">\u2514\u2500\u2500<\/span> <span class=\"nx\">fxmanifest<\/span><span class=\"p\">.<\/span><span class=\"nx\">lua<\/span>\n<span class=\"err\">\u251c\u2500\u2500<\/span> <span class=\"nx\">lib<\/span>\n<span class=\"err\">\u2502<\/span>   <span class=\"err\">\u2514\u2500\u2500<\/span> <span class=\"nx\">prisma<\/span><span class=\"o\">-<\/span><span class=\"nx\">orm<\/span><span class=\"p\">.<\/span>  <span class=\"c1\">\/\/ @lib\/prisma-orm package<\/span>\n<span class=\"err\">\u2502<\/span>          <span class=\"err\">\u251c\u2500\u2500<\/span> <span class=\"kr\">package<\/span><span class=\"p\">.<\/span><span class=\"nx\">json<\/span>\n<span class=\"err\">\u2502<\/span>          <span class=\"err\">\u2514\u2500\u2500<\/span> <span class=\"p\">...<\/span> \n<span class=\"err\">\u251c\u2500\u2500<\/span> <span class=\"kr\">package<\/span><span class=\"p\">.<\/span><span class=\"nx\">json<\/span>\n<span class=\"err\">\u2514\u2500\u2500<\/span> <span class=\"nx\">pnpm<\/span><span class=\"o\">-<\/span><span class=\"nx\">worspace<\/span><span class=\"p\">.<\/span><span class=\"nx\">yml<\/span>\n\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_85 counter-hierarchy ez-toc-counter-rtl ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">\u0641\u0647\u0631\u0633\u062a \u0645\u0637\u0627\u0644\u0628<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/nabfollower.com\/blog\/fivem-x-prisma-orm-3kpl\/#%D8%B7%D8%B1%D8%AD%D9%88%D8%A7%D8%B1%D9%87_%D9%85%D9%86%D8%B4%D9%88%D8%B1_%D8%B1%D8%A7_%D8%AA%D9%82%D8%B3%DB%8C%D9%85_%DA%A9%D9%86%DB%8C%D8%AF\" >\u0637\u0631\u062d\u0648\u0627\u0631\u0647 \u0645\u0646\u0634\u0648\u0631 \u0631\u0627 \u062a\u0642\u0633\u06cc\u0645 \u06a9\u0646\u06cc\u062f<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/nabfollower.com\/blog\/fivem-x-prisma-orm-3kpl\/#%D8%B2%D9%85%D8%A7%D9%86_%D8%A7%D8%AC%D8%B1%D8%A7_%D9%85%D9%86%D8%B4%D9%88%D8%B1_%D8%B1%D8%A7_%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF_%DA%A9%D9%86%DB%8C%D8%AF\" >\u0632\u0645\u0627\u0646 \u0627\u062c\u0631\u0627 \u0645\u0646\u0634\u0648\u0631 \u0631\u0627 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/nabfollower.com\/blog\/fivem-x-prisma-orm-3kpl\/#%D8%A8%D8%B3%D8%AA%D9%87_%D9%86%D8%B1%D9%85_%D8%A7%D9%81%D8%B2%D8%A7%D8%B1%DB%8C_prisma_client\" >\u0628\u0633\u062a\u0647 \u0646\u0631\u0645 \u0627\u0641\u0632\u0627\u0631\u06cc prisma client<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/nabfollower.com\/blog\/fivem-x-prisma-orm-3kpl\/#%D9%86%D9%85%D9%88%D9%86%D9%87_%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87\" >\u0646\u0645\u0648\u0646\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647<\/a><\/li><\/ul><\/nav><\/div>\n<h2><span class=\"ez-toc-section\" id=\"%D8%B7%D8%B1%D8%AD%D9%88%D8%A7%D8%B1%D9%87_%D9%85%D9%86%D8%B4%D9%88%D8%B1_%D8%B1%D8%A7_%D8%AA%D9%82%D8%B3%DB%8C%D9%85_%DA%A9%D9%86%DB%8C%D8%AF\"><\/span>\n<p>  \u0637\u0631\u062d\u0648\u0627\u0631\u0647 \u0645\u0646\u0634\u0648\u0631 \u0631\u0627 \u062a\u0642\u0633\u06cc\u0645 \u06a9\u0646\u06cc\u062f<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u062f\u0631 <code>prisma-orm<\/code> \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u067e\u0648\u0634\u0647 Prisma \u067e\u0633 \u0627\u0632 \u0634\u0631\u0648\u0639. \u0627\u0628\u062a\u062f\u0627\u060c \u0645\u0627 \u0637\u0631\u062d\u0648\u0627\u0631\u0647 Prisma \u0631\u0627 \u0628\u0647 \u0686\u0646\u062f \u0645\u0646\u0628\u0639 \u062a\u0642\u0633\u06cc\u0645 \u0645\u06cc \u06a9\u0646\u06cc\u0645.<\/p>\n<p>\u0628\u0631\u0627\u06cc \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0627\u0632 \u0627\u0628\u0632\u0627\u0631 merge-prisma-schema \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u0645. \u0627\u0632 \u0622\u0646 \u0628\u0631\u0627\u06cc \u0627\u062f\u063a\u0627\u0645 \u0642\u0637\u0639\u0627\u062a \u0637\u0631\u062d\u0648\u0627\u0631\u0647 \u062f\u0631 \u0645\u0627\u0698\u0648\u0644 \u0647\u0627\u06cc \u0686\u0646\u062f\u06af\u0627\u0646\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u0634\u0648\u062f<\/p>\n<p><code>merge-prisma-schema.config.ts<\/code><\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight tsx\"><code><span class=\"kd\">const<\/span> <span class=\"nx\">config<\/span> <span class=\"o\">=<\/span> <span class=\"p\">{<\/span>\n  <span class=\"na\">schemas<\/span><span class=\"p\">:<\/span> <span class=\"p\">[<\/span>\n    <span class=\"dl\">\"<\/span><span class=\"s2\">header.prisma<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span>\n    <span class=\"dl\">\"<\/span><span class=\"s2\">@player-manager\/prisma\/player.schema.prisma<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span>\n  <span class=\"p\">],<\/span>\n  <span class=\"na\">output<\/span><span class=\"p\">:<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">prisma\/schema.prisma<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span>\n  <span class=\"na\">schemaSearchFolders<\/span><span class=\"p\">:<\/span> <span class=\"p\">[<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">node_modules<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">prisma<\/span><span class=\"dl\">\"<\/span><span class=\"p\">],<\/span>\n  <span class=\"na\">prismaCli<\/span><span class=\"p\">:<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">npx prisma<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span>\n<span class=\"p\">};<\/span>\n\n<span class=\"k\">export<\/span> <span class=\"k\">default<\/span> <span class=\"nx\">config<\/span><span class=\"p\">;<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><code>header.prisma<\/code><\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>\/\/ This is your Prisma schema file,\n\/\/ learn more about it in the docs: https:\/\/pris.ly\/d\/prisma-schema\n\ngenerator client {\n  provider      = \"prisma-client-js\"\n  engineType    = \"binary\"\n  binaryTargets = [\"windows\"]\n  output        = \"C:\/gta-fivem\/txData\/CFXDefaultFiveM_8AE314.base\/resources\/lib\/prisma-orm\/prisma\/generated\"\n}\n\ndatasource db {\n  provider = \"sqlite\"\n  url      = \"file:C:\/gta-fivem\/txData\/CFXDefaultFiveM_8AE314.base\/resources\/dev.db\"\n}\n\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u062f\u0627\u062e\u0644 <code>@player-module<\/code> \u0641\u0627\u06cc\u0644 <code>player.schema.prisma<\/code><\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>model Player {\n  id          Int      @id @default(autoincrement())\n  steamId     String   @unique \n  lastname    String\n  firstname   String\n  inventory   Inventory?\n}\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0628\u0647 \u0631\u0648\u0632 \u0631\u0633\u0627\u0646\u06cc <code>prisma-orm<\/code> \u0645\u0627\u0698\u0648\u0644 <code>package.json<\/code><\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight json\"><code><span class=\"p\">{<\/span><span class=\"w\">\n  <\/span><span class=\"nl\">\"name\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"@lib\/database\"<\/span><span class=\"p\">,<\/span><span class=\"w\">\n  <\/span><span class=\"nl\">\"version\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"1.0.0\"<\/span><span class=\"p\">,<\/span><span class=\"w\">\n  <\/span><span class=\"nl\">\"scripts\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"p\">{<\/span><span class=\"w\">\n    <\/span><span class=\"nl\">\"--------- BUILD ---------\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"--------- BUILD ---------\"<\/span><span class=\"p\">,<\/span><span class=\"w\">\n    <\/span><span class=\"nl\">\"pregenerate\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"npx merge-prisma-schema &amp;&amp; rm -rf .\/prisma\/generated\"<\/span><span class=\"p\">,<\/span><span class=\"w\">\n    <\/span><span class=\"nl\">\"generate\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"prisma generate\"<\/span><span class=\"p\">,<\/span><span class=\"w\">\n    <\/span><span class=\"nl\">\"--------- MIGRATE ---------\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"--------- MIGRATE ---------\"<\/span><span class=\"p\">,<\/span><span class=\"w\">\n    <\/span><span class=\"nl\">\"premigrate\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"npx merge-prisma-schema\"<\/span><span class=\"p\">,<\/span><span class=\"w\">\n    <\/span><span class=\"nl\">\"migrate\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"prisma migrate\"<\/span><span class=\"w\">\n  <\/span><span class=\"p\">},<\/span><span class=\"w\">\n  <\/span><span class=\"nl\">\"devDependencies\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"p\">{<\/span><span class=\"w\">\n    <\/span><span class=\"nl\">\"@player-manager\/prisma\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"workspace:*\"<\/span><span class=\"p\">,<\/span><span class=\"w\">\n    <\/span><span class=\"nl\">\"merge-prisma-schema\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"^1.0.0\"<\/span><span class=\"p\">,<\/span><span class=\"w\">\n    <\/span><span class=\"nl\">\"prisma\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"catalog:\"<\/span><span class=\"p\">,<\/span><span class=\"w\">\n    <\/span><span class=\"nl\">\"ts-node\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"catalog:\"<\/span><span class=\"p\">,<\/span><span class=\"w\">\n    <\/span><span class=\"nl\">\"typescript\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"catalog:\"<\/span><span class=\"p\">,<\/span><span class=\"w\">\n  <\/span><span class=\"p\">},<\/span><span class=\"w\">\n  <\/span><span class=\"nl\">\"dependencies\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"p\">{<\/span><span class=\"w\">\n    <\/span><span class=\"nl\">\"@prisma\/client\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"catalog:\"<\/span><span class=\"w\">\n  <\/span><span class=\"p\">}<\/span><span class=\"w\">\n<\/span><span class=\"p\">}<\/span><span class=\"w\">\n<\/span><\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0627\u06af\u0631 \u0628\u062f\u0648\u06cc\u062f <code>npx pregenerate<\/code> \u0622\u0646 \u0631\u0627 \u0628\u0647 \u0631\u0648\u0632 \u0645\u06cc \u06a9\u0646\u062f <code>prisma.schema<\/code> \u0641\u0627\u06cc\u0644 \u0645\u0627\u0646\u0646\u062f \u0627\u06cc\u0646:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>\/\/ Generated at 2024-09-07T20:46:01.740Z by \"merge-prisma-schema\"\n\n\/\/ This is your Prisma schema file,\n\/\/ learn more about it in the docs: https:\/\/pris.ly\/d\/prisma-schema\n\ngenerator client {\n  provider      = \"prisma-client-js\"\n  engineType    = \"binary\"\n  binaryTargets = [\"windows\"]\n  output        = \"C:\/gta-fivem\/txData\/CFXDefaultFiveM_8AE314.base\/resources\/lib\/database\/prisma\/generated\"\n}\n\ndatasource db {\n  provider = \"sqlite\"\n  url      = \"file:C:\/gta-fivem\/txData\/CFXDefaultFiveM_8AE314.base\/resources\/dev.db\"\n}\n\nmodel Player {\n  id          Int      @id @default(autoincrement())\n  steamId     String   @unique \n  lastname    String\n  firstname   String\n  inventory   Inventory?\n}\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<h2><span class=\"ez-toc-section\" id=\"%D8%B2%D9%85%D8%A7%D9%86_%D8%A7%D8%AC%D8%B1%D8%A7_%D9%85%D9%86%D8%B4%D9%88%D8%B1_%D8%B1%D8%A7_%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF_%DA%A9%D9%86%DB%8C%D8%AF\"><\/span>\n<p>  \u0632\u0645\u0627\u0646 \u0627\u062c\u0631\u0627 \u0645\u0646\u0634\u0648\u0631 \u0631\u0627 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u062e\u0648\u0627\u0647\u06cc\u0645 \u06a9\u0631\u062f <code>npx generate<\/code> \u0628\u0631\u0627\u06cc \u0627\u06cc\u062c\u0627\u062f \u0632\u0645\u0627\u0646 \u0627\u062c\u0631\u0627 Prisma\u060c \u0647\u0645\u0627\u0646\u0637\u0648\u0631 \u06a9\u0647 \u062f\u0631 \u0645\u0633\u062a\u0646\u062f\u0627\u062a \u062a\u0648\u0636\u06cc\u062d \u062f\u0627\u062f\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a. \u067e\u0633 \u0627\u0632 \u062a\u0648\u0644\u06cc\u062f\u060c \u0627\u0632 \u06cc\u06a9 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0628\u0631\u0627\u06cc \u0627\u0635\u0644\u0627\u062d \u0641\u0627\u06cc\u0644 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u0645 <code>index.js<\/code> \u06a9\u0647 \u062a\u0648\u0644\u06cc\u062f \u0634\u062f\u0647 \u0627\u0633\u062a. \u0628\u0631\u0627\u06cc \u0627\u0646\u062c\u0627\u0645 \u0622\u0646 \u0627\u0632 \u0628\u0633\u062a\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u0634\u0648\u062f <code>tsx<\/code>.<\/p>\n<p><code>package.json<\/code><\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight tsx\"><code><span class=\"p\">{<\/span>\n  <span class=\"dl\">\"<\/span><span class=\"s2\">name<\/span><span class=\"dl\">\"<\/span><span class=\"p\">:<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">@lib\/prisma-orm<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span>\n  <span class=\"dl\">\"<\/span><span class=\"s2\">version<\/span><span class=\"dl\">\"<\/span><span class=\"p\">:<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">1.0.0<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span>\n  <span class=\"dl\">\"<\/span><span class=\"s2\">scripts<\/span><span class=\"dl\">\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">{<\/span>\n    <span class=\"dl\">\"<\/span><span class=\"s2\">--------- BUILD ---------<\/span><span class=\"dl\">\"<\/span><span class=\"p\">:<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">--------- BUILD ---------<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span>\n    <span class=\"dl\">\"<\/span><span class=\"s2\">pregenerate<\/span><span class=\"dl\">\"<\/span><span class=\"p\">:<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">npx merge-prisma-schema &amp;&amp; rm -rf .\/prisma\/generated<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span>\n    <span class=\"dl\">\"<\/span><span class=\"s2\">generate<\/span><span class=\"dl\">\"<\/span><span class=\"p\">:<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">prisma generate<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span>\n    <span class=\"dl\">\"<\/span><span class=\"s2\">postgenerate<\/span><span class=\"dl\">\"<\/span><span class=\"p\">:<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">npx tsx patch-generated-runtime.ts<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span>\n    <span class=\"dl\">\"<\/span><span class=\"s2\">--------- MIGRATE ---------<\/span><span class=\"dl\">\"<\/span><span class=\"p\">:<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">--------- MIGRATE ---------<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span>\n    <span class=\"dl\">\"<\/span><span class=\"s2\">premigrate<\/span><span class=\"dl\">\"<\/span><span class=\"p\">:<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">npx merge-prisma-schema<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span>\n    <span class=\"dl\">\"<\/span><span class=\"s2\">migrate<\/span><span class=\"dl\">\"<\/span><span class=\"p\">:<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">prisma migrate<\/span><span class=\"dl\">\"<\/span>\n  <span class=\"p\">},<\/span>\n  <span class=\"dl\">\"<\/span><span class=\"s2\">devDependencies<\/span><span class=\"dl\">\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">{<\/span>\n    <span class=\"dl\">\"<\/span><span class=\"s2\">@player-manager\/prisma<\/span><span class=\"dl\">\"<\/span><span class=\"p\">:<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">workspace:*<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span>\n    <span class=\"dl\">\"<\/span><span class=\"s2\">merge-prisma-schema<\/span><span class=\"dl\">\"<\/span><span class=\"p\">:<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">^1.0.0<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span>\n    <span class=\"dl\">\"<\/span><span class=\"s2\">prisma<\/span><span class=\"dl\">\"<\/span><span class=\"p\">:<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">catalog:<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span>\n    <span class=\"dl\">\"<\/span><span class=\"s2\">ts-node<\/span><span class=\"dl\">\"<\/span><span class=\"p\">:<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">catalog:<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span>\n    <span class=\"dl\">\"<\/span><span class=\"s2\">typescript<\/span><span class=\"dl\">\"<\/span><span class=\"p\">:<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">catalog:<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span>\n  <span class=\"p\">},<\/span>\n  <span class=\"dl\">\"<\/span><span class=\"s2\">dependencies<\/span><span class=\"dl\">\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">{<\/span>\n    <span class=\"dl\">\"<\/span><span class=\"s2\">@prisma\/client<\/span><span class=\"dl\">\"<\/span><span class=\"p\">:<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">catalog:<\/span><span class=\"dl\">\"<\/span>\n  <span class=\"p\">}<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><code>patch-generated-runtime.ts<\/code><\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight tsx\"><code><span class=\"k\">import<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">readFileSync<\/span><span class=\"p\">,<\/span> <span class=\"nx\">writeFileSync<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">fs<\/span><span class=\"dl\">\"<\/span><span class=\"p\">;<\/span>\n<span class=\"k\">import<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">join<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">path<\/span><span class=\"dl\">\"<\/span><span class=\"p\">;<\/span>\n\n<span class=\"kd\">const<\/span> <span class=\"nx\">toReplace<\/span> <span class=\"o\">=<\/span> <span class=\"s2\">`\n  const alternativePath = alternativePaths.find((altPath) =&gt; {\n    return fs.existsSync(path.join(process.cwd(), altPath, 'schema.prisma'))\n  }) ?? alternativePaths[0]\n\n  config.dirname = path.join(process.cwd(), alternativePath)\n  config.isBundled = true\n`<\/span><span class=\"p\">;<\/span>\n\n<span class=\"kd\">const<\/span> <span class=\"nx\">replaceValue<\/span> <span class=\"o\">=<\/span> <span class=\"s2\">`\n  const alternativePath = alternativePaths.find((altPath) =&gt; {\n    return fs.existsSync(path.join(process.cwd(), altPath, 'schema.prisma'))\n  }); \n\n  if(alternativePath) {\n    config.dirname = path.join(process.cwd(), alternativePath)\n  } else if(config?.generator?.output?.value) {\n    config.dirname = config.generator.output.value;\n  } else {\n    config.dirname = path.join(process.cwd(), alternativePaths[0]);\n  }\n\n  config.isBundled = true  \n`<\/span><span class=\"p\">;<\/span>\n\n<span class=\"kd\">const<\/span> <span class=\"nx\">file<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">join<\/span><span class=\"p\">(<\/span><span class=\"nx\">process<\/span><span class=\"p\">.<\/span><span class=\"nf\">cwd<\/span><span class=\"p\">(),<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">prisma<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">generated<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">index.js<\/span><span class=\"dl\">'<\/span><span class=\"p\">);<\/span>\n\n<span class=\"kd\">const<\/span> <span class=\"nx\">indexContent<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">readFileSync<\/span><span class=\"p\">(<\/span><span class=\"nx\">file<\/span><span class=\"p\">,<\/span> <span class=\"p\">{<\/span> <span class=\"na\">encoding<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">utf-8<\/span><span class=\"dl\">'<\/span><span class=\"p\">});<\/span>\n\n<span class=\"kd\">const<\/span> <span class=\"nx\">newIndexContent<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">indexContent<\/span><span class=\"p\">.<\/span><span class=\"nf\">replace<\/span><span class=\"p\">(<\/span><span class=\"nx\">toReplace<\/span><span class=\"p\">,<\/span> <span class=\"nx\">replaceValue<\/span><span class=\"p\">);<\/span>\n\n<span class=\"nf\">writeFileSync<\/span><span class=\"p\">(<\/span><span class=\"nx\">file<\/span><span class=\"p\">,<\/span> <span class=\"nx\">newIndexContent<\/span><span class=\"p\">);<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0628\u0627 \u067e\u0686\u060c \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc Prisma \u0628\u0627 \u0639\u0628\u0627\u0631\u062a \u062a\u0639\u0631\u06cc\u0641 \u0645\u06cc \u0634\u0648\u062f <code>output<\/code> \u0627\u0645\u0648\u0627\u0644 \u062a\u0646\u0638\u06cc\u0645 \u0634\u062f\u0647 \u062f\u0631 <code>schema.prisma<\/code> <\/p>\n<h2><span class=\"ez-toc-section\" id=\"%D8%A8%D8%B3%D8%AA%D9%87_%D9%86%D8%B1%D9%85_%D8%A7%D9%81%D8%B2%D8%A7%D8%B1%DB%8C_prisma_client\"><\/span>\n<p>  \u0628\u0633\u062a\u0647 \u0646\u0631\u0645 \u0627\u0641\u0632\u0627\u0631\u06cc prisma client<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0647\u0645\u0627\u0646\u0637\u0648\u0631 \u06a9\u0647 FiveM \u0641\u0642\u0637 \u0628\u0627 \u0622\u0646 \u06a9\u0627\u0631 \u0645\u06cc \u06a9\u0646\u062f <code>commonjs<\/code> \u0641\u0627\u06cc\u0644 \u0647\u0627\u06cc \u0647\u0645\u0631\u0627\u0647\u060c \u0645\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u062e\u0648\u0627\u0647\u06cc\u0645 \u06a9\u0631\u062f <code>rollup<\/code> \u0628\u0631\u0627\u06cc \u0627\u06cc\u062c\u0627\u062f \u06cc\u06a9 \u06a9\u062f \u0633\u0627\u062e\u062a\u0647 \u0634\u062f\u0647 \u0633\u0627\u0632\u06af\u0627\u0631. \u0627\u06cc\u0646 \u06a9\u062f \u0628\u0627 \u0628\u0633\u062a\u0647 \u0647\u0627\/\u0645\u0646\u0627\u0628\u0639 \u062f\u06cc\u06af\u0631 \u0628\u0647 \u0627\u0634\u062a\u0631\u0627\u06a9 \u06af\u0630\u0627\u0634\u062a\u0647 \u062e\u0648\u0627\u0647\u062f \u0634\u062f.<\/p>\n<p><code>rollup.config.mjs<\/code><\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight jsx\"><code><span class=\"k\">import<\/span> <span class=\"nx\">typescript<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">@rollup\/plugin-typescript<\/span><span class=\"dl\">\"<\/span><span class=\"p\">;<\/span>\n<span class=\"k\">import<\/span> <span class=\"nx\">commonjs<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">@rollup\/plugin-commonjs<\/span><span class=\"dl\">\"<\/span><span class=\"p\">;<\/span>\n<span class=\"k\">import<\/span> <span class=\"nx\">resolve<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">@rollup\/plugin-node-resolve<\/span><span class=\"dl\">\"<\/span><span class=\"p\">;<\/span>\n\n<span class=\"kd\">const<\/span> <span class=\"nx\">banner<\/span> <span class=\"o\">=<\/span> <span class=\"s2\">`\n  const { resolve, join } = require(\"path\");\n  const { cwd } = require(\"process\");\n\n  var __dirname = resolve();\n  var __filename = join(__dirname, \"index.js\");\n\n  process.env[\"PRISMA_QUERY_ENGINE_BINARY\"] = join(cwd(), \"resources\", \"lib\", \"prisma-orm\", \"prisma\", \"generated\", \"query-engine-windows.exe\");\n`<\/span><span class=\"p\">;<\/span>\n\n<span class=\"k\">export<\/span> <span class=\"k\">default<\/span> <span class=\"p\">{<\/span>\n  <span class=\"na\">input<\/span><span class=\"p\">:<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">.\/index.ts<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span>\n  <span class=\"na\">output<\/span><span class=\"p\">:<\/span> <span class=\"p\">{<\/span>\n    <span class=\"na\">dir<\/span><span class=\"p\">:<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">dist<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span>\n    <span class=\"na\">format<\/span><span class=\"p\">:<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">cjs<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span>\n    <span class=\"na\">sourcemap<\/span><span class=\"p\">:<\/span> <span class=\"kc\">false<\/span><span class=\"p\">,<\/span>\n    <span class=\"nx\">banner<\/span><span class=\"p\">,<\/span>\n  <span class=\"p\">},<\/span>\n  <span class=\"na\">plugins<\/span><span class=\"p\">:<\/span> <span class=\"p\">[<\/span><span class=\"nf\">resolve<\/span><span class=\"p\">(),<\/span> <span class=\"nf\">typescript<\/span><span class=\"p\">(),<\/span> <span class=\"nf\">commonjs<\/span><span class=\"p\">()],<\/span>\n<span class=\"p\">};<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0628\u0627 \u0627\u06cc\u0646 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc\u060c \u06cc\u06a9 \u0628\u0633\u062a\u0647 \u0646\u0631\u0645 \u0627\u0641\u0632\u0627\u0631\u06cc \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u06cc\u0645 \u0648 \u067e\u06cc\u0634\u0648\u0646\u062f \u0622\u0646 \u0631\u0627 \u0628\u0627 \u0628\u0631\u062e\u06cc \u0627\u0632 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0645\u0647\u0645 \u0627\u0636\u0627\u0641\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u0645:<\/p>\n<ul>\n<li>\n<code>__dirname<\/code>  \u0648 <code>__filename<\/code> \u062f\u0631 \u0632\u0645\u06cc\u0646\u0647 \u0627\u062c\u0631\u0627\u06cc \u06af\u0631\u0647 FiveM \u0648\u062c\u0648\u062f \u0646\u062f\u0627\u0631\u062f\u060c \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0645\u0627 \u0622\u0646 \u0631\u0627 \u0628\u0647 \u0635\u0648\u0631\u062a \u062f\u0633\u062a\u06cc \u062a\u0639\u0631\u06cc\u0641 \u0645\u06cc \u06a9\u0646\u06cc\u0645 \u0632\u06cc\u0631\u0627 Prisma \u0628\u0647 \u0622\u0646 \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u062f.<\/li>\n<li>\n<code>process.env[\"PRISMA_QUERY_ENGINE_BINARY\"]<\/code>  \u0645\u062d\u0644 \u0627\u062c\u0631\u0627\u06cc \u0645\u0648\u062a\u0648\u0631 \u067e\u0631\u0633 \u0648 \u062c\u0648 \u0627\u0633\u062a \u06a9\u0647 \u062f\u0631 \u067e\u0648\u0634\u0647 \u0632\u0645\u0627\u0646 \u0627\u062c\u0631\u0627 Prisma \u0627\u06cc\u062c\u0627\u062f \u0634\u062f\u0647 \u0627\u0633\u062a<\/li>\n<\/ul>\n<h2><span class=\"ez-toc-section\" id=\"%D9%86%D9%85%D9%88%D9%86%D9%87_%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87\"><\/span>\n<p>  \u0646\u0645\u0648\u0646\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u062f\u0627\u062e\u0644 <code>@player-manager\/server<\/code> \u06a9\u0647 \u06cc\u06a9 \u0628\u0633\u062a\u0647 Typescript \u0628\u0627 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc rollup \u0627\u0633\u062a \u06a9\u0647 \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u062a\u0648\u0636\u06cc\u062d \u062f\u0627\u062f\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a\u060c \u0627\u0636\u0627\u0641\u0647 \u0645\u06cc \u06a9\u0646\u0645 <code>@lib\/prisma-orm<\/code> \u0628\u0647  <code>dependencies<\/code>.<\/p>\n<p><code>server.ts<\/code><\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight tsx\"><code><span class=\"k\">import<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">prisma<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">@lib\/database<\/span><span class=\"dl\">\"<\/span>\n\n<span class=\"nf\">on<\/span><span class=\"p\">(<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">onResourceStart<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span> <span class=\"k\">async <\/span><span class=\"p\">(<\/span><span class=\"nx\">resName<\/span><span class=\"p\">:<\/span> <span class=\"kr\">string<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n  <span class=\"k\">if <\/span><span class=\"p\">(<\/span><span class=\"nx\">resName<\/span> <span class=\"o\">===<\/span> <span class=\"nc\">GetCurrentResourceName<\/span><span class=\"p\">())<\/span> <span class=\"p\">{<\/span>\n    <span class=\"kd\">const<\/span> <span class=\"nx\">players<\/span> <span class=\"o\">=<\/span> <span class=\"k\">await<\/span> <span class=\"nx\">prisma<\/span><span class=\"p\">.<\/span><span class=\"nx\">player<\/span><span class=\"p\">.<\/span><span class=\"nf\">findMany<\/span><span class=\"p\">();<\/span>\n    <span class=\"nx\">console<\/span><span class=\"p\">.<\/span><span class=\"nf\">log<\/span><span class=\"p\">(<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">players<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span> <span class=\"nx\">JSON<\/span><span class=\"p\">.<\/span><span class=\"nf\">stringify<\/span><span class=\"p\">(<\/span><span class=\"nx\">players<\/span><span class=\"p\">))<\/span>\n  <span class=\"p\">}<\/span>\n<span class=\"p\">});<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u06cc\u06a9 \u0645\u062b\u0627\u0644 \u06a9\u0627\u0645\u0644 \u0631\u0627 \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0628\u0627\u0632\u06cc\u0627\u0628\u06cc \u06a9\u0646\u06cc\u062f https:\/\/github.com\/JustinMartinDev\/experimental-rp<\/p>\n<\/p><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Summarize this content to 400 words in Persian Lang \u26a0\ufe0f \u0645\u0627 \u062f\u0631 \u0645\u0648\u0631\u062f \u0633\u0631\u0648\u0631 JavaScript\/TypeScript FiveM \u0635\u062d\u0628\u062a \u0645\u06cc \u06a9\u0646\u06cc\u0645 \u26a0\ufe0f\u26a0\ufe0f FiveM \u06cc\u06a9 \u062a\u063a\u06cc\u06cc\u0631 \u0628\u0631\u0627\u06cc Grand Theft Auto V \u0627\u0633\u062a \u06a9\u0647 \u0628\u0647 \u0634\u0645\u0627 \u0627\u0645\u06a9\u0627\u0646 \u0645\u06cc\u200c\u062f\u0647\u062f \u0628\u0647 \u0635\u0648\u0631\u062a \u0686\u0646\u062f \u0646\u0641\u0631\u0647 \u0631\u0648\u06cc \u0633\u0631\u0648\u0631\u0647\u0627\u06cc \u0627\u062e\u062a\u0635\u0627\u0635\u06cc \u0633\u0641\u0627\u0631\u0634\u06cc\u200c\u0633\u0627\u0632\u06cc \u0634\u062f\u0647 \u0628\u0627 Cfx.re \u0628\u0627\u0632\u06cc \u06a9\u0646\u06cc\u062f. \u0648\u0642\u062a\u06cc \u06cc\u06a9 \u0633\u0631\u0648\u0631 FiveM \u0631\u0627 \u062a\u0648\u0633\u0639\u0647 \u0645\u06cc\u200c\u062f\u0647\u06cc\u062f\u060c \u0627\u0633\u062a\u0641\u0627\u062f\u0647 &hellip;<\/p>\n","protected":false},"author":2,"featured_media":76432,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"fifu_image_url":"","fifu_image_alt":"","footnotes":""},"categories":[339],"tags":[],"class_list":["post-76431","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dev"],"_links":{"self":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/76431","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/comments?post=76431"}],"version-history":[{"count":0,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/76431\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media\/76432"}],"wp:attachment":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media?parent=76431"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/categories?post=76431"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/tags?post=76431"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}