{"id":29284,"date":"2023-07-05T10:52:41","date_gmt":"2023-07-05T07:22:41","guid":{"rendered":"https:\/\/nabfollower.com\/blog\/nestjs-course-lesson-04-model-and-repository-pattern-5h15\/"},"modified":"2023-07-05T10:52:41","modified_gmt":"2023-07-05T07:22:41","slug":"nestjs-course-lesson-04-model-and-repository-pattern-5h15","status":"publish","type":"post","link":"https:\/\/nabfollower.com\/blog\/nestjs-course-lesson-04-model-and-repository-pattern-5h15\/","title":{"rendered":"\u062f\u0631\u0633 04 NestJS &#8211; \u0645\u062f\u0644 \u0648 \u0627\u0644\u06af\u0648\u06cc \u0645\u062e\u0632\u0646"},"content":{"rendered":"<div data-article-id=\"1526517\" id=\"article-body\">\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=\"\u062a\u063a\u06cc\u06cc\u0631 \u0648\u0636\u0639\u06cc\u062a \u0641\u0647\u0631\u0633\u062a \u0645\u0637\u0627\u0644\u0628\"><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\/nestjs-course-lesson-04-model-and-repository-pattern-5h15\/#%DA%A9%D8%AF_%D9%85%D9%86%D8%A8%D8%B9\" >\u06a9\u062f \u0645\u0646\u0628\u0639<\/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\/nestjs-course-lesson-04-model-and-repository-pattern-5h15\/#%D8%AF%D8%B1%D8%B3_04\" >\u062f\u0631\u0633 04<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/nabfollower.com\/blog\/nestjs-course-lesson-04-model-and-repository-pattern-5h15\/#1_NestJS_%D8%B1%D8%A7_%D8%A8%D8%B1%D8%A7%DB%8C_%DA%A9%D8%A7%D8%B1_%D8%A8%D8%A7_MySQL_%D8%A7%D8%B2_%D8%B7%D8%B1%DB%8C%D9%82_Sequelize_%D9%BE%DB%8C%DA%A9%D8%B1%D8%A8%D9%86%D8%AF%DB%8C_%DA%A9%D9%86%DB%8C%D8%AF\" >1. NestJS \u0631\u0627 \u0628\u0631\u0627\u06cc \u06a9\u0627\u0631 \u0628\u0627 MySQL \u0627\u0632 \u0637\u0631\u06cc\u0642 Sequelize \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u06a9\u0646\u06cc\u062f<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/nabfollower.com\/blog\/nestjs-course-lesson-04-model-and-repository-pattern-5h15\/#%D8%AA%D9%88%D8%AC%D9%87_%D9%88%DB%8C%DA%98%D9%87_%D8%A8%D8%B1%D8%A7%DB%8C_%D9%85%D8%AF%D9%84_%D8%AF%D8%B1_%D8%A7%DB%8C%D9%86%D8%AC%D8%A7\" >\u062a\u0648\u062c\u0647 \u0648\u06cc\u0698\u0647 \u0628\u0631\u0627\u06cc \u0645\u062f\u0644 \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627<\/a><\/li><\/ul><\/li><\/ul><\/nav><\/div>\n<h2><span class=\"ez-toc-section\" id=\"%DA%A9%D8%AF_%D9%85%D9%86%D8%A8%D8%B9\"><\/span>\n<p>  \u06a9\u062f \u0645\u0646\u0628\u0639<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h2><span class=\"ez-toc-section\" id=\"%D8%AF%D8%B1%D8%B3_04\"><\/span>\n<p>  \u062f\u0631\u0633 04<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<ol>\n<li>\u0645\u0639\u0631\u0641\u06cc \u0645\u062e\u062a\u0635\u0631 \u06cc\u06a9\u06cc \u0627\u0632 ORM \u0647\u0627\u06cc \u0645\u062d\u0628\u0648\u0628 &#8211; Sequelize<\/li>\n<li>\u0628\u0627 \u0627\u0644\u06af\u0648\u06cc ActiveRecord \u0622\u0634\u0646\u0627 \u0634\u0648\u06cc\u062f<\/li>\n<li>\u0646\u062d\u0648\u0647 \u0627\u06cc\u062c\u0627\u062f \u0637\u0631\u062d \u0648\u0627\u0631\u0647 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0628\u0627 Sequelize \u062f\u0631 NestJS<\/li>\n<\/ol>\n<h3><span class=\"ez-toc-section\" id=\"1_NestJS_%D8%B1%D8%A7_%D8%A8%D8%B1%D8%A7%DB%8C_%DA%A9%D8%A7%D8%B1_%D8%A8%D8%A7_MySQL_%D8%A7%D8%B2_%D8%B7%D8%B1%DB%8C%D9%82_Sequelize_%D9%BE%DB%8C%DA%A9%D8%B1%D8%A8%D9%86%D8%AF%DB%8C_%DA%A9%D9%86%DB%8C%D8%AF\"><\/span>\n<p>  1. NestJS \u0631\u0627 \u0628\u0631\u0627\u06cc \u06a9\u0627\u0631 \u0628\u0627 MySQL \u0627\u0632 \u0637\u0631\u06cc\u0642 Sequelize \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u06a9\u0646\u06cc\u062f<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0627\u0628\u062a\u062f\u0627 \u0628\u0627\u06cc\u062f \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0631\u0627 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f<br \/>\u0646\u0627\u0645 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 : <strong>nestjs_tutorial_2023<\/strong><\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight sql\"><code><span class=\"k\">CREATE<\/span> <span class=\"k\">DATABASE<\/span> <span class=\"nv\">`nestjs_tutorial_2023`<\/span> <span class=\"nb\">CHARACTER<\/span> <span class=\"k\">SET<\/span> <span class=\"s1\">'utf8mb4'<\/span> <span class=\"k\">COLLATE<\/span> <span class=\"s1\">'utf8mb4_bin'<\/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><\/p>\n<ul>\n<li>\u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Sequelize \u0628\u0647 MYSQL \u0645\u062a\u0635\u0644 \u0634\u0648\u06cc\u062f<\/li>\n<li>\u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 TypeORM \u0628\u0647 PostgreSQL \u0645\u062a\u0635\u0644 \u0634\u0648\u06cc\u062f<\/li>\n<li>\u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Mongoose \u0628\u0647 MongoDB \u0645\u062a\u0635\u0644 \u0634\u0648\u06cc\u062f<\/li>\n<\/ul>\n<p><strong>1.1.  \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Sequelize \u0628\u0647 MYSQL \u0645\u062a\u0635\u0644 \u0634\u0648\u06cc\u062f<\/strong><\/p>\n<p>\u0628\u0633\u062a\u0647 \u0647\u0627 \u0631\u0627 \u0646\u0635\u0628 \u06a9\u0646\u06cc\u062f<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight shell\"><code>npm <span class=\"nb\">install<\/span> <span class=\"nt\">--save<\/span> @nestjs\/sequelize sequelize sequelize-typescript mysql2\nnpm <span class=\"nb\">install<\/span> <span class=\"nt\">--save-dev<\/span> @types\/sequelize\nnpm <span class=\"nb\">install<\/span> <span class=\"nt\">--save-dev<\/span> sequelize-cli\nnpx sequelize-cli init\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\u0631 \u0627\u06cc\u0646 \u0642\u0633\u0645\u062a \u0645\u06cc \u062e\u0648\u0627\u0647\u0645 3 \u0645\u0631\u062d\u0644\u0647 \u0627\u0635\u0644\u06cc \u06a9\u0627\u0631 \u0628\u0627 \u0628\u0627\u0646\u06a9 \u0647\u0627\u06cc \u0627\u0637\u0644\u0627\u0639\u0627\u062a\u06cc \u0631\u0627 \u0628\u0647 \u0634\u0645\u0627 \u0645\u0639\u0631\u0641\u06cc \u06a9\u0646\u0645:<\/p>\n<ol>\n<li>[x]  \u0627\u0631\u062a\u0628\u0627\u0637 \u0628\u0631\u0642\u0631\u0627\u0631 \u06a9\u0646\u06cc\u062f<\/li>\n<li>[x]  \u0645\u062f\u0644 \u0631\u0627 \u0627\u0639\u0644\u0627\u0645 \u06a9\u0646\u06cc\u062f<\/li>\n<li>[x]  \u0633\u0627\u062e\u062a\u0627\u0631 \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u0645\u0647\u0627\u062c\u0631\u062a \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 &#8211; \u0645\u0642\u062f\u0627\u0631\u062f\u0647\u06cc \u0627\u0648\u0644\u06cc\u0647\u060c \u0628\u0647 \u0631\u0648\u0632 \u0631\u0633\u0627\u0646\u06cc \u0637\u0631\u062d \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647<\/li>\n<\/ol>\n<blockquote>\n<p>\u0627\u062a\u0635\u0627\u0644 \u0631\u0627 \u062a\u0646\u0638\u06cc\u0645 \u06a9\u0646\u06cc\u062f<\/p>\n<\/blockquote>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight typescript\"><code><span class=\"c1\">\/\/ src\/app.module.ts<\/span>\n\n<span class=\"k\">import<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">Module<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">@nestjs\/common<\/span><span class=\"dl\">\"<\/span><span class=\"p\">;<\/span>\n<span class=\"k\">import<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">ServeStaticModule<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">@nestjs\/serve-static<\/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<span class=\"k\">import<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">PetModule<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">.\/pet\/pet.module<\/span><span class=\"dl\">\"<\/span><span class=\"p\">;<\/span>\n<span class=\"k\">import<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">SequelizeModule<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">@nestjs\/sequelize<\/span><span class=\"dl\">\"<\/span><span class=\"p\">;<\/span>\n\n<span class=\"p\">@<\/span><span class=\"nd\">Module<\/span><span class=\"p\">({<\/span>\n   <span class=\"na\">imports<\/span><span class=\"p\">:<\/span> <span class=\"p\">[<\/span>\n     <span class=\"c1\">\/\/ public folder<\/span>\n     <span class=\"nx\">ServeStaticModule<\/span><span class=\"p\">.<\/span><span class=\"nx\">forRoot<\/span><span class=\"p\">({<\/span>\n       <span class=\"na\">rootPath<\/span><span class=\"p\">:<\/span> <span class=\"nx\">join<\/span><span class=\"p\">(<\/span><span class=\"nx\">process<\/span><span class=\"p\">.<\/span><span class=\"nx\">cwd<\/span><span class=\"p\">(),<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">public<\/span><span class=\"dl\">\"<\/span><span class=\"p\">),<\/span>\n       <span class=\"na\">serveRoot<\/span><span class=\"p\">:<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">\/public<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span>\n     <span class=\"p\">}),<\/span>\n     <span class=\"nx\">PetModule<\/span><span class=\"p\">,<\/span>\n     <span class=\"nx\">SequelizeModule<\/span><span class=\"p\">.<\/span><span class=\"nx\">forRoot<\/span><span class=\"p\">({<\/span>\n       <span class=\"na\">dialect<\/span><span class=\"p\">:<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">mysql<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span>\n       <span class=\"na\">host<\/span><span class=\"p\">:<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">localhost<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span>\n       <span class=\"na\">port<\/span><span class=\"p\">:<\/span> <span class=\"mi\">3306<\/span><span class=\"p\">,<\/span>\n       <span class=\"na\">username<\/span><span class=\"p\">:<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">root<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span>\n       <span class=\"na\">password<\/span><span class=\"p\">:<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">123456<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span>\n       <span class=\"na\">database<\/span><span class=\"p\">:<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">nestjs_tutorial_2023<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span>\n       <span class=\"na\">models<\/span><span class=\"p\">:<\/span> <span class=\"p\">[],<\/span>\n     <span class=\"p\">}),<\/span>\n   <span class=\"p\">],<\/span>\n   <span class=\"na\">providers<\/span><span class=\"p\">:<\/span> <span class=\"p\">[],<\/span>\n<span class=\"p\">})<\/span>\n<span class=\"k\">export<\/span> <span class=\"kd\">class<\/span> <span class=\"nx\">AppModule<\/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<blockquote>\n<p>\u0627\u0638\u0647\u0627\u0631\u0646\u0627\u0645\u0647 \u0645\u062f\u0644<\/p>\n<\/blockquote>\n<p><strong>\u0645\u062f\u0644 \u062f\u0631 ORM:<\/strong><\/p>\n<ul>\n<li>\u0627\u06cc\u0646 \u0646\u06af\u0627\u0634\u062a \u06cc\u06a9 \u0645\u0648\u062c\u0648\u062f\u06cc\u062a \u062f\u0631 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0627\u0633\u062a\u060c \u0627\u0632 \u0637\u0631\u06cc\u0642 ORM \u0641\u0642\u0637 \u0628\u0627\u06cc\u062f \u0628\u0627 \u0645\u062a\u062f\u0647\u0627\u06cc Model \u06a9\u0627\u0631 \u06a9\u0646\u06cc\u0645\u060c \u0628\u0642\u06cc\u0647 \u0639\u0628\u0627\u0631\u0627\u062a SQL\/NoSQL \u0647\u0633\u062a\u0646\u062f \u06a9\u0647 \u062a\u0648\u0633\u0637 ORM \u0645\u062f\u06cc\u0631\u06cc\u062a \u0645\u06cc \u0634\u0648\u0646\u062f.  \u0645\u0632\u06cc\u062a \u0627\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u0646\u0648\u06cc\u0633\u06cc \u0622\u0633\u0627\u0646 \u062a\u0631 \u0648 \u0633\u0627\u0632\u06af\u0627\u0631\u062a\u0631 \u0645\u06cc \u0634\u0648\u062f.  \u0646\u06a9\u062a\u0647 \u0645\u0646\u0641\u06cc \u0627\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647 \u06af\u0627\u0647\u06cc \u0627\u0648\u0642\u0627\u062a \u0627\u062c\u0631\u0627\u06cc \u0628\u0631\u062e\u06cc \u067e\u0631\u0633 \u0648 \u062c\u0648\u0647\u0627 \u06a9\u0646\u062f \u0648 \u062f\u0634\u0648\u0627\u0631 \u0627\u0633\u062a.  \u0628\u0627 \u0627\u06cc\u0646 \u062d\u0627\u0644\u060c \u062f\u0631 \u0622\u0646 \u0635\u0648\u0631\u062a ORM \u0647\u0645\u0686\u0646\u0627\u0646 \u0627\u0632 \u0622\u0646\u0647\u0627 \u0628\u0631\u0627\u06cc \u0627\u0646\u062c\u0627\u0645 \u067e\u0631\u0633 \u0648 \u062c\u0648\u0647\u0627\u06cc SQL\/NoSQL \u0633\u0646\u062a\u06cc \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0645\u06cc \u06a9\u0646\u062f.\n<\/li>\n<\/ul>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight typescript\"><code><span class=\"dl\">\"<\/span><span class=\"s2\">use strict<\/span><span class=\"dl\">\"<\/span><span class=\"p\">;<\/span>\n\n<span class=\"k\">import<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">PetCategory<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">src\/pet\/models\/pet-category.model<\/span><span class=\"dl\">\"<\/span><span class=\"p\">;<\/span>\n\n<span class=\"cm\">\/** @type {import('sequelize-cli').Migration} *\/<\/span>\n\n<span class=\"kr\">module<\/span><span class=\"p\">.<\/span><span class=\"nx\">exports<\/span> <span class=\"o\">=<\/span> <span class=\"p\">{<\/span>\n   <span class=\"k\">async<\/span> <span class=\"nx\">up<\/span><span class=\"p\">(<\/span><span class=\"nx\">queryInterface<\/span><span class=\"p\">,<\/span> <span class=\"nx\">Sequelize<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n     <span class=\"cm\">\/**\n      * Add altering commands here.\n      *\n      * Example:\n      * await queryInterface.createTable('users', { id: Sequelize.INTEGER });\n      *\/<\/span>\n     <span class=\"k\">await<\/span> <span class=\"nx\">queryInterface<\/span><span class=\"p\">.<\/span><span class=\"nx\">createTable<\/span><span class=\"p\">(<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">pet_categories<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span> <span class=\"p\">{<\/span>\n       <span class=\"na\">id<\/span><span class=\"p\">:<\/span> <span class=\"p\">{<\/span>\n         <span class=\"na\">type<\/span><span class=\"p\">:<\/span> <span class=\"nx\">Sequelize<\/span><span class=\"p\">.<\/span><span class=\"nx\">UUID<\/span><span class=\"p\">,<\/span>\n         <span class=\"na\">defaultValue<\/span><span class=\"p\">:<\/span> <span class=\"nx\">Sequelize<\/span><span class=\"p\">.<\/span><span class=\"nx\">UUIDV4<\/span><span class=\"p\">,<\/span>\n         <span class=\"na\">primaryKey<\/span><span class=\"p\">:<\/span> <span class=\"kc\">true<\/span><span class=\"p\">,<\/span>\n       <span class=\"p\">},<\/span>\n       <span class=\"na\">name<\/span><span class=\"p\">:<\/span> <span class=\"p\">{<\/span>\n         <span class=\"na\">type<\/span><span class=\"p\">:<\/span> <span class=\"nx\">Sequelize<\/span><span class=\"p\">.<\/span><span class=\"nx\">STRING<\/span><span class=\"p\">(<\/span><span class=\"mi\">60<\/span><span class=\"p\">),<\/span>\n         <span class=\"na\">allowNull<\/span><span class=\"p\">:<\/span> <span class=\"kc\">false<\/span><span class=\"p\">,<\/span>\n       <span class=\"p\">},<\/span>\n       <span class=\"na\">createAt<\/span><span class=\"p\">:<\/span> <span class=\"p\">{<\/span>\n         <span class=\"na\">type<\/span><span class=\"p\">:<\/span> <span class=\"nx\">Sequelize<\/span><span class=\"p\">.<\/span><span class=\"nx\">DATE<\/span><span class=\"p\">,<\/span>\n         <span class=\"na\">defaultValue<\/span><span class=\"p\">:<\/span> <span class=\"nx\">Sequelize<\/span><span class=\"p\">.<\/span><span class=\"nx\">fn<\/span><span class=\"p\">(<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">NOW<\/span><span class=\"dl\">\"<\/span><span class=\"p\">),<\/span>\n       <span class=\"p\">},<\/span>\n       <span class=\"na\">updatedAt<\/span><span class=\"p\">:<\/span> <span class=\"p\">{<\/span>\n         <span class=\"na\">type<\/span><span class=\"p\">:<\/span> <span class=\"nx\">Sequelize<\/span><span class=\"p\">.<\/span><span class=\"nx\">DATE<\/span><span class=\"p\">,<\/span>\n         <span class=\"na\">defaultValue<\/span><span class=\"p\">:<\/span> <span class=\"nx\">Sequelize<\/span><span class=\"p\">.<\/span><span class=\"nx\">fn<\/span><span class=\"p\">(<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">NOW<\/span><span class=\"dl\">\"<\/span><span class=\"p\">),<\/span>\n       <span class=\"p\">},<\/span>\n     <span class=\"p\">});<\/span>\n   <span class=\"p\">},<\/span>\n\n   <span class=\"k\">async<\/span> <span class=\"nx\">down<\/span><span class=\"p\">(<\/span><span class=\"nx\">queryInterface<\/span><span class=\"p\">,<\/span> <span class=\"nx\">Sequelize<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n     <span class=\"cm\">\/**\n      * Add reverting commands here.\n      *\n      * Example:\n      * await queryInterface.dropTable('users');\n      *\/<\/span>\n     <span class=\"k\">await<\/span> <span class=\"nx\">queryInterface<\/span><span class=\"p\">.<\/span><span class=\"nx\">dropTable<\/span><span class=\"p\">(<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">pet_categories<\/span><span class=\"dl\">\"<\/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<blockquote>\n<p>\u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0631\u0627 \u0628\u0631\u0627\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0645\u062f\u0644 \u0648 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 uri \u062a\u0646\u0638\u06cc\u0645 \u06a9\u0646\u06cc\u062f<\/p>\n<\/blockquote>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight typescript\"><code><span class=\"c1\">\/\/ src\/app.module.ts<\/span>\n\n<span class=\"k\">import<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">Module<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">@nestjs\/common<\/span><span class=\"dl\">\"<\/span><span class=\"p\">;<\/span>\n<span class=\"k\">import<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">ServeStaticModule<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">@nestjs\/serve-static<\/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<span class=\"k\">import<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">PetModule<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">.\/pet\/pet.module<\/span><span class=\"dl\">\"<\/span><span class=\"p\">;<\/span>\n<span class=\"k\">import<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">SequelizeModule<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">@nestjs\/sequelize<\/span><span class=\"dl\">\"<\/span><span class=\"p\">;<\/span>\n<span class=\"k\">import<\/span> <span class=\"nx\">models<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">.\/pet\/models<\/span><span class=\"dl\">\"<\/span><span class=\"p\">;<\/span>\n\n<span class=\"p\">@<\/span><span class=\"nd\">Module<\/span><span class=\"p\">({<\/span>\n   <span class=\"na\">imports<\/span><span class=\"p\">:<\/span> <span class=\"p\">[<\/span>\n     <span class=\"c1\">\/\/ public folder<\/span>\n     <span class=\"nx\">ServeStaticModule<\/span><span class=\"p\">.<\/span><span class=\"nx\">forRoot<\/span><span class=\"p\">({<\/span>\n       <span class=\"na\">rootPath<\/span><span class=\"p\">:<\/span> <span class=\"nx\">join<\/span><span class=\"p\">(<\/span><span class=\"nx\">process<\/span><span class=\"p\">.<\/span><span class=\"nx\">cwd<\/span><span class=\"p\">(),<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">public<\/span><span class=\"dl\">\"<\/span><span class=\"p\">),<\/span>\n       <span class=\"na\">serveRoot<\/span><span class=\"p\">:<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">\/public<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span>\n     <span class=\"p\">}),<\/span>\n     <span class=\"nx\">PetModule<\/span><span class=\"p\">,<\/span>\n     <span class=\"nx\">SequelizeModule<\/span><span class=\"p\">.<\/span><span class=\"nx\">forRoot<\/span><span class=\"p\">({<\/span>\n       <span class=\"na\">uri<\/span><span class=\"p\">:<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">mysql:\/\/root:123456@localhost\/nestjs_tutorial_2023<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span>\n       <span class=\"na\">dialect<\/span><span class=\"p\">:<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">mysql<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span>\n       <span class=\"na\">models<\/span><span class=\"p\">:<\/span> <span class=\"nx\">models<\/span><span class=\"p\">,<\/span>\n     <span class=\"p\">}),<\/span>\n   <span class=\"p\">],<\/span>\n   <span class=\"na\">providers<\/span><span class=\"p\">:<\/span> <span class=\"p\">[],<\/span>\n<span class=\"p\">})<\/span>\n<span class=\"k\">export<\/span> <span class=\"kd\">class<\/span> <span class=\"nx\">AppModule<\/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<blockquote>\n<p>\u0633\u0627\u062e\u062a\u0627\u0631 \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u0645\u0647\u0627\u062c\u0631\u062a \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 &#8211; \u0645\u0642\u062f\u0627\u0631\u062f\u0647\u06cc \u0627\u0648\u0644\u06cc\u0647\u060c \u0628\u0647 \u0631\u0648\u0632 \u0631\u0633\u0627\u0646\u06cc \u0637\u0631\u062d \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647<\/p>\n<\/blockquote>\n<p>\u062a\u0648\u0636\u06cc\u062d\u06cc \u062f\u0631\u0628\u0627\u0631\u0647 \u0627\u06cc\u0646\u06a9\u0647 \u0686\u0631\u0627 \u0628\u0627\u06cc\u062f \u0627\u0632 sequelize-cli \u0628\u0631\u0627\u06cc \u0628\u0647 \u0631\u0648\u0632 \u0631\u0633\u0627\u0646\u06cc \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0645.<br \/>\u062f\u0631 \u0637\u0648\u0644 \u062a\u0648\u0633\u0639\u0647 \u067e\u0631\u0648\u0698\u0647\u060c \u0632\u0645\u0627\u0646\u06cc \u06a9\u0647 \u06cc\u06a9 \u062c\u062f\u0648\u0644 \u062f\u0627\u062f\u0647 \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f \u06a9\u0647 \u0646\u06cc\u0627\u0632 \u0628\u0647 \u0627\u0641\u0632\u0648\u062f\u0646\/\u062d\u0630\u0641 \u06cc\u0627 \u0628\u0647 \u0631\u0648\u0632 \u0631\u0633\u0627\u0646\u06cc \u0633\u062a\u0648\u0646 \u0647\u0627 \u062f\u0631 \u062c\u062f\u0648\u0644 \u062f\u0627\u0631\u062f.  \u0645\u0633\u062a\u0642\u06cc\u0645\u200c\u062a\u0631\u06cc\u0646 \u0631\u0627\u0647 \u0639\u0628\u0627\u0631\u062a\u200c\u0647\u0627\u06cc SQL \u0627\u0633\u062a\u060c \u0627\u06af\u0631\u0686\u0647 \u0647\u0646\u0648\u0632 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u0645 \u0645\u062f\u06cc\u0631\u06cc\u062a \u06a9\u0646\u06cc\u0645 \u06a9\u0647 \u06a9\u062f\u0627\u0645 \u0639\u0628\u0627\u0631\u062a \u0627\u062c\u0631\u0627 \u0634\u062f\u0647 \u06cc\u0627 \u0646\u0647 \u0648 \u0628\u0627 \u0627\u0639\u0636\u0627\u06cc \u062a\u06cc\u0645 \u06cc\u0627 \u0627\u0641\u0631\u0627\u062f\u06cc \u06a9\u0647 \u0645\u0633\u0626\u0648\u0644 \u0627\u0633\u062a\u0642\u0631\u0627\u0631 \u0645\u062d\u0635\u0648\u0644\u0627\u062a \u062f\u0631 \u0645\u062d\u06cc\u0637 \u062a\u0648\u0644\u06cc\u062f \u0647\u0633\u062a\u0646\u062f \u0628\u0647 \u0627\u0634\u062a\u0631\u0627\u06a9 \u06af\u0630\u0627\u0634\u062a\u0647 \u0634\u0648\u062f.<\/p>\n<p>\u062f\u0631 ORM \u0647\u0627\u06cc \u0645\u062f\u0631\u0646 \u0627\u0645\u0631\u0648\u0632\u06cc\u060c \u0628\u0631\u0627\u06cc \u06cc\u06a9\u0633\u0627\u0646 \u0633\u0627\u0632\u06cc \u0646\u062d\u0648\u0647 \u0648 \u0627\u0633\u062a\u0627\u0646\u062f\u0627\u0631\u062f\u0633\u0627\u0632\u06cc\u060c \u0645\u0639\u0645\u0648\u0644\u0627\u064b \u0627\u0632 cli \u0627\u06cc\u0646 ORM \u0647\u0627 \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 \u0627\u06cc\u062c\u0627\u062f\/\u0648\u06cc\u0631\u0627\u06cc\u0634 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0647\u0627\u060c \u062c\u062f\u0627\u0648\u0644 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u0645.<br \/>\u0648 \u0645\u0647\u0627\u062c\u0631\u062a \u0631\u0627 \u0627\u0632 \u0637\u0631\u06cc\u0642 \u062e\u0637\u0648\u0637 \u0641\u0631\u0645\u0627\u0646 \u0627\u0646\u062c\u0627\u0645 \u062f\u0647\u06cc\u062f.  \u0633\u0627\u062e\u062a\u0627\u0631 \u062c\u062f\u0627\u0648\u0644 \u062f\u0627\u062f\u0647 \u0627\u0632 \u0637\u0631\u06cc\u0642 \u06a9\u062f \u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u0645\u06cc \u0634\u0648\u062f &#8211; \u0628\u0631\u0627\u06cc \u0633\u0627\u0632\u06af\u0627\u0631\u06cc \u0628\u0627 \u0645\u062f\u0644 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0634\u062f\u0647 \u062a\u0648\u0633\u0637 ORM.<\/p>\n<p>\u067e\u0633 \u0627\u0632 \u0627\u062c\u0631\u0627\u06cc \u062f\u0633\u062a\u0648\u0631 \u067e\u06cc\u0634 \u0641\u0631\u0636 sequelize-cli\u060c \u0633\u0627\u062e\u062a\u0627\u0631 \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u067e\u06cc\u0634 \u0641\u0631\u0636 \u0632\u06cc\u0631 \u0631\u0627 \u062e\u0648\u0627\u0647\u06cc\u0645 \u062f\u0627\u0634\u062a.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight shell\"><code>npx sequelize-cli init\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 class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>config\n   database.json\ndb\n   models\n   seeders\n   migrations\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<blockquote>\n<p><strong>sequelizerc<\/strong><\/p>\n<\/blockquote>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight javascript\"><code><span class=\"c1\">\/\/ .sequelizerc<\/span>\n\n<span class=\"kd\">const<\/span> <span class=\"nx\">path<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">require<\/span><span class=\"p\">(<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">path<\/span><span class=\"dl\">\"<\/span><span class=\"p\">);<\/span>\n\n<span class=\"nx\">module<\/span><span class=\"p\">.<\/span><span class=\"nx\">exports<\/span> <span class=\"o\">=<\/span> <span class=\"p\">{<\/span>\n   <span class=\"na\">config<\/span><span class=\"p\">:<\/span> <span class=\"nx\">path<\/span><span class=\"p\">.<\/span><span class=\"nx\">resolve<\/span><span class=\"p\">(<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">config<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">database.json<\/span><span class=\"dl\">\"<\/span><span class=\"p\">),<\/span>\n   <span class=\"dl\">\"<\/span><span class=\"s2\">models-path<\/span><span class=\"dl\">\"<\/span><span class=\"p\">:<\/span> <span class=\"nx\">path<\/span><span class=\"p\">.<\/span><span class=\"nx\">resolve<\/span><span class=\"p\">(<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">db<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">models<\/span><span class=\"dl\">\"<\/span><span class=\"p\">),<\/span>\n   <span class=\"dl\">\"<\/span><span class=\"s2\">seeders-path<\/span><span class=\"dl\">\"<\/span><span class=\"p\">:<\/span> <span class=\"nx\">path<\/span><span class=\"p\">.<\/span><span class=\"nx\">resolve<\/span><span class=\"p\">(<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">db<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">seeders<\/span><span class=\"dl\">\"<\/span><span class=\"p\">),<\/span>\n   <span class=\"dl\">\"<\/span><span class=\"s2\">migrations-path<\/span><span class=\"dl\">\"<\/span><span class=\"p\">:<\/span> <span class=\"nx\">path<\/span><span class=\"p\">.<\/span><span class=\"nx\">resolve<\/span><span class=\"p\">(<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">db<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">migrations<\/span><span class=\"dl\">\"<\/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 \u062d\u0627\u0644\u060c \u0628\u0631\u0627\u06cc \u0645\u0637\u0627\u0628\u0642\u062a \u0628\u0627 \u0633\u0627\u062e\u062a\u0627\u0631 \u0641\u0639\u0644\u06cc \u067e\u0631\u0648\u0698\u0647\u060c \u0628\u0627\u06cc\u062f \u06a9\u0645\u06cc \u0628\u0647 \u0635\u0648\u0631\u062a \u0632\u06cc\u0631 \u062a\u0646\u0638\u06cc\u0645 \u06a9\u0646\u06cc\u0645<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>src\n     database\n         config\n             config.ts\n     migrations\n         *.ts\n     seeds\n         *.ts\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<blockquote>\n<p><strong>sequelizerc<\/strong><\/p>\n<\/blockquote>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight javascript\"><code><span class=\"kd\">const<\/span> <span class=\"nx\">path<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">require<\/span><span class=\"p\">(<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">path<\/span><span class=\"dl\">\"<\/span><span class=\"p\">);<\/span>\n\n<span class=\"nx\">module<\/span><span class=\"p\">.<\/span><span class=\"nx\">exports<\/span> <span class=\"o\">=<\/span> <span class=\"p\">{<\/span>\n   <span class=\"na\">config<\/span><span class=\"p\">:<\/span> <span class=\"nx\">path<\/span><span class=\"p\">.<\/span><span class=\"nx\">resolve<\/span><span class=\"p\">(<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">.\/dist\/database\/config\/config.js<\/span><span class=\"dl\">\"<\/span><span class=\"p\">),<\/span>\n   <span class=\"dl\">\"<\/span><span class=\"s2\">seeders-path<\/span><span class=\"dl\">\"<\/span><span class=\"p\">:<\/span> <span class=\"nx\">path<\/span><span class=\"p\">.<\/span><span class=\"nx\">resolve<\/span><span class=\"p\">(<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">.\/dist\/database\/seeders<\/span><span class=\"dl\">\"<\/span><span class=\"p\">),<\/span>\n   <span class=\"dl\">\"<\/span><span class=\"s2\">migrations-path<\/span><span class=\"dl\">\"<\/span><span class=\"p\">:<\/span> <span class=\"nx\">path<\/span><span class=\"p\">.<\/span><span class=\"nx\">resolve<\/span><span class=\"p\">(<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">.\/dist\/database\/migrations<\/span><span class=\"dl\">\"<\/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>\u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0628\u0647 \u062c\u0627\u06cc \u0627\u062c\u0631\u0627\u06cc \u0645\u0633\u062a\u0642\u06cc\u0645 \u0646\u0633\u062e\u0647 \u0645\u0646\u0628\u0639\u060c \u0628\u06cc\u0644\u062f \u0622\u0646\u0647\u0627 \u0631\u0627 \u0627\u062c\u0631\u0627 \u0645\u06cc \u06a9\u0646\u06cc\u0645<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight typescript\"><code><span class=\"c1\">\/\/ config.ts<\/span>\n<span class=\"kr\">module<\/span><span class=\"p\">.<\/span><span class=\"nx\">exports<\/span> <span class=\"o\">=<\/span> <span class=\"p\">{<\/span>\n   <span class=\"na\">production<\/span><span class=\"p\">:<\/span> <span class=\"p\">{<\/span>\n     <span class=\"na\">url<\/span><span class=\"p\">:<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">mysql:\/\/root:123456@localhost\/nestjs_tutorial_2023<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span>\n     <span class=\"na\">dialect<\/span><span class=\"p\">:<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">mysql<\/span><span class=\"dl\">\"<\/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<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight typescript\"><code><span class=\"c1\">\/\/ src\/pet\/models\/pet-category.model<\/span>\n<span class=\"k\">import<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">Column<\/span><span class=\"p\">,<\/span> <span class=\"nx\">DataType<\/span><span class=\"p\">,<\/span> <span class=\"nx\">Model<\/span><span class=\"p\">,<\/span> <span class=\"nx\">Table<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">sequelize-typescript<\/span><span class=\"dl\">\"<\/span><span class=\"p\">;<\/span>\n\n<span class=\"p\">@<\/span><span class=\"nd\">Table<\/span><span class=\"p\">({<\/span>\n   <span class=\"na\">tableName<\/span><span class=\"p\">:<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">pet_categories<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span>\n<span class=\"p\">})<\/span>\n<span class=\"k\">export<\/span> <span class=\"kd\">class<\/span> <span class=\"nx\">PetCategory<\/span> <span class=\"kd\">extends<\/span> <span class=\"nx\">Model<\/span> <span class=\"p\">{<\/span>\n   <span class=\"p\">@<\/span><span class=\"nd\">Column<\/span><span class=\"p\">({<\/span>\n     <span class=\"na\">primaryKey<\/span><span class=\"p\">:<\/span> <span class=\"kc\">true<\/span><span class=\"p\">,<\/span>\n     <span class=\"na\">type<\/span><span class=\"p\">:<\/span> <span class=\"nx\">DataType<\/span><span class=\"p\">.<\/span><span class=\"nx\">UUID<\/span><span class=\"p\">,<\/span>\n     <span class=\"na\">defaultValue<\/span><span class=\"p\">:<\/span> <span class=\"nx\">DataType<\/span><span class=\"p\">.<\/span><span class=\"nx\">UUIDV4<\/span><span class=\"p\">,<\/span>\n   <span class=\"p\">})<\/span>\n   <span class=\"nx\">id<\/span><span class=\"p\">?:<\/span> <span class=\"kr\">string<\/span><span class=\"p\">;<\/span>\n\n   <span class=\"p\">@<\/span><span class=\"nd\">Column<\/span><span class=\"p\">({<\/span>\n     <span class=\"na\">type<\/span><span class=\"p\">:<\/span> <span class=\"nx\">DataType<\/span><span class=\"p\">.<\/span><span class=\"nx\">STRING<\/span><span class=\"p\">(<\/span><span class=\"mi\">60<\/span><span class=\"p\">),<\/span>\n     <span class=\"na\">allowNull<\/span><span class=\"p\">:<\/span> <span class=\"kc\">false<\/span><span class=\"p\">,<\/span>\n   <span class=\"p\">})<\/span>\n   <span class=\"nx\">name<\/span><span class=\"p\">:<\/span> <span class=\"kr\">string<\/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<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight typescript\"><code><span class=\"c1\">\/\/ src\\database\\migrations\\20230704043449-create-pet-category-table.ts<\/span>\n<span class=\"dl\">\"<\/span><span class=\"s2\">use strict<\/span><span class=\"dl\">\"<\/span><span class=\"p\">;<\/span>\n\n<span class=\"k\">import<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">PetCategory<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">src\/pet\/models\/pet-category.model<\/span><span class=\"dl\">\"<\/span><span class=\"p\">;<\/span>\n\n<span class=\"cm\">\/** @type {import('sequelize-cli').Migration} *\/<\/span>\n\n<span class=\"kr\">module<\/span><span class=\"p\">.<\/span><span class=\"nx\">exports<\/span> <span class=\"o\">=<\/span> <span class=\"p\">{<\/span>\n   <span class=\"k\">async<\/span> <span class=\"nx\">up<\/span><span class=\"p\">(<\/span><span class=\"nx\">queryInterface<\/span><span class=\"p\">,<\/span> <span class=\"nx\">Sequelize<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n     <span class=\"cm\">\/**\n      * Add altering commands here.\n      *\n      * Example:\n      * await queryInterface.createTable('users', { id: Sequelize.INTEGER });\n      *\/<\/span>\n     <span class=\"k\">await<\/span> <span class=\"nx\">queryInterface<\/span><span class=\"p\">.<\/span><span class=\"nx\">createTable<\/span><span class=\"p\">(<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">pet_categories<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span> <span class=\"p\">{<\/span>\n       <span class=\"na\">id<\/span><span class=\"p\">:<\/span> <span class=\"p\">{<\/span>\n         <span class=\"na\">type<\/span><span class=\"p\">:<\/span> <span class=\"nx\">Sequelize<\/span><span class=\"p\">.<\/span><span class=\"nx\">UUID<\/span><span class=\"p\">,<\/span>\n         <span class=\"na\">defaultValue<\/span><span class=\"p\">:<\/span> <span class=\"nx\">Sequelize<\/span><span class=\"p\">.<\/span><span class=\"nx\">UUIDV4<\/span><span class=\"p\">,<\/span>\n         <span class=\"na\">primaryKey<\/span><span class=\"p\">:<\/span> <span class=\"kc\">true<\/span><span class=\"p\">,<\/span>\n       <span class=\"p\">},<\/span>\n       <span class=\"na\">name<\/span><span class=\"p\">:<\/span> <span class=\"p\">{<\/span>\n         <span class=\"na\">type<\/span><span class=\"p\">:<\/span> <span class=\"nx\">Sequelize<\/span><span class=\"p\">.<\/span><span class=\"nx\">STRING<\/span><span class=\"p\">(<\/span><span class=\"mi\">60<\/span><span class=\"p\">),<\/span>\n         <span class=\"na\">allowNull<\/span><span class=\"p\">:<\/span> <span class=\"kc\">false<\/span><span class=\"p\">,<\/span>\n       <span class=\"p\">},<\/span>\n     <span class=\"p\">});<\/span>\n   <span class=\"p\">},<\/span>\n\n   <span class=\"k\">async<\/span> <span class=\"nx\">down<\/span><span class=\"p\">(<\/span><span class=\"nx\">queryInterface<\/span><span class=\"p\">,<\/span> <span class=\"nx\">Sequelize<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n     <span class=\"cm\">\/**\n      * Add reverting commands here.\n      *\n      * Example:\n      * await queryInterface.dropTable('users');\n      *\/<\/span>\n     <span class=\"k\">await<\/span> <span class=\"nx\">queryInterface<\/span><span class=\"p\">.<\/span><span class=\"nx\">dropTable<\/span><span class=\"p\">(<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">pet_categories<\/span><span class=\"dl\">\"<\/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<h3><span class=\"ez-toc-section\" id=\"%D8%AA%D9%88%D8%AC%D9%87_%D9%88%DB%8C%DA%98%D9%87_%D8%A8%D8%B1%D8%A7%DB%8C_%D9%85%D8%AF%D9%84_%D8%AF%D8%B1_%D8%A7%DB%8C%D9%86%D8%AC%D8%A7\"><\/span>\n<p>  \u062a\u0648\u062c\u0647 \u0648\u06cc\u0698\u0647 \u0628\u0631\u0627\u06cc \u0645\u062f\u0644 \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0627\u0632 \u0622\u0646\u062c\u0627\u06cc\u06cc \u06a9\u0647 \u0645\u062f\u0644 PetCategory \u062f\u0631 \u0645\u062b\u0627\u0644 \u0627\u0632 Model \u0627\u0632 sequelise \u0628\u0647 \u0627\u0631\u062b \u0645\u06cc \u0628\u0631\u062f\u060c \u0628\u0631\u062e\u06cc \u0627\u0632 \u0641\u06cc\u0644\u062f\u0647\u0627\u06cc \u0627\u0632 \u067e\u06cc\u0634 \u062a\u0639\u0631\u06cc\u0641 \u0634\u062f\u0647 \u0631\u0627 \u0628\u0647 \u0627\u0631\u062b \u0645\u06cc \u0628\u0631\u062f\u060c \u0627\u06af\u0631\u0686\u0647 \u062f\u0631 \u06a9\u062f \u0645\u062f\u0644 PetCategory \u0645\u0627 \u0622\u0646\u0647\u0627 \u0631\u0627 \u0645\u0634\u0627\u0647\u062f\u0647 \u0646\u0645\u06cc \u06a9\u0646\u06cc\u0645.<br \/>\u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646\u060c \u0647\u0646\u06af\u0627\u0645 \u0627\u06cc\u062c\u0627\u062f \u06cc\u06a9 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0645\u0647\u0627\u062c\u0631\u062a \u0628\u0631\u0627\u06cc PetCategory\u060c \u0628\u0627\u06cc\u062f \u0628\u0647 \u0627\u06cc\u0646 \u062f\u0648 \u0633\u062a\u0648\u0646 \u067e\u06cc\u0634 \u0641\u0631\u0636 \u062a\u0648\u062c\u0647 \u06a9\u0646\u06cc\u062f.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight typescript\"><code><span class=\"k\">export<\/span> <span class=\"kr\">declare<\/span> <span class=\"kd\">abstract<\/span> <span class=\"kd\">class<\/span> <span class=\"nx\">Model<\/span><span class=\"o\">&lt;<\/span><span class=\"nx\">TModelAttributes<\/span> <span class=\"kd\">extends<\/span> <span class=\"p\">{}<\/span> <span class=\"o\">=<\/span> <span class=\"kr\">any<\/span><span class=\"p\">,<\/span> <span class=\"nx\">TCreationAttributes<\/span> <span class=\"kd\">extends<\/span> <span class=\"p\">{}<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">TModelAttributes<\/span><span class=\"o\">&gt;<\/span> <span class=\"kd\">extends<\/span> <span class=\"nx\">OriginModel<\/span><span class=\"o\">&lt;<\/span><span class=\"nx\">TModelAttributes<\/span><span class=\"p\">,<\/span> <span class=\"nx\">TCreationAttributes<\/span><span class=\"o\">&gt;<\/span> <span class=\"p\">{<\/span>\n     <span class=\"nx\">id<\/span><span class=\"p\">?:<\/span> <span class=\"kr\">number<\/span> <span class=\"o\">|<\/span> <span class=\"kr\">any<\/span><span class=\"p\">;<\/span>\n     <span class=\"nl\">createAt<\/span><span class=\"p\">?:<\/span> <span class=\"nb\">Date<\/span> <span class=\"o\">|<\/span> <span class=\"kr\">any<\/span><span class=\"p\">;<\/span>\n     <span class=\"nl\">updatedAt<\/span><span class=\"p\">?:<\/span> <span class=\"nb\">Date<\/span> <span class=\"o\">|<\/span> <span class=\"kr\">any<\/span><span class=\"p\">;<\/span>\n     <span class=\"nl\">deletedAt<\/span><span class=\"p\">?:<\/span> <span class=\"nb\">Date<\/span> <span class=\"o\">|<\/span> <span class=\"kr\">any<\/span><span class=\"p\">;<\/span>\n     <span class=\"nl\">version<\/span><span class=\"p\">?:<\/span> <span class=\"kr\">number<\/span> <span class=\"o\">|<\/span> <span class=\"kr\">any<\/span><span class=\"p\">;<\/span>\n     <span class=\"k\">static<\/span> <span class=\"na\">isInitialized<\/span><span class=\"p\">:<\/span> <span class=\"nx\">boolean<\/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><strong>\u0628\u0631\u062e\u06cc \u0627\u0632 \u062f\u0633\u062a\u0648\u0631\u0627\u062a \u0631\u0627\u06cc\u062c<\/strong><\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight shell\"><code><span class=\"nv\">$ <\/span>npx sequelize-cli <span class=\"nt\">--help<\/span>\n\nSequelize CLI <span class=\"o\">[<\/span>Node: 16.19.1, CLI: 6.6.1, ORM: 6.32.1]\n\nsequelize &lt;<span class=\"nb\">command<\/span><span class=\"o\">&gt;<\/span>\n\nCommands:\n   sequelize db:migrate Run pending migrations\n   sequelize db:migrate:schema:timestamps:add Update migration table to have timestamps\n   sequelize db:migrate:status List the status of all migrations\n   sequelize db:migrate:undo Reverts a migration\n   sequelize db:migrate:undo:all Revert all migrations ran\n   sequelize db:seed Run specified seeder\n   sequelize db:seed:undo Deletes data from the database\n   sequelize db:seed:all Run every seeder\n   sequelize db:seed:undo:all Deletes data from the database\n   sequelize db:create Create database specified by configuration\n   sequelize db:drop Drop database specified by configuration\n   sequelize init Initializes project\n   sequelize init:config Initializes configuration\n   sequelize init:migrations Initializes migrations\n   sequelize init:models Initialize models\n   sequelize init:seeders Initializes seeders\n   sequelize migration:generate Generates a new migration file\n   sequelize migration:create Generates a new migration file\n   sequelize model:generate Generates a model and its migration\n   sequelize model:create Generates a model and its migration\n   sequelize seed:generate Generates a new seed file\n   sequelize seed:create Generates a new seed file\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><strong>\u0645\u0646 \u0645\u06cc \u062e\u0648\u0627\u0647\u0645 \u06cc\u06a9 \u062f\u0633\u062a\u0648\u0631 \u0645\u062b\u0627\u0644 \u0628\u0631\u0627\u06cc \u0627\u06cc\u062c\u0627\u062f \u06cc\u06a9 \u0641\u0627\u06cc\u0644 \u0645\u0647\u0627\u062c\u0631\u062a\u060c \u0633\u067e\u0633 \u0633\u0627\u062e\u062a \u0648 \u0627\u062c\u0631\u0627<\/strong><\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight shell\"><code><span class=\"c\"># create migration<\/span>\nnpx sequelize-cli migration:create <span class=\"nt\">--name<\/span> create-pet-category-table <span class=\"nt\">--migrations-path<\/span> .\/src\/database\/migrations\n<span class=\"c\"># build<\/span>\nnpm run build\n<span class=\"c\"># run migration<\/span>\nnpx sequelize-cli db:migrate <span class=\"nt\">--env<\/span> production\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>\u062a\u0648\u062c\u0647 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f \u06a9\u0647 \u0627\u06af\u0631 env \u0645\u0634\u062e\u0635 \u0646\u0634\u062f\u0647 \u0628\u0627\u0634\u062f\u060c \u067e\u06cc\u0634 \u0641\u0631\u0636 \u062a\u0648\u0633\u0639\u0647 \u0627\u0633\u062a.  \u0647\u0645\u0627\u0646\u0637\u0648\u0631 \u06a9\u0647 \u062f\u0631 \u0641\u0627\u06cc\u0644 \u06a9\u0627\u0646\u0641\u06cc\u06af \u0628\u0627\u0644\u0627 \u0645\u0627 \u0641\u0642\u0637 \u06cc\u06a9 \u0645\u062d\u06cc\u0637 \u0631\u0627 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u062a\u0648\u0644\u06cc\u062f \u062a\u0646\u0638\u06cc\u0645 \u06a9\u0631\u062f\u06cc\u0645.  \u0648 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0628\u0627 \u0645\u062a\u063a\u06cc\u0631\u0647\u0627\u06cc \u0645\u062d\u06cc\u0637\u06cc \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646 \u062e\u0648\u0627\u0647\u0646\u062f \u0634\u062f.<\/p>\n<p>\u067e\u0633 \u0627\u0632 \u0627\u062c\u0631\u0627\u06cc migrate\u060c \u0627\u06a9\u0646\u0648\u0646 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u0631\u0627 \u06a9\u0647 \u062e\u0648\u0627\u0647\u06cc\u0645 \u062f\u06cc\u062f \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u062f<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/nabfollower.com\/blog\/wp-content\/uploads\/2023\/07\/1688541760_821_\u062f\u0631\u0633-04-NestJS-\u0645\u062f\u0644-\u0648-\u0627\u0644\u06af\u0648\u06cc-\u0645\u062e\u0632\u0646.png\" alt=\"\u062a\u0635\u0648\u06cc\u0631\" loading=\"lazy\" width=\"800\" height=\"354\" title=\"\"><br \/><img decoding=\"async\" src=\"https:\/\/nabfollower.com\/blog\/wp-content\/uploads\/2023\/07\/1688541760_256_\u062f\u0631\u0633-04-NestJS-\u0645\u062f\u0644-\u0648-\u0627\u0644\u06af\u0648\u06cc-\u0645\u062e\u0632\u0646.png\" alt=\"\u062a\u0635\u0648\u06cc\u0631\" loading=\"lazy\" width=\"785\" height=\"195\" title=\"\"><\/p>\n<p>\u062f\u0631 \u0645\u0631\u062d\u0644\u0647 \u0628\u0639\u062f\u060c \u0645\u0627 \u0634\u0631\u0648\u0639 \u0628\u0647 \u0622\u0632\u0645\u0627\u06cc\u0634 \u0628\u0631\u062e\u06cc \u0627\u0632 \u0631\u0648\u0634 \u0647\u0627\u06cc \u0627\u0635\u0644\u06cc \u0645\u062f\u0644 \u0645\u06cc \u06a9\u0646\u06cc\u0645: \u0627\u0641\u0632\u0648\u062f\u0646\u060c \u0628\u0647 \u0631\u0648\u0632 \u0631\u0633\u0627\u0646\u06cc\u060c \u062d\u0630\u0641\u060c \u062c\u0633\u062a\u062c\u0648<\/p>\n<p>\u06cc\u06a9 \u0646\u06a9\u062a\u0647 \u06a9\u0648\u0686\u06a9 \u0647\u0646\u06af\u0627\u0645 \u0627\u062f\u0627\u0645\u0647 \u062f\u0631\u0633 \u0628\u0627 \u0645\u062b\u0627\u0644 Pet Category \u0641\u0639\u0644\u06cc\u060c \u0628\u0627\u06cc\u062f \u0645\u062f\u0644 PetCategory \u0631\u0627 \u06a9\u0645\u06cc \u0628\u0647 \u0631\u0648\u0632 \u06a9\u0646\u06cc\u0645\u060c \u0628\u0647 \u062c\u0627\u06cc \u0633\u062a\u0648\u0646 \u0639\u0646\u0648\u0627\u0646 -> \u0628\u0631\u0627\u06cc \u0633\u0627\u0632\u06af\u0627\u0631\u06cc \u0628\u0627 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u062f\u0631 \u0627\u06cc\u0646 \u0632\u0645\u0627\u0646 \u0628\u0647 \u0646\u0627\u0645 \u0633\u062a\u0648\u0646 \u062a\u063a\u06cc\u06cc\u0631 \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<blockquote>\n<p>PetCategory \u0631\u0627 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f<\/p>\n<\/blockquote>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight typescript\"><code><span class=\"k\">import<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">PetCategory<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">src\/pet\/models\/pet-category.model<\/span><span class=\"dl\">\"<\/span><span class=\"p\">;<\/span>\n<span class=\"k\">await<\/span> <span class=\"nx\">PetCategory<\/span><span class=\"p\">.<\/span><span class=\"nx\">create<\/span><span class=\"p\">({<\/span> <span class=\"p\">...<\/span><span class=\"nx\">object<\/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<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight typescript\"><code><span class=\"p\">@<\/span><span class=\"nd\">Controller<\/span><span class=\"p\">(<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">admin\/pet-categories<\/span><span class=\"dl\">\"<\/span><span class=\"p\">)<\/span>\n<span class=\"k\">export<\/span> <span class=\"kd\">class<\/span> <span class=\"nx\">ManagePetCategoryController<\/span> <span class=\"p\">{<\/span>\n   <span class=\"p\">@<\/span><span class=\"nd\">Post<\/span><span class=\"p\">(<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">create<\/span><span class=\"dl\">\"<\/span><span class=\"p\">)<\/span>\n   <span class=\"p\">@<\/span><span class=\"nd\">Render<\/span><span class=\"p\">(<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">pet\/admin\/manage-pet-category\/create<\/span><span class=\"dl\">\"<\/span><span class=\"p\">)<\/span>\n   <span class=\"p\">@<\/span><span class=\"nd\">FormDataRequest<\/span><span class=\"p\">()<\/span>\n   <span class=\"k\">async<\/span> <span class=\"nx\">create<\/span><span class=\"p\">(@<\/span><span class=\"nd\">Body<\/span><span class=\"p\">()<\/span> <span class=\"nx\">createPetCategoryDto<\/span><span class=\"p\">:<\/span> <span class=\"nx\">CreatePetCategoryDto<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n     <span class=\"kd\">const<\/span> <span class=\"nx\">data<\/span> <span class=\"o\">=<\/span> <span class=\"p\">{<\/span>\n       <span class=\"na\">mode<\/span><span class=\"p\">:<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">create<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span>\n     <span class=\"p\">};<\/span>\n     <span class=\"c1\">\/\/ validation<\/span>\n     <span class=\"kd\">const<\/span> <span class=\"nx\">object<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">plainToInstance<\/span><span class=\"p\">(<\/span><span class=\"nx\">CreatePetCategoryDto<\/span><span class=\"p\">,<\/span> <span class=\"nx\">createPetCategoryDto<\/span><span class=\"p\">);<\/span>\n\n     <span class=\"c1\">\/\/ ...<\/span>\n\n     <span class=\"c1\">\/\/ set value and show success message<\/span>\n     <span class=\"nb\">Reflect<\/span><span class=\"p\">.<\/span><span class=\"kd\">set<\/span><span class=\"p\">(<\/span><span class=\"nx\">data<\/span><span class=\"p\">,<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">values<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span> <span class=\"nx\">object<\/span><span class=\"p\">);<\/span>\n\n     <span class=\"c1\">\/\/ create PetCategory<\/span>\n     <span class=\"kd\">const<\/span> <span class=\"nx\">newPetCategory<\/span> <span class=\"o\">=<\/span> <span class=\"k\">await<\/span> <span class=\"nx\">PetCategory<\/span><span class=\"p\">.<\/span><span class=\"nx\">create<\/span><span class=\"p\">({<\/span> <span class=\"p\">...<\/span><span class=\"nx\">object<\/span> <span class=\"p\">});<\/span>\n\n     <span class=\"nb\">Reflect<\/span><span class=\"p\">.<\/span><span class=\"kd\">set<\/span><span class=\"p\">(<\/span>\n       <span class=\"nx\">data<\/span><span class=\"p\">,<\/span>\n       <span class=\"dl\">\"<\/span><span class=\"s2\">success<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span>\n       <span class=\"s2\">`Pet Category : <\/span><span class=\"p\">${<\/span><span class=\"nx\">newPetCategory<\/span><span class=\"p\">.<\/span><span class=\"nx\">id<\/span><span class=\"p\">}<\/span><span class=\"s2\"> - <\/span><span class=\"p\">${<\/span><span class=\"nx\">newPetCategory<\/span><span class=\"p\">.<\/span><span class=\"nx\">name<\/span><span class=\"p\">}<\/span><span class=\"s2\"> has been created!`<\/span>\n     <span class=\"p\">);<\/span>\n     <span class=\"c1\">\/\/ success<\/span>\n     <span class=\"k\">return<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">data<\/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>\u067e\u0633 \u0627\u0632 \u0627\u062c\u0631\u0627\u06cc http:\/\/localhost:3000\/admin\/pet-categories\/create \u0646\u062a\u0627\u06cc\u062c \u0632\u06cc\u0631 \u0631\u0627 \u062f\u0631\u06cc\u0627\u0641\u062a \u0645\u06cc \u06a9\u0646\u06cc\u0645<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/nabfollower.com\/blog\/wp-content\/uploads\/2023\/07\/1688541760_344_\u062f\u0631\u0633-04-NestJS-\u0645\u062f\u0644-\u0648-\u0627\u0644\u06af\u0648\u06cc-\u0645\u062e\u0632\u0646.png\" alt=\"\u062a\u0635\u0648\u06cc\u0631\" loading=\"lazy\" width=\"800\" height=\"329\" title=\"\"><\/p>\n<p>\u0639\u0644\u0627\u0648\u0647 \u0628\u0631 \u0627\u06cc\u0646\u060c Sequelize \u0647\u0645\u0686\u0646\u06cc\u0646 \u0627\u0632 \u0634\u0645\u0627 \u0628\u0631\u0627\u06cc \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0645\u06cc\u200c\u06a9\u0646\u062f \u062a\u0627 \u0628\u062a\u0648\u0627\u0646\u06cc\u062f \u062c\u0632\u0626\u06cc\u0627\u062a \u0639\u0628\u0627\u0631\u0627\u062a sql \u062a\u0648\u0644\u06cc\u062f \u0634\u062f\u0647 \u062a\u0648\u0633\u0637 ORM \u0631\u0627 \u0645\u0634\u0627\u0647\u062f\u0647 \u06a9\u0646\u06cc\u062f.  \u0645\u0642\u062f\u0627\u0631\u06cc \u062f\u0631 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 \u0627\u062a\u0635\u0627\u0644 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u062f\u0631 \u0645\u0627\u0698\u0648\u0644 \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0627 \u062a\u063a\u06cc\u06cc\u0631 \u062f\u0647\u06cc\u062f.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight typescript\"><code><span class=\"nx\">SequelizeModule<\/span><span class=\"p\">.<\/span><span class=\"nx\">forRoot<\/span><span class=\"p\">({<\/span>\n   <span class=\"na\">uri<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">mysql:\/\/root:123456@localhost\/nestjs_tutorial_2023<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span>\n   <span class=\"na\">dialect<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">mysql<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span>\n   <span class=\"na\">models<\/span><span class=\"p\">:<\/span> <span class=\"nx\">models<\/span><span class=\"p\">,<\/span>\n   <span class=\"na\">logging<\/span><span class=\"p\">:<\/span> <span class=\"nx\">console<\/span><span class=\"p\">.<\/span><span class=\"nx\">log<\/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><img decoding=\"async\" src=\"https:\/\/nabfollower.com\/blog\/wp-content\/uploads\/2023\/07\/1688541760_629_\u062f\u0631\u0633-04-NestJS-\u0645\u062f\u0644-\u0648-\u0627\u0644\u06af\u0648\u06cc-\u0645\u062e\u0632\u0646.png\" alt=\"\u062a\u0635\u0648\u06cc\u0631\" loading=\"lazy\" width=\"800\" height=\"239\" title=\"\"><\/p>\n<blockquote>\n<p>\u062c\u0633\u062a\u062c\u0648\u06cc PetCategory &#8211; \u0644\u06cc\u0633\u062a<\/p>\n<\/blockquote>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight typescript\"><code><span class=\"p\">@<\/span><span class=\"nd\">Controller<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">admin\/pet-categories<\/span><span class=\"dl\">'<\/span><span class=\"p\">)<\/span>\n<span class=\"k\">export<\/span> <span class=\"kd\">class<\/span> <span class=\"nx\">ManagePetCategoryController<\/span> <span class=\"p\">{<\/span>\n   <span class=\"p\">@<\/span><span class=\"nd\">Get<\/span><span class=\"p\">(<\/span><span class=\"dl\">''<\/span><span class=\"p\">)<\/span>\n   <span class=\"p\">@<\/span><span class=\"nd\">Render<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">pet\/admin\/manage-pet-category\/list<\/span><span class=\"dl\">'<\/span><span class=\"p\">)<\/span>\n   <span class=\"k\">async<\/span> <span class=\"nx\">getList<\/span><span class=\"p\">()<\/span> <span class=\"p\">{<\/span>\n     <span class=\"kd\">const<\/span> <span class=\"nx\">petCategories<\/span> <span class=\"o\">=<\/span> <span class=\"k\">await<\/span> <span class=\"nx\">PetCategory<\/span><span class=\"p\">.<\/span><span class=\"nx\">findAll<\/span><span class=\"p\">();<\/span>\n     <span class=\"k\">return<\/span> <span class=\"p\">{<\/span>\n       <span class=\"nx\">petCategories<\/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<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight html\"><code><span class=\"nt\">&lt;<\/span><span class=\"err\">%<\/span><span class=\"na\">-<\/span> <span class=\"na\">include<\/span><span class=\"err\">('<\/span><span class=\"na\">layouts<\/span><span class=\"err\">\/<\/span><span class=\"na\">admin<\/span><span class=\"err\">\/<\/span><span class=\"na\">header<\/span><span class=\"err\">');<\/span> <span class=\"err\">%<\/span><span class=\"nt\">&gt;<\/span>\n<span class=\"nt\">&lt;section<\/span> <span class=\"na\">class=<\/span><span class=\"s\">\"col-12\"<\/span><span class=\"nt\">&gt;<\/span>\n   <span class=\"nt\">&lt;div<\/span> <span class=\"na\">class=<\/span><span class=\"s\">\"card\"<\/span><span class=\"nt\">&gt;<\/span>\n     <span class=\"nt\">&lt;div<\/span> <span class=\"na\">class=<\/span><span class=\"s\">\"card-body\"<\/span><span class=\"nt\">&gt;<\/span>\n       <span class=\"nt\">&lt;h5<\/span> <span class=\"na\">class=<\/span><span class=\"s\">\"card-title\"<\/span><span class=\"nt\">&gt;<\/span>List Pet Categories<span class=\"nt\">&lt;\/h5&gt;<\/span>\n       <span class=\"nt\">&lt;div<\/span> <span class=\"na\">class=<\/span><span class=\"s\">\"table-responsive\"<\/span><span class=\"nt\">&gt;<\/span>\n         <span class=\"nt\">&lt;table<\/span> <span class=\"na\">class=<\/span><span class=\"s\">\"table table-light table-striped\"<\/span><span class=\"nt\">&gt;<\/span>\n           <span class=\"nt\">&lt;thead&gt;<\/span>\n             <span class=\"nt\">&lt;tr&gt;<\/span>\n               <span class=\"nt\">&lt;th<\/span> <span class=\"na\">scope=<\/span><span class=\"s\">\"col\"<\/span> <span class=\"na\">style=<\/span><span class=\"s\">\"width: 360px\"<\/span><span class=\"nt\">&gt;<\/span>ID<span class=\"nt\">&lt;\/th&gt;<\/span>\n               <span class=\"nt\">&lt;th<\/span> <span class=\"na\">scope=<\/span><span class=\"s\">\"col\"<\/span><span class=\"nt\">&gt;<\/span>Name<span class=\"nt\">&lt;\/th&gt;<\/span>\n             <span class=\"nt\">&lt;\/tr&gt;<\/span>\n           <span class=\"nt\">&lt;\/thead&gt;<\/span>\n           <span class=\"nt\">&lt;tbody&gt;<\/span>\n             <span class=\"nt\">&lt;<\/span><span class=\"err\">%<\/span> <span class=\"na\">petCategories.forEach(petCategory =<\/span><span class=\"err\">&gt; <\/span><span class=\"s\">{<\/span> <span class=\"err\">%<\/span><span class=\"nt\">&gt;<\/span>\n             <span class=\"nt\">&lt;tr<\/span> <span class=\"na\">class=<\/span><span class=\"s\">\"\"<\/span><span class=\"nt\">&gt;<\/span>\n               <span class=\"nt\">&lt;td&gt;&lt;<\/span><span class=\"err\">%=<\/span> <span class=\"na\">petCategory.id<\/span> <span class=\"err\">%<\/span><span class=\"nt\">&gt;&lt;\/td&gt;<\/span>\n               <span class=\"nt\">&lt;td&gt;&lt;<\/span><span class=\"err\">%=<\/span> <span class=\"na\">petCategory.name<\/span> <span class=\"err\">%<\/span><span class=\"nt\">&gt;&lt;\/td&gt;<\/span>\n             <span class=\"nt\">&lt;\/tr&gt;<\/span>\n             <span class=\"nt\">&lt;<\/span><span class=\"err\">%<\/span> <span class=\"err\">})<\/span> <span class=\"err\">%<\/span><span class=\"nt\">&gt;<\/span>\n           <span class=\"nt\">&lt;\/tbody&gt;<\/span>\n         <span class=\"nt\">&lt;\/table&gt;<\/span>\n       <span class=\"nt\">&lt;\/div&gt;<\/span>\n     <span class=\"nt\">&lt;\/div&gt;<\/span>\n   <span class=\"nt\">&lt;\/div&gt;<\/span>\n<span class=\"nt\">&lt;\/section&gt;<\/span>\n<span class=\"nt\">&lt;<\/span><span class=\"err\">%<\/span><span class=\"na\">-<\/span> <span class=\"na\">include<\/span><span class=\"err\">('<\/span><span class=\"na\">layouts<\/span><span class=\"err\">\/<\/span><span class=\"na\">admin<\/span><span class=\"err\">\/<\/span><span class=\"na\">footer<\/span><span class=\"err\">');<\/span> <span class=\"err\">%<\/span><span class=\"nt\">&gt;<\/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><img decoding=\"async\" src=\"https:\/\/nabfollower.com\/blog\/wp-content\/uploads\/2023\/07\/1688541761_283_\u062f\u0631\u0633-04-NestJS-\u0645\u062f\u0644-\u0648-\u0627\u0644\u06af\u0648\u06cc-\u0645\u062e\u0632\u0646.png\" alt=\"\u062a\u0635\u0648\u06cc\u0631\" loading=\"lazy\" width=\"613\" height=\"362\" title=\"\"><\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight typescript\"><code><span class=\"c1\">\/\/ find all<\/span>\n<span class=\"kd\">const<\/span> <span class=\"nx\">petCategories<\/span> <span class=\"o\">=<\/span> <span class=\"k\">await<\/span> <span class=\"nx\">PetCategory<\/span><span class=\"p\">.<\/span><span class=\"nx\">findAll<\/span><span class=\"p\">();<\/span>\n<span class=\"c1\">\/\/ delete<\/span>\n<span class=\"k\">await<\/span> <span class=\"nx\">PetCategory<\/span><span class=\"p\">.<\/span><span class=\"nx\">destroy<\/span><span class=\"p\">({<\/span> <span class=\"na\">where<\/span><span class=\"p\">:<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">id<\/span> <span class=\"p\">}<\/span> <span class=\"p\">});<\/span>\n<span class=\"c1\">\/\/ create<\/span>\n<span class=\"kd\">const<\/span> <span class=\"nx\">newPetCategory<\/span> <span class=\"o\">=<\/span> <span class=\"k\">await<\/span> <span class=\"nx\">PetCategory<\/span><span class=\"p\">.<\/span><span class=\"nx\">create<\/span><span class=\"p\">({<\/span> <span class=\"p\">...<\/span><span class=\"nx\">object<\/span> <span class=\"p\">});<\/span>\n<span class=\"c1\">\/\/ find by primary key<\/span>\n<span class=\"kd\">const<\/span> <span class=\"nx\">petCategory<\/span> <span class=\"o\">=<\/span> <span class=\"k\">await<\/span> <span class=\"nx\">PetCategory<\/span><span class=\"p\">.<\/span><span class=\"nx\">findByPk<\/span><span class=\"p\">(<\/span><span class=\"nx\">id<\/span><span class=\"p\">);<\/span>\n<span class=\"c1\">\/\/ update<\/span>\n<span class=\"k\">await<\/span> <span class=\"nx\">petCategory<\/span><span class=\"p\">.<\/span><span class=\"nx\">update<\/span><span class=\"p\">(<\/span><span class=\"nx\">object<\/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>\u06a9\u062f \u0645\u0646\u0628\u0639 \u06a9\u0646\u062a\u0631\u0644\u0631\u0647\u0627 \u0648 \u0646\u0645\u0627\u0647\u0627\u06cc ManagePetCategory \u0631\u0627 \u0628\u0647 \u0631\u0648\u0632 \u06a9\u0646\u06cc\u062f<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight typescript\"><code><span class=\"k\">import<\/span> <span class=\"p\">{<\/span>\n  <span class=\"nx\">Body<\/span><span class=\"p\">,<\/span>\n  <span class=\"nx\">Controller<\/span><span class=\"p\">,<\/span>\n  <span class=\"nx\">Delete<\/span><span class=\"p\">,<\/span>\n  <span class=\"nx\">Get<\/span><span class=\"p\">,<\/span>\n  <span class=\"nx\">Param<\/span><span class=\"p\">,<\/span>\n  <span class=\"nx\">Post<\/span><span class=\"p\">,<\/span>\n  <span class=\"nx\">Redirect<\/span><span class=\"p\">,<\/span>\n  <span class=\"nx\">Render<\/span><span class=\"p\">,<\/span>\n<span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">@nestjs\/common<\/span><span class=\"dl\">'<\/span><span class=\"p\">;<\/span>\n<span class=\"k\">import<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">CreatePetCategoryDto<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">src\/pet\/dtos\/pet-dto<\/span><span class=\"dl\">'<\/span><span class=\"p\">;<\/span>\n<span class=\"k\">import<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">plainToInstance<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">class-transformer<\/span><span class=\"dl\">'<\/span><span class=\"p\">;<\/span>\n<span class=\"k\">import<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">validate<\/span><span class=\"p\">,<\/span> <span class=\"nx\">ValidationError<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">class-validator<\/span><span class=\"dl\">'<\/span><span class=\"p\">;<\/span>\n<span class=\"k\">import<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">FormDataRequest<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">nestjs-form-data<\/span><span class=\"dl\">'<\/span><span class=\"p\">;<\/span>\n<span class=\"k\">import<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">PetCategory<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">src\/pet\/models\/pet-category.model<\/span><span class=\"dl\">'<\/span><span class=\"p\">;<\/span>\n<span class=\"k\">import<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">Response<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">express<\/span><span class=\"dl\">'<\/span><span class=\"p\">;<\/span>\n\n<span class=\"kd\">const<\/span> <span class=\"nx\">transformError<\/span> <span class=\"o\">=<\/span> <span class=\"p\">(<\/span><span class=\"nx\">error<\/span><span class=\"p\">:<\/span> <span class=\"nx\">ValidationError<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n  <span class=\"kd\">const<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">property<\/span><span class=\"p\">,<\/span> <span class=\"nx\">constraints<\/span> <span class=\"p\">}<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">error<\/span><span class=\"p\">;<\/span>\n  <span class=\"k\">return<\/span> <span class=\"p\">{<\/span>\n    <span class=\"nx\">property<\/span><span class=\"p\">,<\/span>\n    <span class=\"nx\">constraints<\/span><span class=\"p\">,<\/span>\n  <span class=\"p\">};<\/span>\n<span class=\"p\">};<\/span>\n<span class=\"p\">@<\/span><span class=\"nd\">Controller<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">admin\/pet-categories<\/span><span class=\"dl\">'<\/span><span class=\"p\">)<\/span>\n<span class=\"k\">export<\/span> <span class=\"kd\">class<\/span> <span class=\"nx\">ManagePetCategoryController<\/span> <span class=\"p\">{<\/span>\n  <span class=\"p\">@<\/span><span class=\"nd\">Get<\/span><span class=\"p\">(<\/span><span class=\"dl\">''<\/span><span class=\"p\">)<\/span>\n  <span class=\"p\">@<\/span><span class=\"nd\">Render<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">pet\/admin\/manage-pet-category\/list<\/span><span class=\"dl\">'<\/span><span class=\"p\">)<\/span>\n  <span class=\"k\">async<\/span> <span class=\"nx\">getList<\/span><span class=\"p\">()<\/span> <span class=\"p\">{<\/span>\n    <span class=\"kd\">const<\/span> <span class=\"nx\">petCategories<\/span> <span class=\"o\">=<\/span> <span class=\"k\">await<\/span> <span class=\"nx\">PetCategory<\/span><span class=\"p\">.<\/span><span class=\"nx\">findAll<\/span><span class=\"p\">();<\/span>\n    <span class=\"k\">return<\/span> <span class=\"p\">{<\/span>\n      <span class=\"nx\">petCategories<\/span><span class=\"p\">,<\/span>\n    <span class=\"p\">};<\/span>\n  <span class=\"p\">}<\/span>\n\n  <span class=\"p\">@<\/span><span class=\"nd\">Post<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">delete\/:id<\/span><span class=\"dl\">'<\/span><span class=\"p\">)<\/span>\n  <span class=\"p\">@<\/span><span class=\"nd\">Redirect<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">\/admin\/pet-categories\/<\/span><span class=\"dl\">'<\/span><span class=\"p\">)<\/span>\n  <span class=\"k\">async<\/span> <span class=\"nx\">deleteOne<\/span><span class=\"p\">(@<\/span><span class=\"nd\">Param<\/span><span class=\"p\">()<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">id<\/span> <span class=\"p\">}:<\/span> <span class=\"p\">{<\/span> <span class=\"nl\">id<\/span><span class=\"p\">:<\/span> <span class=\"kr\">string<\/span> <span class=\"p\">})<\/span> <span class=\"p\">{<\/span>\n    <span class=\"k\">await<\/span> <span class=\"nx\">PetCategory<\/span><span class=\"p\">.<\/span><span class=\"nx\">destroy<\/span><span class=\"p\">({<\/span> <span class=\"na\">where<\/span><span class=\"p\">:<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">id<\/span> <span class=\"p\">}<\/span> <span class=\"p\">});<\/span>\n  <span class=\"p\">}<\/span>\n\n  <span class=\"p\">@<\/span><span class=\"nd\">Get<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">create<\/span><span class=\"dl\">'<\/span><span class=\"p\">)<\/span>\n  <span class=\"p\">@<\/span><span class=\"nd\">Render<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">pet\/admin\/manage-pet-category\/create<\/span><span class=\"dl\">'<\/span><span class=\"p\">)<\/span>\n  <span class=\"nx\">view_create<\/span><span class=\"p\">()<\/span> <span class=\"p\">{<\/span>\n    <span class=\"c1\">\/\/ a form<\/span>\n    <span class=\"k\">return<\/span> <span class=\"p\">{<\/span>\n      <span class=\"na\">data<\/span><span class=\"p\">:<\/span> <span class=\"p\">{<\/span>\n        <span class=\"na\">mode<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">create<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span>\n      <span class=\"p\">},<\/span>\n    <span class=\"p\">};<\/span>\n  <span class=\"p\">}<\/span>\n\n  <span class=\"p\">@<\/span><span class=\"nd\">Post<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">create<\/span><span class=\"dl\">'<\/span><span class=\"p\">)<\/span>\n  <span class=\"p\">@<\/span><span class=\"nd\">Render<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">pet\/admin\/manage-pet-category\/create<\/span><span class=\"dl\">'<\/span><span class=\"p\">)<\/span>\n  <span class=\"p\">@<\/span><span class=\"nd\">FormDataRequest<\/span><span class=\"p\">()<\/span>\n  <span class=\"k\">async<\/span> <span class=\"nx\">create<\/span><span class=\"p\">(@<\/span><span class=\"nd\">Body<\/span><span class=\"p\">()<\/span> <span class=\"nx\">createPetCategoryDto<\/span><span class=\"p\">:<\/span> <span class=\"nx\">CreatePetCategoryDto<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n    <span class=\"kd\">const<\/span> <span class=\"nx\">data<\/span> <span class=\"o\">=<\/span> <span class=\"p\">{<\/span>\n      <span class=\"na\">mode<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">create<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span>\n    <span class=\"p\">};<\/span>\n    <span class=\"c1\">\/\/ validation<\/span>\n    <span class=\"kd\">const<\/span> <span class=\"nx\">object<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">plainToInstance<\/span><span class=\"p\">(<\/span><span class=\"nx\">CreatePetCategoryDto<\/span><span class=\"p\">,<\/span> <span class=\"nx\">createPetCategoryDto<\/span><span class=\"p\">);<\/span>\n    <span class=\"kd\">const<\/span> <span class=\"nx\">errors<\/span> <span class=\"o\">=<\/span> <span class=\"k\">await<\/span> <span class=\"nx\">validate<\/span><span class=\"p\">(<\/span><span class=\"nx\">object<\/span><span class=\"p\">,<\/span> <span class=\"p\">{<\/span>\n      <span class=\"na\">stopAtFirstError<\/span><span class=\"p\">:<\/span> <span class=\"kc\">true<\/span><span class=\"p\">,<\/span>\n    <span class=\"p\">});<\/span>\n    <span class=\"k\">if<\/span> <span class=\"p\">(<\/span><span class=\"nx\">errors<\/span><span class=\"p\">.<\/span><span class=\"nx\">length<\/span> <span class=\"o\">&gt;<\/span> <span class=\"mi\">0<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n      <span class=\"nb\">Reflect<\/span><span class=\"p\">.<\/span><span class=\"kd\">set<\/span><span class=\"p\">(<\/span><span class=\"nx\">data<\/span><span class=\"p\">,<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">error<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">Please correct all fields!<\/span><span class=\"dl\">'<\/span><span class=\"p\">);<\/span>\n      <span class=\"kd\">const<\/span> <span class=\"nx\">responseError<\/span> <span class=\"o\">=<\/span> <span class=\"p\">{};<\/span>\n      <span class=\"nx\">errors<\/span><span class=\"p\">.<\/span><span class=\"nx\">map<\/span><span class=\"p\">((<\/span><span class=\"nx\">error<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n        <span class=\"kd\">const<\/span> <span class=\"nx\">rawError<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">transformError<\/span><span class=\"p\">(<\/span><span class=\"nx\">error<\/span><span class=\"p\">);<\/span>\n        <span class=\"nb\">Reflect<\/span><span class=\"p\">.<\/span><span class=\"kd\">set<\/span><span class=\"p\">(<\/span>\n          <span class=\"nx\">responseError<\/span><span class=\"p\">,<\/span>\n          <span class=\"nx\">rawError<\/span><span class=\"p\">.<\/span><span class=\"nx\">property<\/span><span class=\"p\">,<\/span>\n          <span class=\"nb\">Object<\/span><span class=\"p\">.<\/span><span class=\"nx\">values<\/span><span class=\"p\">(<\/span><span class=\"nx\">rawError<\/span><span class=\"p\">.<\/span><span class=\"nx\">constraints<\/span><span class=\"p\">)[<\/span><span class=\"mi\">0<\/span><span class=\"p\">],<\/span>\n        <span class=\"p\">);<\/span>\n      <span class=\"p\">});<\/span>\n      <span class=\"nb\">Reflect<\/span><span class=\"p\">.<\/span><span class=\"kd\">set<\/span><span class=\"p\">(<\/span><span class=\"nx\">data<\/span><span class=\"p\">,<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">errors<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"nx\">responseError<\/span><span class=\"p\">);<\/span>\n      <span class=\"k\">return<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">data<\/span> <span class=\"p\">};<\/span>\n    <span class=\"p\">}<\/span>\n    <span class=\"c1\">\/\/ set value and show success message<\/span>\n    <span class=\"nb\">Reflect<\/span><span class=\"p\">.<\/span><span class=\"kd\">set<\/span><span class=\"p\">(<\/span><span class=\"nx\">data<\/span><span class=\"p\">,<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">values<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"nx\">object<\/span><span class=\"p\">);<\/span>\n\n    <span class=\"c1\">\/\/ create PetCategory<\/span>\n    <span class=\"kd\">const<\/span> <span class=\"nx\">newPetCategory<\/span> <span class=\"o\">=<\/span> <span class=\"k\">await<\/span> <span class=\"nx\">PetCategory<\/span><span class=\"p\">.<\/span><span class=\"nx\">create<\/span><span class=\"p\">({<\/span> <span class=\"p\">...<\/span><span class=\"nx\">object<\/span> <span class=\"p\">});<\/span>\n\n    <span class=\"nb\">Reflect<\/span><span class=\"p\">.<\/span><span class=\"kd\">set<\/span><span class=\"p\">(<\/span>\n      <span class=\"nx\">data<\/span><span class=\"p\">,<\/span>\n      <span class=\"dl\">'<\/span><span class=\"s1\">success<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span>\n      <span class=\"s2\">`Pet Category : <\/span><span class=\"p\">${<\/span><span class=\"nx\">newPetCategory<\/span><span class=\"p\">.<\/span><span class=\"nx\">id<\/span><span class=\"p\">}<\/span><span class=\"s2\"> - <\/span><span class=\"p\">${<\/span><span class=\"nx\">newPetCategory<\/span><span class=\"p\">.<\/span><span class=\"nx\">name<\/span><span class=\"p\">}<\/span><span class=\"s2\"> has been created!`<\/span><span class=\"p\">,<\/span>\n    <span class=\"p\">);<\/span>\n    <span class=\"c1\">\/\/ success<\/span>\n    <span class=\"k\">return<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">data<\/span> <span class=\"p\">};<\/span>\n  <span class=\"p\">}<\/span>\n\n  <span class=\"p\">@<\/span><span class=\"nd\">Get<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">:id<\/span><span class=\"dl\">'<\/span><span class=\"p\">)<\/span>\n  <span class=\"p\">@<\/span><span class=\"nd\">Render<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">pet\/admin\/manage-pet-category\/create<\/span><span class=\"dl\">'<\/span><span class=\"p\">)<\/span>\n  <span class=\"k\">async<\/span> <span class=\"nx\">getDetail<\/span><span class=\"p\">(@<\/span><span class=\"nd\">Param<\/span><span class=\"p\">()<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">id<\/span> <span class=\"p\">}:<\/span> <span class=\"p\">{<\/span> <span class=\"nl\">id<\/span><span class=\"p\">:<\/span> <span class=\"kr\">string<\/span> <span class=\"p\">})<\/span> <span class=\"p\">{<\/span>\n    <span class=\"kd\">const<\/span> <span class=\"nx\">data<\/span> <span class=\"o\">=<\/span> <span class=\"p\">{<\/span>\n      <span class=\"na\">mode<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">edit<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span>\n    <span class=\"p\">};<\/span>\n    <span class=\"kd\">const<\/span> <span class=\"nx\">petCategory<\/span> <span class=\"o\">=<\/span> <span class=\"k\">await<\/span> <span class=\"nx\">PetCategory<\/span><span class=\"p\">.<\/span><span class=\"nx\">findByPk<\/span><span class=\"p\">(<\/span><span class=\"nx\">id<\/span><span class=\"p\">);<\/span>\n    <span class=\"nb\">Reflect<\/span><span class=\"p\">.<\/span><span class=\"kd\">set<\/span><span class=\"p\">(<\/span><span class=\"nx\">data<\/span><span class=\"p\">,<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">values<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"nx\">petCategory<\/span><span class=\"p\">);<\/span>\n    <span class=\"k\">return<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">data<\/span> <span class=\"p\">};<\/span>\n  <span class=\"p\">}<\/span>\n\n  <span class=\"p\">@<\/span><span class=\"nd\">Post<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">:id<\/span><span class=\"dl\">'<\/span><span class=\"p\">)<\/span>\n  <span class=\"p\">@<\/span><span class=\"nd\">Render<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">pet\/admin\/manage-pet-category\/create<\/span><span class=\"dl\">'<\/span><span class=\"p\">)<\/span>\n  <span class=\"p\">@<\/span><span class=\"nd\">FormDataRequest<\/span><span class=\"p\">()<\/span>\n  <span class=\"k\">async<\/span> <span class=\"nx\">updateOne<\/span><span class=\"p\">(<\/span>\n    <span class=\"p\">@<\/span><span class=\"nd\">Param<\/span><span class=\"p\">()<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">id<\/span> <span class=\"p\">}:<\/span> <span class=\"p\">{<\/span> <span class=\"nl\">id<\/span><span class=\"p\">:<\/span> <span class=\"kr\">string<\/span> <span class=\"p\">},<\/span>\n    <span class=\"p\">@<\/span><span class=\"nd\">Body<\/span><span class=\"p\">()<\/span> <span class=\"nx\">createPetCategoryDto<\/span><span class=\"p\">:<\/span> <span class=\"nx\">CreatePetCategoryDto<\/span><span class=\"p\">,<\/span>\n  <span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n    <span class=\"kd\">const<\/span> <span class=\"nx\">data<\/span> <span class=\"o\">=<\/span> <span class=\"p\">{<\/span>\n      <span class=\"na\">mode<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">edit<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span>\n    <span class=\"p\">};<\/span>\n    <span class=\"kd\">const<\/span> <span class=\"nx\">petCategory<\/span> <span class=\"o\">=<\/span> <span class=\"k\">await<\/span> <span class=\"nx\">PetCategory<\/span><span class=\"p\">.<\/span><span class=\"nx\">findByPk<\/span><span class=\"p\">(<\/span><span class=\"nx\">id<\/span><span class=\"p\">);<\/span>\n    <span class=\"c1\">\/\/ validation<\/span>\n    <span class=\"kd\">const<\/span> <span class=\"nx\">object<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">plainToInstance<\/span><span class=\"p\">(<\/span><span class=\"nx\">CreatePetCategoryDto<\/span><span class=\"p\">,<\/span> <span class=\"nx\">createPetCategoryDto<\/span><span class=\"p\">);<\/span>\n    <span class=\"kd\">const<\/span> <span class=\"nx\">errors<\/span> <span class=\"o\">=<\/span> <span class=\"k\">await<\/span> <span class=\"nx\">validate<\/span><span class=\"p\">(<\/span><span class=\"nx\">object<\/span><span class=\"p\">,<\/span> <span class=\"p\">{<\/span>\n      <span class=\"na\">stopAtFirstError<\/span><span class=\"p\">:<\/span> <span class=\"kc\">true<\/span><span class=\"p\">,<\/span>\n    <span class=\"p\">});<\/span>\n    <span class=\"k\">if<\/span> <span class=\"p\">(<\/span><span class=\"nx\">errors<\/span><span class=\"p\">.<\/span><span class=\"nx\">length<\/span> <span class=\"o\">&gt;<\/span> <span class=\"mi\">0<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n      <span class=\"nb\">Reflect<\/span><span class=\"p\">.<\/span><span class=\"kd\">set<\/span><span class=\"p\">(<\/span><span class=\"nx\">data<\/span><span class=\"p\">,<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">error<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">Please correct all fields!<\/span><span class=\"dl\">'<\/span><span class=\"p\">);<\/span>\n      <span class=\"kd\">const<\/span> <span class=\"nx\">responseError<\/span> <span class=\"o\">=<\/span> <span class=\"p\">{};<\/span>\n      <span class=\"nx\">errors<\/span><span class=\"p\">.<\/span><span class=\"nx\">map<\/span><span class=\"p\">((<\/span><span class=\"nx\">error<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n        <span class=\"kd\">const<\/span> <span class=\"nx\">rawError<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">transformError<\/span><span class=\"p\">(<\/span><span class=\"nx\">error<\/span><span class=\"p\">);<\/span>\n        <span class=\"nb\">Reflect<\/span><span class=\"p\">.<\/span><span class=\"kd\">set<\/span><span class=\"p\">(<\/span>\n          <span class=\"nx\">responseError<\/span><span class=\"p\">,<\/span>\n          <span class=\"nx\">rawError<\/span><span class=\"p\">.<\/span><span class=\"nx\">property<\/span><span class=\"p\">,<\/span>\n          <span class=\"nb\">Object<\/span><span class=\"p\">.<\/span><span class=\"nx\">values<\/span><span class=\"p\">(<\/span><span class=\"nx\">rawError<\/span><span class=\"p\">.<\/span><span class=\"nx\">constraints<\/span><span class=\"p\">)[<\/span><span class=\"mi\">0<\/span><span class=\"p\">],<\/span>\n        <span class=\"p\">);<\/span>\n      <span class=\"p\">});<\/span>\n      <span class=\"nb\">Reflect<\/span><span class=\"p\">.<\/span><span class=\"kd\">set<\/span><span class=\"p\">(<\/span><span class=\"nx\">data<\/span><span class=\"p\">,<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">errors<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"nx\">responseError<\/span><span class=\"p\">);<\/span>\n      <span class=\"k\">return<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">data<\/span> <span class=\"p\">};<\/span>\n    <span class=\"p\">}<\/span>\n    <span class=\"c1\">\/\/ set value and show success message<\/span>\n    <span class=\"k\">await<\/span> <span class=\"nx\">petCategory<\/span><span class=\"p\">.<\/span><span class=\"nx\">update<\/span><span class=\"p\">(<\/span><span class=\"nx\">object<\/span><span class=\"p\">);<\/span>\n\n    <span class=\"nb\">Reflect<\/span><span class=\"p\">.<\/span><span class=\"kd\">set<\/span><span class=\"p\">(<\/span><span class=\"nx\">data<\/span><span class=\"p\">,<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">values<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"nx\">petCategory<\/span><span class=\"p\">);<\/span>\n    <span class=\"k\">return<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">data<\/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<blockquote>\n<p>\u0628\u0627\u0632\u062f\u06cc\u062f\u0647\u0627 &#8211; list.html<\/p>\n<\/blockquote>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight html\"><code><span class=\"nt\">&lt;<\/span><span class=\"err\">%<\/span><span class=\"na\">-<\/span> <span class=\"na\">include<\/span><span class=\"err\">('<\/span><span class=\"na\">layouts<\/span><span class=\"err\">\/<\/span><span class=\"na\">admin<\/span><span class=\"err\">\/<\/span><span class=\"na\">header<\/span><span class=\"err\">');<\/span> <span class=\"err\">%<\/span><span class=\"nt\">&gt;<\/span>\n<span class=\"nt\">&lt;section<\/span> <span class=\"na\">class=<\/span><span class=\"s\">\"col-12\"<\/span><span class=\"nt\">&gt;<\/span>\n  <span class=\"nt\">&lt;div<\/span> <span class=\"na\">class=<\/span><span class=\"s\">\"card\"<\/span><span class=\"nt\">&gt;<\/span>\n    <span class=\"nt\">&lt;div<\/span> <span class=\"na\">class=<\/span><span class=\"s\">\"card-body\"<\/span><span class=\"nt\">&gt;<\/span>\n      <span class=\"nt\">&lt;h5<\/span> <span class=\"na\">class=<\/span><span class=\"s\">\"card-title\"<\/span><span class=\"nt\">&gt;<\/span>List Pet Categories<span class=\"nt\">&lt;\/h5&gt;<\/span>\n      <span class=\"nt\">&lt;div<\/span> <span class=\"na\">class=<\/span><span class=\"s\">\"pb-4\"<\/span><span class=\"nt\">&gt;<\/span>\n        <span class=\"nt\">&lt;a<\/span>\n          <span class=\"na\">class=<\/span><span class=\"s\">\"btn btn-primary\"<\/span>\n          <span class=\"na\">href=<\/span><span class=\"s\">\"\/admin\/pet-categories\/create\"<\/span>\n          <span class=\"na\">role=<\/span><span class=\"s\">\"button\"<\/span>\n          <span class=\"nt\">&gt;<\/span>New Pet Category<span class=\"nt\">&lt;\/a<\/span>\n        <span class=\"nt\">&gt;<\/span>\n      <span class=\"nt\">&lt;\/div&gt;<\/span>\n      <span class=\"nt\">&lt;div<\/span> <span class=\"na\">class=<\/span><span class=\"s\">\"table-responsive\"<\/span><span class=\"nt\">&gt;<\/span>\n        <span class=\"nt\">&lt;table<\/span> <span class=\"na\">class=<\/span><span class=\"s\">\"table table-light table-striped\"<\/span><span class=\"nt\">&gt;<\/span>\n          <span class=\"nt\">&lt;thead&gt;<\/span>\n            <span class=\"nt\">&lt;tr&gt;<\/span>\n              <span class=\"nt\">&lt;th<\/span> <span class=\"na\">scope=<\/span><span class=\"s\">\"col\"<\/span> <span class=\"na\">style=<\/span><span class=\"s\">\"width: 360px\"<\/span><span class=\"nt\">&gt;<\/span>ID<span class=\"nt\">&lt;\/th&gt;<\/span>\n              <span class=\"nt\">&lt;th<\/span> <span class=\"na\">scope=<\/span><span class=\"s\">\"col\"<\/span><span class=\"nt\">&gt;<\/span>Name<span class=\"nt\">&lt;\/th&gt;<\/span>\n              <span class=\"nt\">&lt;th<\/span> <span class=\"na\">scope=<\/span><span class=\"s\">\"col\"<\/span><span class=\"nt\">&gt;<\/span>Action<span class=\"nt\">&lt;\/th&gt;<\/span>\n            <span class=\"nt\">&lt;\/tr&gt;<\/span>\n          <span class=\"nt\">&lt;\/thead&gt;<\/span>\n          <span class=\"nt\">&lt;tbody&gt;<\/span>\n            <span class=\"nt\">&lt;<\/span><span class=\"err\">%<\/span> <span class=\"na\">petCategories.forEach(petCategory =<\/span><span class=\"err\">&gt; <\/span><span class=\"s\">{<\/span> <span class=\"err\">%<\/span><span class=\"nt\">&gt;<\/span>\n            <span class=\"nt\">&lt;tr<\/span> <span class=\"na\">class=<\/span><span class=\"s\">\"\"<\/span><span class=\"nt\">&gt;<\/span>\n              <span class=\"nt\">&lt;td&gt;&lt;<\/span><span class=\"err\">%=<\/span> <span class=\"na\">petCategory.id<\/span> <span class=\"err\">%<\/span><span class=\"nt\">&gt;&lt;\/td&gt;<\/span>\n              <span class=\"nt\">&lt;td&gt;&lt;<\/span><span class=\"err\">%=<\/span> <span class=\"na\">petCategory.name<\/span> <span class=\"err\">%<\/span><span class=\"nt\">&gt;&lt;\/td&gt;<\/span>\n              <span class=\"nt\">&lt;td&gt;<\/span>\n                <span class=\"nt\">&lt;a<\/span>\n                  <span class=\"na\">href=<\/span><span class=\"s\">\"\/admin\/pet-categories\/&lt;%= petCategory.id %&gt;\"<\/span>\n                  <span class=\"na\">title=<\/span><span class=\"s\">\"Edit\"<\/span>\n                  <span class=\"nt\">&gt;<\/span>Edit<span class=\"nt\">&lt;\/a<\/span>\n                <span class=\"nt\">&gt;<\/span>\n                <span class=\"nt\">&lt;form<\/span>\n                  <span class=\"na\">action=<\/span><span class=\"s\">\"\/admin\/pet-categories\/delete\/&lt;%= petCategory.id %&gt;\"<\/span>\n                  <span class=\"na\">method=<\/span><span class=\"s\">\"post\"<\/span>\n                <span class=\"nt\">&gt;<\/span>\n                  <span class=\"nt\">&lt;button<\/span> <span class=\"na\">type=<\/span><span class=\"s\">\"submit\"<\/span><span class=\"nt\">&gt;<\/span>Delete<span class=\"nt\">&lt;\/button&gt;<\/span>\n                <span class=\"nt\">&lt;\/form&gt;<\/span>\n              <span class=\"nt\">&lt;\/td&gt;<\/span>\n            <span class=\"nt\">&lt;\/tr&gt;<\/span>\n            <span class=\"nt\">&lt;<\/span><span class=\"err\">%<\/span> <span class=\"err\">})<\/span> <span class=\"err\">%<\/span><span class=\"nt\">&gt;<\/span>\n          <span class=\"nt\">&lt;\/tbody&gt;<\/span>\n        <span class=\"nt\">&lt;\/table&gt;<\/span>\n      <span class=\"nt\">&lt;\/div&gt;<\/span>\n    <span class=\"nt\">&lt;\/div&gt;<\/span>\n  <span class=\"nt\">&lt;\/div&gt;<\/span>\n<span class=\"nt\">&lt;\/section&gt;<\/span>\n<span class=\"nt\">&lt;<\/span><span class=\"err\">%<\/span><span class=\"na\">-<\/span> <span class=\"na\">include<\/span><span class=\"err\">('<\/span><span class=\"na\">layouts<\/span><span class=\"err\">\/<\/span><span class=\"na\">admin<\/span><span class=\"err\">\/<\/span><span class=\"na\">footer<\/span><span class=\"err\">');<\/span> <span class=\"err\">%<\/span><span class=\"nt\">&gt;<\/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<blockquote>\n<p>\u0646\u0645\u0627\u0647\u0627 &#8211; \u0627\u06cc\u062c\u0627\u062f\/\u0648\u06cc\u0631\u0627\u06cc\u0634<\/p>\n<\/blockquote>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight html\"><code><span class=\"nt\">&lt;<\/span><span class=\"err\">%<\/span><span class=\"na\">-<\/span> <span class=\"na\">include<\/span><span class=\"err\">('<\/span><span class=\"na\">layouts<\/span><span class=\"err\">\/<\/span><span class=\"na\">admin<\/span><span class=\"err\">\/<\/span><span class=\"na\">header<\/span><span class=\"err\">');<\/span> <span class=\"err\">%<\/span><span class=\"nt\">&gt;<\/span>\n<span class=\"nt\">&lt;section<\/span> <span class=\"na\">class=<\/span><span class=\"s\">\"col-6\"<\/span><span class=\"nt\">&gt;<\/span>\n  <span class=\"nt\">&lt;form<\/span> <span class=\"na\">method=<\/span><span class=\"s\">\"post\"<\/span> <span class=\"na\">enctype=<\/span><span class=\"s\">\"multipart\/form-data\"<\/span><span class=\"nt\">&gt;<\/span>\n    <span class=\"nt\">&lt;div<\/span> <span class=\"na\">class=<\/span><span class=\"s\">\"card\"<\/span><span class=\"nt\">&gt;<\/span>\n      <span class=\"nt\">&lt;div<\/span> <span class=\"na\">class=<\/span><span class=\"s\">\"card-body\"<\/span><span class=\"nt\">&gt;<\/span>\n        <span class=\"nt\">&lt;h5<\/span> <span class=\"na\">class=<\/span><span class=\"s\">\"card-title\"<\/span><span class=\"nt\">&gt;<\/span>\n          <span class=\"nt\">&lt;<\/span><span class=\"err\">%<\/span> <span class=\"na\">if<\/span> <span class=\"na\">(data.mode =<\/span><span class=\"s\">==<\/span> <span class=\"err\">'<\/span><span class=\"na\">create<\/span><span class=\"err\">')<\/span> <span class=\"err\">{<\/span> <span class=\"err\">%<\/span><span class=\"nt\">&gt;<\/span> New Pet Category <span class=\"nt\">&lt;<\/span><span class=\"err\">%<\/span> <span class=\"err\">}<\/span> <span class=\"err\">%<\/span><span class=\"nt\">&gt;<\/span> <span class=\"nt\">&lt;<\/span><span class=\"err\">%<\/span> <span class=\"na\">if<\/span>\n          <span class=\"na\">(data.mode =<\/span><span class=\"s\">==<\/span> <span class=\"err\">'<\/span><span class=\"na\">edit<\/span><span class=\"err\">')<\/span> <span class=\"err\">{<\/span> <span class=\"err\">%<\/span><span class=\"nt\">&gt;<\/span> Edit Pet Category <span class=\"nt\">&lt;<\/span><span class=\"err\">%<\/span> <span class=\"err\">}<\/span> <span class=\"err\">%<\/span><span class=\"nt\">&gt;<\/span>\n        <span class=\"nt\">&lt;\/h5&gt;<\/span>\n        <span class=\"c\">&lt;!-- error --&gt;<\/span>\n        <span class=\"nt\">&lt;<\/span><span class=\"err\">%<\/span> <span class=\"na\">if<\/span> <span class=\"err\">(<\/span><span class=\"na\">data.error<\/span><span class=\"err\">){<\/span> <span class=\"err\">%<\/span><span class=\"nt\">&gt;<\/span>\n        <span class=\"nt\">&lt;div<\/span> <span class=\"na\">class=<\/span><span class=\"s\">\"alert alert-danger\"<\/span> <span class=\"na\">role=<\/span><span class=\"s\">\"alert\"<\/span><span class=\"nt\">&gt;&lt;<\/span><span class=\"err\">%=<\/span> <span class=\"na\">data.error<\/span> <span class=\"err\">%<\/span><span class=\"nt\">&gt;&lt;\/div&gt;<\/span>\n        <span class=\"nt\">&lt;<\/span><span class=\"err\">%<\/span> <span class=\"err\">}<\/span> <span class=\"err\">%<\/span><span class=\"nt\">&gt;<\/span>\n        <span class=\"c\">&lt;!-- success --&gt;<\/span>\n        <span class=\"nt\">&lt;<\/span><span class=\"err\">%<\/span> <span class=\"na\">if<\/span> <span class=\"err\">(<\/span><span class=\"na\">data.success<\/span><span class=\"err\">){<\/span> <span class=\"err\">%<\/span><span class=\"nt\">&gt;<\/span>\n        <span class=\"nt\">&lt;div<\/span> <span class=\"na\">class=<\/span><span class=\"s\">\"alert alert-success\"<\/span> <span class=\"na\">role=<\/span><span class=\"s\">\"alert\"<\/span><span class=\"nt\">&gt;&lt;<\/span><span class=\"err\">%=<\/span> <span class=\"na\">data.success<\/span> <span class=\"err\">%<\/span><span class=\"nt\">&gt;&lt;\/div&gt;<\/span>\n        <span class=\"nt\">&lt;script <\/span><span class=\"na\">type=<\/span><span class=\"s\">\"text\/javascript\"<\/span><span class=\"nt\">&gt;<\/span>\n          <span class=\"nx\">setTimeout<\/span><span class=\"p\">(()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n            <span class=\"nb\">window<\/span><span class=\"p\">.<\/span><span class=\"nx\">location<\/span><span class=\"p\">.<\/span><span class=\"nx\">href<\/span> <span class=\"o\">=<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">\/admin\/pet-categories\/<\/span><span class=\"dl\">\"<\/span><span class=\"p\">;<\/span>\n          <span class=\"p\">},<\/span> <span class=\"mi\">2000<\/span><span class=\"p\">);<\/span>\n        <span class=\"nt\">&lt;\/script&gt;<\/span>\n        <span class=\"nt\">&lt;<\/span><span class=\"err\">%<\/span> <span class=\"err\">}<\/span> <span class=\"err\">%<\/span><span class=\"nt\">&gt;<\/span>\n        <span class=\"nt\">&lt;div<\/span> <span class=\"na\">class=<\/span><span class=\"s\">\"mb-3\"<\/span><span class=\"nt\">&gt;<\/span>\n          <span class=\"nt\">&lt;label<\/span> <span class=\"na\">for=<\/span><span class=\"s\">\"title\"<\/span> <span class=\"na\">class=<\/span><span class=\"s\">\"form-label\"<\/span><span class=\"nt\">&gt;<\/span>Name<span class=\"nt\">&lt;\/label&gt;<\/span>\n          <span class=\"nt\">&lt;div<\/span> <span class=\"na\">class=<\/span><span class=\"s\">\"input-group has-validation\"<\/span><span class=\"nt\">&gt;<\/span>\n            <span class=\"nt\">&lt;input<\/span>\n              <span class=\"na\">type=<\/span><span class=\"s\">\"text\"<\/span>\n              <span class=\"na\">class=<\/span><span class=\"s\">\"form-control &lt;%= data.errors &amp;&amp; data.errors['name'] ? 'is-invalid': '' %&gt;\"<\/span>\n              <span class=\"na\">id=<\/span><span class=\"s\">\"name\"<\/span>\n              <span class=\"na\">name=<\/span><span class=\"s\">\"name\"<\/span>\n              <span class=\"na\">value=<\/span><span class=\"s\">\"&lt;%= data.values &amp;&amp; data.values['name'] %&gt;\"<\/span>\n              <span class=\"na\">placeholder=<\/span><span class=\"s\">\"Pet Category name\"<\/span>\n            <span class=\"nt\">\/&gt;<\/span>\n            <span class=\"nt\">&lt;<\/span><span class=\"err\">%<\/span> <span class=\"na\">if<\/span> <span class=\"err\">(<\/span><span class=\"na\">data.errors<\/span> <span class=\"err\">&amp;&amp;<\/span> <span class=\"na\">data.errors<\/span><span class=\"err\">['<\/span><span class=\"na\">name<\/span><span class=\"err\">'])<\/span> <span class=\"err\">{<\/span> <span class=\"err\">%<\/span><span class=\"nt\">&gt;<\/span>\n            <span class=\"nt\">&lt;div<\/span> <span class=\"na\">id=<\/span><span class=\"s\">\"validationServerUsernameFeedback\"<\/span> <span class=\"na\">class=<\/span><span class=\"s\">\"invalid-feedback\"<\/span><span class=\"nt\">&gt;<\/span>\n              <span class=\"nt\">&lt;<\/span><span class=\"err\">%=<\/span> <span class=\"na\">data.errors<\/span><span class=\"err\">['<\/span><span class=\"na\">name<\/span><span class=\"err\">']<\/span> <span class=\"err\">%<\/span><span class=\"nt\">&gt;<\/span>\n            <span class=\"nt\">&lt;\/div&gt;<\/span>\n            <span class=\"nt\">&lt;<\/span><span class=\"err\">%<\/span> <span class=\"err\">}<\/span> <span class=\"err\">%<\/span><span class=\"nt\">&gt;<\/span>\n          <span class=\"nt\">&lt;\/div&gt;<\/span>\n        <span class=\"nt\">&lt;\/div&gt;<\/span>\n      <span class=\"nt\">&lt;\/div&gt;<\/span>\n      <span class=\"nt\">&lt;<\/span><span class=\"err\">%<\/span> <span class=\"na\">if<\/span><span class=\"err\">(!<\/span><span class=\"na\">data.success<\/span><span class=\"err\">)<\/span> <span class=\"err\">{<\/span> <span class=\"err\">%<\/span><span class=\"nt\">&gt;<\/span>\n      <span class=\"nt\">&lt;div<\/span> <span class=\"na\">class=<\/span><span class=\"s\">\"mb-3 col-12 text-center\"<\/span><span class=\"nt\">&gt;<\/span>\n        <span class=\"nt\">&lt;button<\/span> <span class=\"na\">type=<\/span><span class=\"s\">\"submit\"<\/span> <span class=\"na\">class=<\/span><span class=\"s\">\"btn btn-primary\"<\/span><span class=\"nt\">&gt;<\/span>Save<span class=\"nt\">&lt;\/button&gt;<\/span>\n      <span class=\"nt\">&lt;\/div&gt;<\/span>\n      <span class=\"nt\">&lt;<\/span><span class=\"err\">%<\/span> <span class=\"err\">}<\/span> <span class=\"err\">%<\/span><span class=\"nt\">&gt;<\/span>\n    <span class=\"nt\">&lt;\/div&gt;<\/span>\n  <span class=\"nt\">&lt;\/form&gt;<\/span>\n<span class=\"nt\">&lt;\/section&gt;<\/span>\n<span class=\"nt\">&lt;<\/span><span class=\"err\">%<\/span><span class=\"na\">-<\/span> <span class=\"na\">include<\/span><span class=\"err\">('<\/span><span class=\"na\">layouts<\/span><span class=\"err\">\/<\/span><span class=\"na\">admin<\/span><span class=\"err\">\/<\/span><span class=\"na\">footer<\/span><span class=\"err\">');<\/span> <span class=\"err\">%<\/span><span class=\"nt\">&gt;<\/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\u0631\u0627\u06cc \u062e\u0648\u0627\u0646\u062f\u0646 \u062f\u0648\u0631\u0647 \u0647\u0627\u06cc \u06a9\u0627\u0645\u0644 \u062f\u0631 NestJS \u062f\u0631\u0633 04 &#8211; \u0645\u062f\u0644 \u0648 \u0627\u0644\u06af\u0648\u06cc \u0645\u062e\u0632\u0646\u060c \u0631\u0627\u062d\u062a \u0628\u0627\u0634\u06cc\u062f<\/p>\n<\/p><\/div>\n","protected":false},"excerpt":{"rendered":"<p>\u06a9\u062f \u0645\u0646\u0628\u0639 \u062f\u0631\u0633 04 \u0645\u0639\u0631\u0641\u06cc \u0645\u062e\u062a\u0635\u0631 \u06cc\u06a9\u06cc \u0627\u0632 ORM \u0647\u0627\u06cc \u0645\u062d\u0628\u0648\u0628 &#8211; Sequelize \u0628\u0627 \u0627\u0644\u06af\u0648\u06cc ActiveRecord \u0622\u0634\u0646\u0627 \u0634\u0648\u06cc\u062f \u0646\u062d\u0648\u0647 \u0627\u06cc\u062c\u0627\u062f \u0637\u0631\u062d \u0648\u0627\u0631\u0647 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0628\u0627 Sequelize \u062f\u0631 NestJS 1. NestJS \u0631\u0627 \u0628\u0631\u0627\u06cc \u06a9\u0627\u0631 \u0628\u0627 MySQL \u0627\u0632 \u0637\u0631\u06cc\u0642 Sequelize \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u06a9\u0646\u06cc\u062f \u0627\u0628\u062a\u062f\u0627 \u0628\u0627\u06cc\u062f \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0631\u0627 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f\u0646\u0627\u0645 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 : nestjs_tutorial_2023 CREATE DATABASE `nestjs_tutorial_2023` CHARACTER &hellip;<\/p>\n","protected":false},"author":2,"featured_media":29285,"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-29284","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\/29284","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=29284"}],"version-history":[{"count":0,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/29284\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media\/29285"}],"wp:attachment":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media?parent=29284"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/categories?post=29284"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/tags?post=29284"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}