From 2b8df155d38dd0fe6d4f512f4d95142d3703598a Mon Sep 17 00:00:00 2001 From: gogacoder Date: Sat, 15 Mar 2025 21:12:15 +0700 Subject: [PATCH] feat: new models, sorting fix --- .idea/boilerplate.iml | 4 + .idea/vcs.xml | 6 + .idea/workspace.xml | 148 +++ .../bindings/app/internal/models/models.ts | 675 ++++++++-- .../app/internal/services/customerservice.ts | 86 ++ .../bindings/app/internal/services/index.ts | 30 +- .../bindings/app/internal/services/models.ts | 37 +- .../{commentservice.ts => orderservice.ts} | 30 +- ...{posttypeservice.ts => preptaskservice.ts} | 30 +- .../internal/services/producttypeservice.ts | 86 ++ .../app/internal/services/shiftservice.ts | 86 ++ .../{postservice.ts => taskservice.ts} | 30 +- .../app/internal/services/teamtaskservice.ts | 86 ++ .../app/internal/services/teamtypeservice.ts | 86 ++ .../app/internal/services/workareaservice.ts | 86 ++ .../{authorservice.ts => workerservice.ts} | 30 +- .../app/internal/services/workshopservice.ts | 86 ++ frontend/src/author/AuthorScheme.vue | 89 -- frontend/src/author/author.service.ts | 36 - frontend/src/comment/CommentScheme.vue | 93 -- frontend/src/comment/comment.service.ts | 36 - frontend/src/customer/CustomerScheme.vue | 95 ++ frontend/src/customer/customer.service.ts | 52 + frontend/src/order/OrderScheme.vue | 165 +++ frontend/src/order/order.service.ts | 52 + frontend/src/pages/Index.vue | 67 +- frontend/src/pages/pages/GrebenPage.vue | 3 - frontend/src/pages/pages/UserPage.vue | 14 - frontend/src/pages/tables/PostTablePage.vue | 7 - frontend/src/post/PostScheme.vue | 144 --- frontend/src/post/post.service.ts | 47 - frontend/src/posttype/PosttypeScheme.vue | 62 - frontend/src/posttype/posttype.service.ts | 36 - frontend/src/preptask/PreptaskScheme.vue | 141 ++ frontend/src/preptask/preptask.service.ts | 52 + .../src/producttype/ProducttypeScheme.vue | 72 ++ .../src/producttype/producttype.service.ts | 52 + frontend/src/router/router.ts | 42 +- frontend/src/shift/ShiftScheme.vue | 140 ++ frontend/src/shift/shift.service.ts | 52 + frontend/src/task/TaskScheme.vue | 175 +++ frontend/src/task/task.service.ts | 52 + frontend/src/teamtask/TeamtaskScheme.vue | 157 +++ frontend/src/teamtask/teamtask.service.ts | 52 + frontend/src/teamtype/TeamtypeScheme.vue | 72 ++ frontend/src/teamtype/teamtype.service.ts | 52 + frontend/src/workarea/WorkareaScheme.vue | 159 +++ frontend/src/workarea/workarea.service.ts | 52 + frontend/src/worker/WorkerScheme.vue | 111 ++ frontend/src/worker/worker.service.ts | 52 + frontend/src/workshop/WorkshopScheme.vue | 121 ++ frontend/src/workshop/workshop.service.ts | 52 + internal/dal/authors.gen.go | 615 --------- internal/dal/authors.gen_test.go | 145 --- internal/dal/comments.gen.go | 622 --------- internal/dal/comments.gen_test.go | 145 --- internal/dal/customers.gen.go | 891 +++++++++++++ internal/dal/customers.gen_test.go | 145 +++ internal/dal/gen.go | 128 +- internal/dal/gen_test.db | Bin 12288 -> 0 bytes internal/dal/gen_test.go | 15 +- internal/dal/orders.gen.go | 1018 +++++++++++++++ internal/dal/orders.gen_test.go | 145 +++ internal/dal/post_types.gen.go | 383 ------ internal/dal/post_types.gen_test.go | 145 --- internal/dal/posts.gen.go | 713 ----------- internal/dal/posts.gen_test.go | 145 --- internal/dal/prep_tasks.gen.go | 935 ++++++++++++++ internal/dal/prep_tasks.gen_test.go | 145 +++ internal/dal/product_types.gen.go | 383 ++++++ internal/dal/product_types.gen_test.go | 145 +++ internal/dal/shifts.gen.go | 905 +++++++++++++ internal/dal/shifts.gen_test.go | 145 +++ internal/dal/tasks.gen.go | 1114 ++++++++++++++++ internal/dal/tasks.gen_test.go | 145 +++ internal/dal/team_tasks.gen.go | 1131 +++++++++++++++++ internal/dal/team_tasks.gen_test.go | 145 +++ internal/dal/team_types.gen.go | 383 ++++++ internal/dal/team_types.gen_test.go | 145 +++ internal/dal/work_areas.gen.go | 1106 ++++++++++++++++ internal/dal/work_areas.gen_test.go | 145 +++ internal/dal/workers.gen.go | 910 +++++++++++++ internal/dal/workers.gen_test.go | 145 +++ internal/dal/workshops.gen.go | 964 ++++++++++++++ internal/dal/workshops.gen_test.go | 145 +++ internal/models/models.go | 128 +- internal/services/customer.go | 69 + internal/services/default_data.go | 457 +++++-- internal/services/excel.go | 75 +- internal/services/order.go | 69 + internal/services/post.go | 69 - internal/services/posttype.go | 68 - internal/services/preptask.go | 69 + internal/services/producttype.go | 69 + internal/services/services.go | 29 +- internal/services/shift.go | 69 + internal/services/task.go | 69 + internal/services/teamtask.go | 69 + internal/services/teamtype.go | 69 + internal/services/workarea.go | 69 + internal/services/worker.go | 69 + internal/services/workshop.go | 69 + internal/utils/sorting.go | 8 +- 103 files changed, 16214 insertions(+), 4048 deletions(-) create mode 100644 .idea/boilerplate.iml create mode 100644 .idea/vcs.xml create mode 100644 .idea/workspace.xml create mode 100644 frontend/bindings/app/internal/services/customerservice.ts rename frontend/bindings/app/internal/services/{commentservice.ts => orderservice.ts} (71%) rename frontend/bindings/app/internal/services/{posttypeservice.ts => preptaskservice.ts} (70%) create mode 100644 frontend/bindings/app/internal/services/producttypeservice.ts create mode 100644 frontend/bindings/app/internal/services/shiftservice.ts rename frontend/bindings/app/internal/services/{postservice.ts => taskservice.ts} (72%) create mode 100644 frontend/bindings/app/internal/services/teamtaskservice.ts create mode 100644 frontend/bindings/app/internal/services/teamtypeservice.ts create mode 100644 frontend/bindings/app/internal/services/workareaservice.ts rename frontend/bindings/app/internal/services/{authorservice.ts => workerservice.ts} (72%) create mode 100644 frontend/bindings/app/internal/services/workshopservice.ts delete mode 100644 frontend/src/author/AuthorScheme.vue delete mode 100644 frontend/src/author/author.service.ts delete mode 100644 frontend/src/comment/CommentScheme.vue delete mode 100644 frontend/src/comment/comment.service.ts create mode 100644 frontend/src/customer/CustomerScheme.vue create mode 100644 frontend/src/customer/customer.service.ts create mode 100644 frontend/src/order/OrderScheme.vue create mode 100644 frontend/src/order/order.service.ts delete mode 100644 frontend/src/pages/pages/GrebenPage.vue delete mode 100644 frontend/src/pages/pages/UserPage.vue delete mode 100644 frontend/src/pages/tables/PostTablePage.vue delete mode 100644 frontend/src/post/PostScheme.vue delete mode 100644 frontend/src/post/post.service.ts delete mode 100644 frontend/src/posttype/PosttypeScheme.vue delete mode 100644 frontend/src/posttype/posttype.service.ts create mode 100644 frontend/src/preptask/PreptaskScheme.vue create mode 100644 frontend/src/preptask/preptask.service.ts create mode 100644 frontend/src/producttype/ProducttypeScheme.vue create mode 100644 frontend/src/producttype/producttype.service.ts create mode 100644 frontend/src/shift/ShiftScheme.vue create mode 100644 frontend/src/shift/shift.service.ts create mode 100644 frontend/src/task/TaskScheme.vue create mode 100644 frontend/src/task/task.service.ts create mode 100644 frontend/src/teamtask/TeamtaskScheme.vue create mode 100644 frontend/src/teamtask/teamtask.service.ts create mode 100644 frontend/src/teamtype/TeamtypeScheme.vue create mode 100644 frontend/src/teamtype/teamtype.service.ts create mode 100644 frontend/src/workarea/WorkareaScheme.vue create mode 100644 frontend/src/workarea/workarea.service.ts create mode 100644 frontend/src/worker/WorkerScheme.vue create mode 100644 frontend/src/worker/worker.service.ts create mode 100644 frontend/src/workshop/WorkshopScheme.vue create mode 100644 frontend/src/workshop/workshop.service.ts delete mode 100644 internal/dal/authors.gen.go delete mode 100644 internal/dal/authors.gen_test.go delete mode 100644 internal/dal/comments.gen.go delete mode 100644 internal/dal/comments.gen_test.go create mode 100644 internal/dal/customers.gen.go create mode 100644 internal/dal/customers.gen_test.go delete mode 100644 internal/dal/gen_test.db create mode 100644 internal/dal/orders.gen.go create mode 100644 internal/dal/orders.gen_test.go delete mode 100644 internal/dal/post_types.gen.go delete mode 100644 internal/dal/post_types.gen_test.go delete mode 100644 internal/dal/posts.gen.go delete mode 100644 internal/dal/posts.gen_test.go create mode 100644 internal/dal/prep_tasks.gen.go create mode 100644 internal/dal/prep_tasks.gen_test.go create mode 100644 internal/dal/product_types.gen.go create mode 100644 internal/dal/product_types.gen_test.go create mode 100644 internal/dal/shifts.gen.go create mode 100644 internal/dal/shifts.gen_test.go create mode 100644 internal/dal/tasks.gen.go create mode 100644 internal/dal/tasks.gen_test.go create mode 100644 internal/dal/team_tasks.gen.go create mode 100644 internal/dal/team_tasks.gen_test.go create mode 100644 internal/dal/team_types.gen.go create mode 100644 internal/dal/team_types.gen_test.go create mode 100644 internal/dal/work_areas.gen.go create mode 100644 internal/dal/work_areas.gen_test.go create mode 100644 internal/dal/workers.gen.go create mode 100644 internal/dal/workers.gen_test.go create mode 100644 internal/dal/workshops.gen.go create mode 100644 internal/dal/workshops.gen_test.go create mode 100644 internal/services/customer.go create mode 100644 internal/services/order.go delete mode 100644 internal/services/post.go delete mode 100644 internal/services/posttype.go create mode 100644 internal/services/preptask.go create mode 100644 internal/services/producttype.go create mode 100644 internal/services/shift.go create mode 100644 internal/services/task.go create mode 100644 internal/services/teamtask.go create mode 100644 internal/services/teamtype.go create mode 100644 internal/services/workarea.go create mode 100644 internal/services/worker.go create mode 100644 internal/services/workshop.go diff --git a/.idea/boilerplate.iml b/.idea/boilerplate.iml new file mode 100644 index 0000000..7ee078d --- /dev/null +++ b/.idea/boilerplate.iml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..35eb1dd --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/workspace.xml b/.idea/workspace.xml new file mode 100644 index 0000000..d8e4e7f --- /dev/null +++ b/.idea/workspace.xml @@ -0,0 +1,148 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + { + "associatedIndex": 8 +} + + + + { + "keyToString": { + "DefaultGoTemplateProperty": "Go File", + "Go Build.go build app.executor": "Debug", + "RunOnceActivity.ShowReadmeOnStart": "true", + "RunOnceActivity.git.unshallow": "true", + "RunOnceActivity.go.formatter.settings.were.checked": "true", + "RunOnceActivity.go.migrated.go.modules.settings": "true", + "RunOnceActivity.go.modules.go.list.on.any.changes.was.set": "true", + "git-widget-placeholder": "main", + "go.import.settings.migrated": "true", + "go.sdk.automatically.set": "true", + "kotlin-language-version-configured": "true", + "last_opened_file_path": "/home/gogacoder/dev/go/nto/boilerplate", + "node.js.detected.package.eslint": "true", + "node.js.selected.package.eslint": "(autodetect)", + "nodejs_package_manager_path": "npm", + "settings.editor.selected.configurable": "go.sdk", + "ts.external.directory.path": "/home/gogacoder/dev/go/nto/boilerplate/frontend/node_modules/typescript/lib", + "vue.rearranger.settings.migration": "true" + } +} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1739066986825 + + + + + + + true + + \ No newline at end of file diff --git a/frontend/bindings/app/internal/models/models.ts b/frontend/bindings/app/internal/models/models.ts index 97c7442..2288e9b 100644 --- a/frontend/bindings/app/internal/models/models.ts +++ b/frontend/bindings/app/internal/models/models.ts @@ -5,163 +5,183 @@ // @ts-ignore: Unused imports import {Create as $Create} from "@wailsio/runtime"; -export class Author { +export class Customer { "Id": number; - "Name": string; - "Posts": Post[]; - "Comments": Comment[]; + "Title": string; + "Contact": string; + "Orders": Order[]; - /** Creates a new Author instance. */ - constructor($$source: Partial = {}) { + /** Creates a new Customer instance. */ + constructor($$source: Partial = {}) { if (!("Id" in $$source)) { this["Id"] = 0; } - if (!("Name" in $$source)) { - this["Name"] = ""; + if (!("Title" in $$source)) { + this["Title"] = ""; } - if (!("Posts" in $$source)) { - this["Posts"] = []; + if (!("Contact" in $$source)) { + this["Contact"] = ""; } - if (!("Comments" in $$source)) { - this["Comments"] = []; + if (!("Orders" in $$source)) { + this["Orders"] = []; } Object.assign(this, $$source); } /** - * Creates a new Author instance from a string or object. + * Creates a new Customer instance from a string or object. */ - static createFrom($$source: any = {}): Author { - const $$createField2_0 = $$createType1; - const $$createField3_0 = $$createType3; + static createFrom($$source: any = {}): Customer { + const $$createField3_0 = $$createType1; let $$parsedSource = typeof $$source === 'string' ? JSON.parse($$source) : $$source; - if ("Posts" in $$parsedSource) { - $$parsedSource["Posts"] = $$createField2_0($$parsedSource["Posts"]); + if ("Orders" in $$parsedSource) { + $$parsedSource["Orders"] = $$createField3_0($$parsedSource["Orders"]); } - if ("Comments" in $$parsedSource) { - $$parsedSource["Comments"] = $$createField3_0($$parsedSource["Comments"]); - } - return new Author($$parsedSource as Partial); + return new Customer($$parsedSource as Partial); } } -export class Comment { +export class Order { "Id": number; - "Text": string; - "AuthorId": number; - "Author": Author; - "Posts": Post[]; - - /** Creates a new Comment instance. */ - constructor($$source: Partial = {}) { - if (!("Id" in $$source)) { - this["Id"] = 0; - } - if (!("Text" in $$source)) { - this["Text"] = ""; - } - if (!("AuthorId" in $$source)) { - this["AuthorId"] = 0; - } - if (!("Author" in $$source)) { - this["Author"] = (new Author()); - } - if (!("Posts" in $$source)) { - this["Posts"] = []; - } - - Object.assign(this, $$source); - } - - /** - * Creates a new Comment instance from a string or object. - */ - static createFrom($$source: any = {}): Comment { - const $$createField3_0 = $$createType4; - const $$createField4_0 = $$createType1; - let $$parsedSource = typeof $$source === 'string' ? JSON.parse($$source) : $$source; - if ("Author" in $$parsedSource) { - $$parsedSource["Author"] = $$createField3_0($$parsedSource["Author"]); - } - if ("Posts" in $$parsedSource) { - $$parsedSource["Posts"] = $$createField4_0($$parsedSource["Posts"]); - } - return new Comment($$parsedSource as Partial); - } -} - -export class Post { - "Id": number; - "Text": string; - "Deadline": number; + "Status": string; + "Description": string; + "ProductTypeId": number; + "ProductType": ProductType; + "ProductAmount": number; + "CustomerId": number; + "Customer": Customer; + "Tasks": Task[]; "CreatedAt": number; - "AuthorId": number; - "Author": Author; - "PostTypeId": number; - "PostType": PostType; - "Comments": Comment[]; + "DeadlineDate": number; - /** Creates a new Post instance. */ - constructor($$source: Partial = {}) { + /** Creates a new Order instance. */ + constructor($$source: Partial = {}) { if (!("Id" in $$source)) { this["Id"] = 0; } - if (!("Text" in $$source)) { - this["Text"] = ""; + if (!("Status" in $$source)) { + this["Status"] = ""; } - if (!("Deadline" in $$source)) { - this["Deadline"] = 0; + if (!("Description" in $$source)) { + this["Description"] = ""; + } + if (!("ProductTypeId" in $$source)) { + this["ProductTypeId"] = 0; + } + if (!("ProductType" in $$source)) { + this["ProductType"] = (new ProductType()); + } + if (!("ProductAmount" in $$source)) { + this["ProductAmount"] = 0; + } + if (!("CustomerId" in $$source)) { + this["CustomerId"] = 0; + } + if (!("Customer" in $$source)) { + this["Customer"] = (new Customer()); + } + if (!("Tasks" in $$source)) { + this["Tasks"] = []; } if (!("CreatedAt" in $$source)) { this["CreatedAt"] = 0; } - if (!("AuthorId" in $$source)) { - this["AuthorId"] = 0; - } - if (!("Author" in $$source)) { - this["Author"] = (new Author()); - } - if (!("PostTypeId" in $$source)) { - this["PostTypeId"] = 0; - } - if (!("PostType" in $$source)) { - this["PostType"] = (new PostType()); - } - if (!("Comments" in $$source)) { - this["Comments"] = []; + if (!("DeadlineDate" in $$source)) { + this["DeadlineDate"] = 0; } Object.assign(this, $$source); } /** - * Creates a new Post instance from a string or object. + * Creates a new Order instance from a string or object. */ - static createFrom($$source: any = {}): Post { - const $$createField5_0 = $$createType4; - const $$createField7_0 = $$createType5; - const $$createField8_0 = $$createType3; + static createFrom($$source: any = {}): Order { + const $$createField4_0 = $$createType2; + const $$createField7_0 = $$createType3; + const $$createField8_0 = $$createType5; let $$parsedSource = typeof $$source === 'string' ? JSON.parse($$source) : $$source; - if ("Author" in $$parsedSource) { - $$parsedSource["Author"] = $$createField5_0($$parsedSource["Author"]); + if ("ProductType" in $$parsedSource) { + $$parsedSource["ProductType"] = $$createField4_0($$parsedSource["ProductType"]); } - if ("PostType" in $$parsedSource) { - $$parsedSource["PostType"] = $$createField7_0($$parsedSource["PostType"]); + if ("Customer" in $$parsedSource) { + $$parsedSource["Customer"] = $$createField7_0($$parsedSource["Customer"]); } - if ("Comments" in $$parsedSource) { - $$parsedSource["Comments"] = $$createField8_0($$parsedSource["Comments"]); + if ("Tasks" in $$parsedSource) { + $$parsedSource["Tasks"] = $$createField8_0($$parsedSource["Tasks"]); } - return new Post($$parsedSource as Partial); + return new Order($$parsedSource as Partial); } } -export class PostType { +export class PrepTask { + "Id": number; + "Status": string; + "Description": string; + "TaskId": number; + "Task": Task; + "WorkAreaId": number; + "WorkArea": WorkArea; + "CreatedAt": number; + "Deadline": number; + + /** Creates a new PrepTask instance. */ + constructor($$source: Partial = {}) { + if (!("Id" in $$source)) { + this["Id"] = 0; + } + if (!("Status" in $$source)) { + this["Status"] = ""; + } + if (!("Description" in $$source)) { + this["Description"] = ""; + } + if (!("TaskId" in $$source)) { + this["TaskId"] = 0; + } + if (!("Task" in $$source)) { + this["Task"] = (new Task()); + } + if (!("WorkAreaId" in $$source)) { + this["WorkAreaId"] = 0; + } + if (!("WorkArea" in $$source)) { + this["WorkArea"] = (new WorkArea()); + } + if (!("CreatedAt" in $$source)) { + this["CreatedAt"] = 0; + } + if (!("Deadline" in $$source)) { + this["Deadline"] = 0; + } + + Object.assign(this, $$source); + } + + /** + * Creates a new PrepTask instance from a string or object. + */ + static createFrom($$source: any = {}): PrepTask { + const $$createField4_0 = $$createType4; + const $$createField6_0 = $$createType6; + let $$parsedSource = typeof $$source === 'string' ? JSON.parse($$source) : $$source; + if ("Task" in $$parsedSource) { + $$parsedSource["Task"] = $$createField4_0($$parsedSource["Task"]); + } + if ("WorkArea" in $$parsedSource) { + $$parsedSource["WorkArea"] = $$createField6_0($$parsedSource["WorkArea"]); + } + return new PrepTask($$parsedSource as Partial); + } +} + +export class ProductType { "Id": number; "Name": string; - /** Creates a new PostType instance. */ - constructor($$source: Partial = {}) { + /** Creates a new ProductType instance. */ + constructor($$source: Partial = {}) { if (!("Id" in $$source)) { this["Id"] = 0; } @@ -173,18 +193,437 @@ export class PostType { } /** - * Creates a new PostType instance from a string or object. + * Creates a new ProductType instance from a string or object. */ - static createFrom($$source: any = {}): PostType { + static createFrom($$source: any = {}): ProductType { let $$parsedSource = typeof $$source === 'string' ? JSON.parse($$source) : $$source; - return new PostType($$parsedSource as Partial); + return new ProductType($$parsedSource as Partial); + } +} + +export class Shift { + "Id": number; + "Description": string; + "ProductTypeId": number; + "ProductType": ProductType; + "ProductAmount": number; + "ShiftDate": number; + "WorkAreaId": number; + "WorkArea": WorkArea; + "CreatedAt": number; + + /** Creates a new Shift instance. */ + constructor($$source: Partial = {}) { + if (!("Id" in $$source)) { + this["Id"] = 0; + } + if (!("Description" in $$source)) { + this["Description"] = ""; + } + if (!("ProductTypeId" in $$source)) { + this["ProductTypeId"] = 0; + } + if (!("ProductType" in $$source)) { + this["ProductType"] = (new ProductType()); + } + if (!("ProductAmount" in $$source)) { + this["ProductAmount"] = 0; + } + if (!("ShiftDate" in $$source)) { + this["ShiftDate"] = 0; + } + if (!("WorkAreaId" in $$source)) { + this["WorkAreaId"] = 0; + } + if (!("WorkArea" in $$source)) { + this["WorkArea"] = (new WorkArea()); + } + if (!("CreatedAt" in $$source)) { + this["CreatedAt"] = 0; + } + + Object.assign(this, $$source); + } + + /** + * Creates a new Shift instance from a string or object. + */ + static createFrom($$source: any = {}): Shift { + const $$createField3_0 = $$createType2; + const $$createField7_0 = $$createType6; + let $$parsedSource = typeof $$source === 'string' ? JSON.parse($$source) : $$source; + if ("ProductType" in $$parsedSource) { + $$parsedSource["ProductType"] = $$createField3_0($$parsedSource["ProductType"]); + } + if ("WorkArea" in $$parsedSource) { + $$parsedSource["WorkArea"] = $$createField7_0($$parsedSource["WorkArea"]); + } + return new Shift($$parsedSource as Partial); + } +} + +export class Task { + "Id": number; + "Description": string; + "ProductTypeId": number; + "ProductType": ProductType; + "Workshops": (Workshop | null)[]; + "OrderId": number; + "Order": Order; + "PrepTasks": PrepTask[]; + "ProductionStart": number; + "CreatedAt": number; + "Amount": number; + + /** Creates a new Task instance. */ + constructor($$source: Partial = {}) { + if (!("Id" in $$source)) { + this["Id"] = 0; + } + if (!("Description" in $$source)) { + this["Description"] = ""; + } + if (!("ProductTypeId" in $$source)) { + this["ProductTypeId"] = 0; + } + if (!("ProductType" in $$source)) { + this["ProductType"] = (new ProductType()); + } + if (!("Workshops" in $$source)) { + this["Workshops"] = []; + } + if (!("OrderId" in $$source)) { + this["OrderId"] = 0; + } + if (!("Order" in $$source)) { + this["Order"] = (new Order()); + } + if (!("PrepTasks" in $$source)) { + this["PrepTasks"] = []; + } + if (!("ProductionStart" in $$source)) { + this["ProductionStart"] = 0; + } + if (!("CreatedAt" in $$source)) { + this["CreatedAt"] = 0; + } + if (!("Amount" in $$source)) { + this["Amount"] = 0; + } + + Object.assign(this, $$source); + } + + /** + * Creates a new Task instance from a string or object. + */ + static createFrom($$source: any = {}): Task { + const $$createField3_0 = $$createType2; + const $$createField4_0 = $$createType9; + const $$createField6_0 = $$createType0; + const $$createField7_0 = $$createType11; + let $$parsedSource = typeof $$source === 'string' ? JSON.parse($$source) : $$source; + if ("ProductType" in $$parsedSource) { + $$parsedSource["ProductType"] = $$createField3_0($$parsedSource["ProductType"]); + } + if ("Workshops" in $$parsedSource) { + $$parsedSource["Workshops"] = $$createField4_0($$parsedSource["Workshops"]); + } + if ("Order" in $$parsedSource) { + $$parsedSource["Order"] = $$createField6_0($$parsedSource["Order"]); + } + if ("PrepTasks" in $$parsedSource) { + $$parsedSource["PrepTasks"] = $$createField7_0($$parsedSource["PrepTasks"]); + } + return new Task($$parsedSource as Partial); + } +} + +export class TeamTask { + "Id": number; + "TeamTypeId": number; + "TeamType": TeamType; + "TeamLeaderId": number; + "TeamLeader": Worker; + "TeamMembers": (Worker | null)[]; + "WorkStartDate": number; + "WorkAreaId": number; + "WorkArea": WorkArea; + "ShiftDuties": string; + + /** Creates a new TeamTask instance. */ + constructor($$source: Partial = {}) { + if (!("Id" in $$source)) { + this["Id"] = 0; + } + if (!("TeamTypeId" in $$source)) { + this["TeamTypeId"] = 0; + } + if (!("TeamType" in $$source)) { + this["TeamType"] = (new TeamType()); + } + if (!("TeamLeaderId" in $$source)) { + this["TeamLeaderId"] = 0; + } + if (!("TeamLeader" in $$source)) { + this["TeamLeader"] = (new Worker()); + } + if (!("TeamMembers" in $$source)) { + this["TeamMembers"] = []; + } + if (!("WorkStartDate" in $$source)) { + this["WorkStartDate"] = 0; + } + if (!("WorkAreaId" in $$source)) { + this["WorkAreaId"] = 0; + } + if (!("WorkArea" in $$source)) { + this["WorkArea"] = (new WorkArea()); + } + if (!("ShiftDuties" in $$source)) { + this["ShiftDuties"] = ""; + } + + Object.assign(this, $$source); + } + + /** + * Creates a new TeamTask instance from a string or object. + */ + static createFrom($$source: any = {}): TeamTask { + const $$createField2_0 = $$createType12; + const $$createField4_0 = $$createType13; + const $$createField5_0 = $$createType15; + const $$createField8_0 = $$createType6; + let $$parsedSource = typeof $$source === 'string' ? JSON.parse($$source) : $$source; + if ("TeamType" in $$parsedSource) { + $$parsedSource["TeamType"] = $$createField2_0($$parsedSource["TeamType"]); + } + if ("TeamLeader" in $$parsedSource) { + $$parsedSource["TeamLeader"] = $$createField4_0($$parsedSource["TeamLeader"]); + } + if ("TeamMembers" in $$parsedSource) { + $$parsedSource["TeamMembers"] = $$createField5_0($$parsedSource["TeamMembers"]); + } + if ("WorkArea" in $$parsedSource) { + $$parsedSource["WorkArea"] = $$createField8_0($$parsedSource["WorkArea"]); + } + return new TeamTask($$parsedSource as Partial); + } +} + +export class TeamType { + "Id": number; + "Name": string; + + /** Creates a new TeamType instance. */ + constructor($$source: Partial = {}) { + if (!("Id" in $$source)) { + this["Id"] = 0; + } + if (!("Name" in $$source)) { + this["Name"] = ""; + } + + Object.assign(this, $$source); + } + + /** + * Creates a new TeamType instance from a string or object. + */ + static createFrom($$source: any = {}): TeamType { + let $$parsedSource = typeof $$source === 'string' ? JSON.parse($$source) : $$source; + return new TeamType($$parsedSource as Partial); + } +} + +export class WorkArea { + "Id": number; + "Name": string; + "Description": string; + "Performance": number; + "WorkshopId": number; + "Workshop": Workshop; + "PrepTasks": PrepTask[]; + "Shifts": Shift[]; + "TeamTasks": TeamTask[]; + + /** Creates a new WorkArea instance. */ + constructor($$source: Partial = {}) { + if (!("Id" in $$source)) { + this["Id"] = 0; + } + if (!("Name" in $$source)) { + this["Name"] = ""; + } + if (!("Description" in $$source)) { + this["Description"] = ""; + } + if (!("Performance" in $$source)) { + this["Performance"] = 0; + } + if (!("WorkshopId" in $$source)) { + this["WorkshopId"] = 0; + } + if (!("Workshop" in $$source)) { + this["Workshop"] = (new Workshop()); + } + if (!("PrepTasks" in $$source)) { + this["PrepTasks"] = []; + } + if (!("Shifts" in $$source)) { + this["Shifts"] = []; + } + if (!("TeamTasks" in $$source)) { + this["TeamTasks"] = []; + } + + Object.assign(this, $$source); + } + + /** + * Creates a new WorkArea instance from a string or object. + */ + static createFrom($$source: any = {}): WorkArea { + const $$createField5_0 = $$createType7; + const $$createField6_0 = $$createType11; + const $$createField7_0 = $$createType17; + const $$createField8_0 = $$createType19; + let $$parsedSource = typeof $$source === 'string' ? JSON.parse($$source) : $$source; + if ("Workshop" in $$parsedSource) { + $$parsedSource["Workshop"] = $$createField5_0($$parsedSource["Workshop"]); + } + if ("PrepTasks" in $$parsedSource) { + $$parsedSource["PrepTasks"] = $$createField6_0($$parsedSource["PrepTasks"]); + } + if ("Shifts" in $$parsedSource) { + $$parsedSource["Shifts"] = $$createField7_0($$parsedSource["Shifts"]); + } + if ("TeamTasks" in $$parsedSource) { + $$parsedSource["TeamTasks"] = $$createField8_0($$parsedSource["TeamTasks"]); + } + return new WorkArea($$parsedSource as Partial); + } +} + +export class Worker { + "Id": number; + "Name": string; + "TeamTasks": (TeamTask | null)[]; + "Workshop": Workshop; + "WorkshopId": number; + + /** Creates a new Worker instance. */ + constructor($$source: Partial = {}) { + if (!("Id" in $$source)) { + this["Id"] = 0; + } + if (!("Name" in $$source)) { + this["Name"] = ""; + } + if (!("TeamTasks" in $$source)) { + this["TeamTasks"] = []; + } + if (!("Workshop" in $$source)) { + this["Workshop"] = (new Workshop()); + } + if (!("WorkshopId" in $$source)) { + this["WorkshopId"] = 0; + } + + Object.assign(this, $$source); + } + + /** + * Creates a new Worker instance from a string or object. + */ + static createFrom($$source: any = {}): Worker { + const $$createField2_0 = $$createType21; + const $$createField3_0 = $$createType7; + let $$parsedSource = typeof $$source === 'string' ? JSON.parse($$source) : $$source; + if ("TeamTasks" in $$parsedSource) { + $$parsedSource["TeamTasks"] = $$createField2_0($$parsedSource["TeamTasks"]); + } + if ("Workshop" in $$parsedSource) { + $$parsedSource["Workshop"] = $$createField3_0($$parsedSource["Workshop"]); + } + return new Worker($$parsedSource as Partial); + } +} + +export class Workshop { + "Id": number; + "Name": string; + "WorkAreas": WorkArea[]; + "Tasks": (Task | null)[]; + "Workers": Worker[]; + + /** Creates a new Workshop instance. */ + constructor($$source: Partial = {}) { + if (!("Id" in $$source)) { + this["Id"] = 0; + } + if (!("Name" in $$source)) { + this["Name"] = ""; + } + if (!("WorkAreas" in $$source)) { + this["WorkAreas"] = []; + } + if (!("Tasks" in $$source)) { + this["Tasks"] = []; + } + if (!("Workers" in $$source)) { + this["Workers"] = []; + } + + Object.assign(this, $$source); + } + + /** + * Creates a new Workshop instance from a string or object. + */ + static createFrom($$source: any = {}): Workshop { + const $$createField2_0 = $$createType22; + const $$createField3_0 = $$createType24; + const $$createField4_0 = $$createType25; + let $$parsedSource = typeof $$source === 'string' ? JSON.parse($$source) : $$source; + if ("WorkAreas" in $$parsedSource) { + $$parsedSource["WorkAreas"] = $$createField2_0($$parsedSource["WorkAreas"]); + } + if ("Tasks" in $$parsedSource) { + $$parsedSource["Tasks"] = $$createField3_0($$parsedSource["Tasks"]); + } + if ("Workers" in $$parsedSource) { + $$parsedSource["Workers"] = $$createField4_0($$parsedSource["Workers"]); + } + return new Workshop($$parsedSource as Partial); } } // Private type creation functions -const $$createType0 = Post.createFrom; +const $$createType0 = Order.createFrom; const $$createType1 = $Create.Array($$createType0); -const $$createType2 = Comment.createFrom; -const $$createType3 = $Create.Array($$createType2); -const $$createType4 = Author.createFrom; -const $$createType5 = PostType.createFrom; +const $$createType2 = ProductType.createFrom; +const $$createType3 = Customer.createFrom; +const $$createType4 = Task.createFrom; +const $$createType5 = $Create.Array($$createType4); +const $$createType6 = WorkArea.createFrom; +const $$createType7 = Workshop.createFrom; +const $$createType8 = $Create.Nullable($$createType7); +const $$createType9 = $Create.Array($$createType8); +const $$createType10 = PrepTask.createFrom; +const $$createType11 = $Create.Array($$createType10); +const $$createType12 = TeamType.createFrom; +const $$createType13 = Worker.createFrom; +const $$createType14 = $Create.Nullable($$createType13); +const $$createType15 = $Create.Array($$createType14); +const $$createType16 = Shift.createFrom; +const $$createType17 = $Create.Array($$createType16); +const $$createType18 = TeamTask.createFrom; +const $$createType19 = $Create.Array($$createType18); +const $$createType20 = $Create.Nullable($$createType18); +const $$createType21 = $Create.Array($$createType20); +const $$createType22 = $Create.Array($$createType6); +const $$createType23 = $Create.Nullable($$createType4); +const $$createType24 = $Create.Array($$createType23); +const $$createType25 = $Create.Array($$createType13); diff --git a/frontend/bindings/app/internal/services/customerservice.ts b/frontend/bindings/app/internal/services/customerservice.ts new file mode 100644 index 0000000..6669ed2 --- /dev/null +++ b/frontend/bindings/app/internal/services/customerservice.ts @@ -0,0 +1,86 @@ +// Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH Â MODIWL +// This file is automatically generated. DO NOT EDIT + +// eslint-disable-next-line @typescript-eslint/ban-ts-comment +// @ts-ignore: Unused imports +import {Call as $Call, Create as $Create} from "@wailsio/runtime"; + +// eslint-disable-next-line @typescript-eslint/ban-ts-comment +// @ts-ignore: Unused imports +import * as models$0 from "../models/models.js"; +// eslint-disable-next-line @typescript-eslint/ban-ts-comment +// @ts-ignore: Unused imports +import * as utils$0 from "../utils/models.js"; + +// eslint-disable-next-line @typescript-eslint/ban-ts-comment +// @ts-ignore: Unused imports +import * as $models from "./models.js"; + +export function Count(): Promise & { cancel(): void } { + let $resultPromise = $Call.ByID(2456694737) as any; + return $resultPromise; +} + +export function Create(item: $models.Customer): Promise<$models.Customer> & { cancel(): void } { + let $resultPromise = $Call.ByID(2428713966, item) as any; + let $typingPromise = $resultPromise.then(($result: any) => { + return $$createType0($result); + }) as any; + $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); + return $typingPromise; +} + +export function Delete(id: number): Promise & { cancel(): void } { + let $resultPromise = $Call.ByID(351568709, id) as any; + return $resultPromise; +} + +export function GetAll(): Promise<($models.Customer | null)[]> & { cancel(): void } { + let $resultPromise = $Call.ByID(2094111829) as any; + let $typingPromise = $resultPromise.then(($result: any) => { + return $$createType2($result); + }) as any; + $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); + return $typingPromise; +} + +export function GetById(id: number): Promise<$models.Customer | null> & { cancel(): void } { + let $resultPromise = $Call.ByID(1898783026, id) as any; + let $typingPromise = $resultPromise.then(($result: any) => { + return $$createType1($result); + }) as any; + $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); + return $typingPromise; +} + +export function SearchByAllTextFields(phrase: string): Promise<($models.Customer | null)[]> & { cancel(): void } { + let $resultPromise = $Call.ByID(1677934916, phrase) as any; + let $typingPromise = $resultPromise.then(($result: any) => { + return $$createType2($result); + }) as any; + $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); + return $typingPromise; +} + +export function SortedByOrder(fieldsSortingOrder: utils$0.SortField[]): Promise<($models.Customer | null)[]> & { cancel(): void } { + let $resultPromise = $Call.ByID(3880190910, fieldsSortingOrder) as any; + let $typingPromise = $resultPromise.then(($result: any) => { + return $$createType2($result); + }) as any; + $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); + return $typingPromise; +} + +export function Update(item: $models.Customer): Promise<$models.Customer> & { cancel(): void } { + let $resultPromise = $Call.ByID(2724586067, item) as any; + let $typingPromise = $resultPromise.then(($result: any) => { + return $$createType0($result); + }) as any; + $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); + return $typingPromise; +} + +// Private type creation functions +const $$createType0 = models$0.Customer.createFrom; +const $$createType1 = $Create.Nullable($$createType0); +const $$createType2 = $Create.Array($$createType1); diff --git a/frontend/bindings/app/internal/services/index.ts b/frontend/bindings/app/internal/services/index.ts index 532a230..59c2f74 100644 --- a/frontend/bindings/app/internal/services/index.ts +++ b/frontend/bindings/app/internal/services/index.ts @@ -1,17 +1,31 @@ // Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH Â MODIWL // This file is automatically generated. DO NOT EDIT -import * as AuthorService from "./authorservice.js"; -import * as CommentService from "./commentservice.js"; +import * as CustomerService from "./customerservice.js"; import * as ExcelModule from "./excelmodule.js"; -import * as PostService from "./postservice.js"; -import * as PostTypeService from "./posttypeservice.js"; +import * as OrderService from "./orderservice.js"; +import * as PrepTaskService from "./preptaskservice.js"; +import * as ProductTypeService from "./producttypeservice.js"; +import * as ShiftService from "./shiftservice.js"; +import * as TaskService from "./taskservice.js"; +import * as TeamTaskService from "./teamtaskservice.js"; +import * as TeamTypeService from "./teamtypeservice.js"; +import * as WorkAreaService from "./workareaservice.js"; +import * as WorkerService from "./workerservice.js"; +import * as WorkshopService from "./workshopservice.js"; export { - AuthorService, - CommentService, + CustomerService, ExcelModule, - PostService, - PostTypeService + OrderService, + PrepTaskService, + ProductTypeService, + ShiftService, + TaskService, + TeamTaskService, + TeamTypeService, + WorkAreaService, + WorkerService, + WorkshopService }; export * from "./models.js"; diff --git a/frontend/bindings/app/internal/services/models.ts b/frontend/bindings/app/internal/services/models.ts index 41eba10..5f84c2b 100644 --- a/frontend/bindings/app/internal/services/models.ts +++ b/frontend/bindings/app/internal/services/models.ts @@ -9,14 +9,35 @@ import {Create as $Create} from "@wailsio/runtime"; // @ts-ignore: Unused imports import * as models$0 from "../models/models.js"; -export const Author = models$0.Author; -export type Author = models$0.Author; +export const Customer = models$0.Customer; +export type Customer = models$0.Customer; -export const Comment = models$0.Comment; -export type Comment = models$0.Comment; +export const Order = models$0.Order; +export type Order = models$0.Order; -export const Post = models$0.Post; -export type Post = models$0.Post; +export const PrepTask = models$0.PrepTask; +export type PrepTask = models$0.PrepTask; -export const PostType = models$0.PostType; -export type PostType = models$0.PostType; +export const ProductType = models$0.ProductType; +export type ProductType = models$0.ProductType; + +export const Shift = models$0.Shift; +export type Shift = models$0.Shift; + +export const Task = models$0.Task; +export type Task = models$0.Task; + +export const TeamTask = models$0.TeamTask; +export type TeamTask = models$0.TeamTask; + +export const TeamType = models$0.TeamType; +export type TeamType = models$0.TeamType; + +export const WorkArea = models$0.WorkArea; +export type WorkArea = models$0.WorkArea; + +export const Worker = models$0.Worker; +export type Worker = models$0.Worker; + +export const Workshop = models$0.Workshop; +export type Workshop = models$0.Workshop; diff --git a/frontend/bindings/app/internal/services/commentservice.ts b/frontend/bindings/app/internal/services/orderservice.ts similarity index 71% rename from frontend/bindings/app/internal/services/commentservice.ts rename to frontend/bindings/app/internal/services/orderservice.ts index 13da36b..2fd0a72 100644 --- a/frontend/bindings/app/internal/services/commentservice.ts +++ b/frontend/bindings/app/internal/services/orderservice.ts @@ -17,12 +17,12 @@ import * as utils$0 from "../utils/models.js"; import * as $models from "./models.js"; export function Count(): Promise & { cancel(): void } { - let $resultPromise = $Call.ByID(3225397984) as any; + let $resultPromise = $Call.ByID(2566189339) as any; return $resultPromise; } -export function Create(item: $models.Comment): Promise<$models.Comment> & { cancel(): void } { - let $resultPromise = $Call.ByID(4239106089, item) as any; +export function Create(item: $models.Order): Promise<$models.Order> & { cancel(): void } { + let $resultPromise = $Call.ByID(4046033040, item) as any; let $typingPromise = $resultPromise.then(($result: any) => { return $$createType0($result); }) as any; @@ -31,12 +31,12 @@ export function Create(item: $models.Comment): Promise<$models.Comment> & { canc } export function Delete(id: number): Promise & { cancel(): void } { - let $resultPromise = $Call.ByID(2553503582, id) as any; + let $resultPromise = $Call.ByID(1974545647, id) as any; return $resultPromise; } -export function GetAll(): Promise<($models.Comment | null)[]> & { cancel(): void } { - let $resultPromise = $Call.ByID(1805763390) as any; +export function GetAll(): Promise<($models.Order | null)[]> & { cancel(): void } { + let $resultPromise = $Call.ByID(1679856851) as any; let $typingPromise = $resultPromise.then(($result: any) => { return $$createType2($result); }) as any; @@ -44,8 +44,8 @@ export function GetAll(): Promise<($models.Comment | null)[]> & { cancel(): void return $typingPromise; } -export function GetById(id: number): Promise<$models.Comment | null> & { cancel(): void } { - let $resultPromise = $Call.ByID(3217823099, id) as any; +export function GetById(id: number): Promise<$models.Order | null> & { cancel(): void } { + let $resultPromise = $Call.ByID(1201282680, id) as any; let $typingPromise = $resultPromise.then(($result: any) => { return $$createType1($result); }) as any; @@ -53,8 +53,8 @@ export function GetById(id: number): Promise<$models.Comment | null> & { cancel( return $typingPromise; } -export function SearchByAllTextFields(phrase: string): Promise<($models.Comment | null)[]> & { cancel(): void } { - let $resultPromise = $Call.ByID(480333285, phrase) as any; +export function SearchByAllTextFields(phrase: string): Promise<($models.Order | null)[]> & { cancel(): void } { + let $resultPromise = $Call.ByID(963444842, phrase) as any; let $typingPromise = $resultPromise.then(($result: any) => { return $$createType2($result); }) as any; @@ -62,8 +62,8 @@ export function SearchByAllTextFields(phrase: string): Promise<($models.Comment return $typingPromise; } -export function SortedByOrder(fieldsSortingOrder: utils$0.SortField[]): Promise<($models.Comment | null)[]> & { cancel(): void } { - let $resultPromise = $Call.ByID(4244533291, fieldsSortingOrder) as any; +export function SortedByOrder(fieldsSortingOrder: utils$0.SortField[]): Promise<($models.Order | null)[]> & { cancel(): void } { + let $resultPromise = $Call.ByID(3596187064, fieldsSortingOrder) as any; let $typingPromise = $resultPromise.then(($result: any) => { return $$createType2($result); }) as any; @@ -71,8 +71,8 @@ export function SortedByOrder(fieldsSortingOrder: utils$0.SortField[]): Promise< return $typingPromise; } -export function Update(item: $models.Comment): Promise<$models.Comment> & { cancel(): void } { - let $resultPromise = $Call.ByID(3080970936, item) as any; +export function Update(item: $models.Order): Promise<$models.Order> & { cancel(): void } { + let $resultPromise = $Call.ByID(358288261, item) as any; let $typingPromise = $resultPromise.then(($result: any) => { return $$createType0($result); }) as any; @@ -81,6 +81,6 @@ export function Update(item: $models.Comment): Promise<$models.Comment> & { canc } // Private type creation functions -const $$createType0 = models$0.Comment.createFrom; +const $$createType0 = models$0.Order.createFrom; const $$createType1 = $Create.Nullable($$createType0); const $$createType2 = $Create.Array($$createType1); diff --git a/frontend/bindings/app/internal/services/posttypeservice.ts b/frontend/bindings/app/internal/services/preptaskservice.ts similarity index 70% rename from frontend/bindings/app/internal/services/posttypeservice.ts rename to frontend/bindings/app/internal/services/preptaskservice.ts index 88211f7..e95a26d 100644 --- a/frontend/bindings/app/internal/services/posttypeservice.ts +++ b/frontend/bindings/app/internal/services/preptaskservice.ts @@ -17,12 +17,12 @@ import * as utils$0 from "../utils/models.js"; import * as $models from "./models.js"; export function Count(): Promise & { cancel(): void } { - let $resultPromise = $Call.ByID(554487955) as any; + let $resultPromise = $Call.ByID(3107879827) as any; return $resultPromise; } -export function Create(item: $models.PostType): Promise<$models.PostType> & { cancel(): void } { - let $resultPromise = $Call.ByID(1092898136, item) as any; +export function Create(item: $models.PrepTask): Promise<$models.PrepTask> & { cancel(): void } { + let $resultPromise = $Call.ByID(3612638808, item) as any; let $typingPromise = $resultPromise.then(($result: any) => { return $$createType0($result); }) as any; @@ -31,12 +31,12 @@ export function Create(item: $models.PostType): Promise<$models.PostType> & { ca } export function Delete(id: number): Promise & { cancel(): void } { - let $resultPromise = $Call.ByID(2114913543, id) as any; + let $resultPromise = $Call.ByID(339686919, id) as any; return $resultPromise; } -export function GetAll(): Promise<($models.PostType | null)[]> & { cancel(): void } { - let $resultPromise = $Call.ByID(416231387) as any; +export function GetAll(): Promise<($models.PrepTask | null)[]> & { cancel(): void } { + let $resultPromise = $Call.ByID(2935972059) as any; let $typingPromise = $resultPromise.then(($result: any) => { return $$createType2($result); }) as any; @@ -44,8 +44,8 @@ export function GetAll(): Promise<($models.PostType | null)[]> & { cancel(): voi return $typingPromise; } -export function GetById(id: number): Promise<$models.PostType | null> & { cancel(): void } { - let $resultPromise = $Call.ByID(3237123344, id) as any; +export function GetById(id: number): Promise<$models.PrepTask | null> & { cancel(): void } { + let $resultPromise = $Call.ByID(785365008, id) as any; let $typingPromise = $resultPromise.then(($result: any) => { return $$createType1($result); }) as any; @@ -53,8 +53,8 @@ export function GetById(id: number): Promise<$models.PostType | null> & { cancel return $typingPromise; } -export function SearchByAllTextFields(phrase: string): Promise<($models.PostType | null)[]> & { cancel(): void } { - let $resultPromise = $Call.ByID(4207540242, phrase) as any; +export function SearchByAllTextFields(phrase: string): Promise<($models.PrepTask | null)[]> & { cancel(): void } { + let $resultPromise = $Call.ByID(2705089298, phrase) as any; let $typingPromise = $resultPromise.then(($result: any) => { return $$createType2($result); }) as any; @@ -62,8 +62,8 @@ export function SearchByAllTextFields(phrase: string): Promise<($models.PostType return $typingPromise; } -export function SortedByOrder(fieldsSortOrder: utils$0.SortField[]): Promise<($models.PostType | null)[]> & { cancel(): void } { - let $resultPromise = $Call.ByID(1097313920, fieldsSortOrder) as any; +export function SortedByOrder(fieldsSortingOrder: utils$0.SortField[]): Promise<($models.PrepTask | null)[]> & { cancel(): void } { + let $resultPromise = $Call.ByID(423868800, fieldsSortingOrder) as any; let $typingPromise = $resultPromise.then(($result: any) => { return $$createType2($result); }) as any; @@ -71,8 +71,8 @@ export function SortedByOrder(fieldsSortOrder: utils$0.SortField[]): Promise<($m return $typingPromise; } -export function Update(item: $models.PostType): Promise<$models.PostType> & { cancel(): void } { - let $resultPromise = $Call.ByID(2773888269, item) as any; +export function Update(item: $models.PrepTask): Promise<$models.PrepTask> & { cancel(): void } { + let $resultPromise = $Call.ByID(998661645, item) as any; let $typingPromise = $resultPromise.then(($result: any) => { return $$createType0($result); }) as any; @@ -81,6 +81,6 @@ export function Update(item: $models.PostType): Promise<$models.PostType> & { ca } // Private type creation functions -const $$createType0 = models$0.PostType.createFrom; +const $$createType0 = models$0.PrepTask.createFrom; const $$createType1 = $Create.Nullable($$createType0); const $$createType2 = $Create.Array($$createType1); diff --git a/frontend/bindings/app/internal/services/producttypeservice.ts b/frontend/bindings/app/internal/services/producttypeservice.ts new file mode 100644 index 0000000..edbad54 --- /dev/null +++ b/frontend/bindings/app/internal/services/producttypeservice.ts @@ -0,0 +1,86 @@ +// Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH Â MODIWL +// This file is automatically generated. DO NOT EDIT + +// eslint-disable-next-line @typescript-eslint/ban-ts-comment +// @ts-ignore: Unused imports +import {Call as $Call, Create as $Create} from "@wailsio/runtime"; + +// eslint-disable-next-line @typescript-eslint/ban-ts-comment +// @ts-ignore: Unused imports +import * as models$0 from "../models/models.js"; +// eslint-disable-next-line @typescript-eslint/ban-ts-comment +// @ts-ignore: Unused imports +import * as utils$0 from "../utils/models.js"; + +// eslint-disable-next-line @typescript-eslint/ban-ts-comment +// @ts-ignore: Unused imports +import * as $models from "./models.js"; + +export function Count(): Promise & { cancel(): void } { + let $resultPromise = $Call.ByID(3869103122) as any; + return $resultPromise; +} + +export function Create(item: $models.ProductType): Promise<$models.ProductType> & { cancel(): void } { + let $resultPromise = $Call.ByID(2892206627, item) as any; + let $typingPromise = $resultPromise.then(($result: any) => { + return $$createType0($result); + }) as any; + $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); + return $typingPromise; +} + +export function Delete(id: number): Promise & { cancel(): void } { + let $resultPromise = $Call.ByID(2075432208, id) as any; + return $resultPromise; +} + +export function GetAll(): Promise<($models.ProductType | null)[]> & { cancel(): void } { + let $resultPromise = $Call.ByID(4237247244) as any; + let $typingPromise = $resultPromise.then(($result: any) => { + return $$createType2($result); + }) as any; + $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); + return $typingPromise; +} + +export function GetById(id: number): Promise<$models.ProductType | null> & { cancel(): void } { + let $resultPromise = $Call.ByID(3965758897, id) as any; + let $typingPromise = $resultPromise.then(($result: any) => { + return $$createType1($result); + }) as any; + $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); + return $typingPromise; +} + +export function SearchByAllTextFields(phrase: string): Promise<($models.ProductType | null)[]> & { cancel(): void } { + let $resultPromise = $Call.ByID(2567053163, phrase) as any; + let $typingPromise = $resultPromise.then(($result: any) => { + return $$createType2($result); + }) as any; + $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); + return $typingPromise; +} + +export function SortedByOrder(fieldsSortingOrder: utils$0.SortField[]): Promise<($models.ProductType | null)[]> & { cancel(): void } { + let $resultPromise = $Call.ByID(2110028149, fieldsSortingOrder) as any; + let $typingPromise = $resultPromise.then(($result: any) => { + return $$createType2($result); + }) as any; + $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); + return $typingPromise; +} + +export function Update(item: $models.ProductType): Promise<$models.ProductType> & { cancel(): void } { + let $resultPromise = $Call.ByID(2015721618, item) as any; + let $typingPromise = $resultPromise.then(($result: any) => { + return $$createType0($result); + }) as any; + $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); + return $typingPromise; +} + +// Private type creation functions +const $$createType0 = models$0.ProductType.createFrom; +const $$createType1 = $Create.Nullable($$createType0); +const $$createType2 = $Create.Array($$createType1); diff --git a/frontend/bindings/app/internal/services/shiftservice.ts b/frontend/bindings/app/internal/services/shiftservice.ts new file mode 100644 index 0000000..4b7e1ba --- /dev/null +++ b/frontend/bindings/app/internal/services/shiftservice.ts @@ -0,0 +1,86 @@ +// Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH Â MODIWL +// This file is automatically generated. DO NOT EDIT + +// eslint-disable-next-line @typescript-eslint/ban-ts-comment +// @ts-ignore: Unused imports +import {Call as $Call, Create as $Create} from "@wailsio/runtime"; + +// eslint-disable-next-line @typescript-eslint/ban-ts-comment +// @ts-ignore: Unused imports +import * as models$0 from "../models/models.js"; +// eslint-disable-next-line @typescript-eslint/ban-ts-comment +// @ts-ignore: Unused imports +import * as utils$0 from "../utils/models.js"; + +// eslint-disable-next-line @typescript-eslint/ban-ts-comment +// @ts-ignore: Unused imports +import * as $models from "./models.js"; + +export function Count(): Promise & { cancel(): void } { + let $resultPromise = $Call.ByID(3190120795) as any; + return $resultPromise; +} + +export function Create(item: $models.Shift): Promise<$models.Shift> & { cancel(): void } { + let $resultPromise = $Call.ByID(1438106576, item) as any; + let $typingPromise = $resultPromise.then(($result: any) => { + return $$createType0($result); + }) as any; + $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); + return $typingPromise; +} + +export function Delete(id: number): Promise & { cancel(): void } { + let $resultPromise = $Call.ByID(2919255855, id) as any; + return $resultPromise; +} + +export function GetAll(): Promise<($models.Shift | null)[]> & { cancel(): void } { + let $resultPromise = $Call.ByID(1919901971) as any; + let $typingPromise = $resultPromise.then(($result: any) => { + return $$createType2($result); + }) as any; + $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); + return $typingPromise; +} + +export function GetById(id: number): Promise<$models.Shift | null> & { cancel(): void } { + let $resultPromise = $Call.ByID(2418071992, id) as any; + let $typingPromise = $resultPromise.then(($result: any) => { + return $$createType1($result); + }) as any; + $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); + return $typingPromise; +} + +export function SearchByAllTextFields(phrase: string): Promise<($models.Shift | null)[]> & { cancel(): void } { + let $resultPromise = $Call.ByID(2703093162, phrase) as any; + let $typingPromise = $resultPromise.then(($result: any) => { + return $$createType2($result); + }) as any; + $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); + return $typingPromise; +} + +export function SortedByOrder(fieldsSortingOrder: utils$0.SortField[]): Promise<($models.Shift | null)[]> & { cancel(): void } { + let $resultPromise = $Call.ByID(1476306424, fieldsSortingOrder) as any; + let $typingPromise = $resultPromise.then(($result: any) => { + return $$createType2($result); + }) as any; + $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); + return $typingPromise; +} + +export function Update(item: $models.Shift): Promise<$models.Shift> & { cancel(): void } { + let $resultPromise = $Call.ByID(132402373, item) as any; + let $typingPromise = $resultPromise.then(($result: any) => { + return $$createType0($result); + }) as any; + $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); + return $typingPromise; +} + +// Private type creation functions +const $$createType0 = models$0.Shift.createFrom; +const $$createType1 = $Create.Nullable($$createType0); +const $$createType2 = $Create.Array($$createType1); diff --git a/frontend/bindings/app/internal/services/postservice.ts b/frontend/bindings/app/internal/services/taskservice.ts similarity index 72% rename from frontend/bindings/app/internal/services/postservice.ts rename to frontend/bindings/app/internal/services/taskservice.ts index 89d1f2c..fbd32b5 100644 --- a/frontend/bindings/app/internal/services/postservice.ts +++ b/frontend/bindings/app/internal/services/taskservice.ts @@ -17,12 +17,12 @@ import * as utils$0 from "../utils/models.js"; import * as $models from "./models.js"; export function Count(): Promise & { cancel(): void } { - let $resultPromise = $Call.ByID(3109924027) as any; + let $resultPromise = $Call.ByID(2626684778) as any; return $resultPromise; } -export function Create(item: $models.Post): Promise<$models.Post> & { cancel(): void } { - let $resultPromise = $Call.ByID(1443399856, item) as any; +export function Create(item: $models.Task): Promise<$models.Task> & { cancel(): void } { + let $resultPromise = $Call.ByID(893779179, item) as any; let $typingPromise = $resultPromise.then(($result: any) => { return $$createType0($result); }) as any; @@ -31,12 +31,12 @@ export function Create(item: $models.Post): Promise<$models.Post> & { cancel(): } export function Delete(id: number): Promise & { cancel(): void } { - let $resultPromise = $Call.ByID(2924549135, id) as any; + let $resultPromise = $Call.ByID(3033756968, id) as any; return $resultPromise; } -export function GetAll(): Promise<($models.Post | null)[]> & { cancel(): void } { - let $resultPromise = $Call.ByID(65691059) as any; +export function GetAll(): Promise<($models.Task | null)[]> & { cancel(): void } { + let $resultPromise = $Call.ByID(1660059028) as any; let $typingPromise = $resultPromise.then(($result: any) => { return $$createType2($result); }) as any; @@ -44,8 +44,8 @@ export function GetAll(): Promise<($models.Post | null)[]> & { cancel(): void } return $typingPromise; } -export function GetById(id: number): Promise<$models.Post | null> & { cancel(): void } { - let $resultPromise = $Call.ByID(4074736792, id) as any; +export function GetById(id: number): Promise<$models.Task | null> & { cancel(): void } { + let $resultPromise = $Call.ByID(3152185033, id) as any; let $typingPromise = $resultPromise.then(($result: any) => { return $$createType1($result); }) as any; @@ -53,8 +53,8 @@ export function GetById(id: number): Promise<$models.Post | null> & { cancel(): return $typingPromise; } -export function SearchByAllTextFields(phrase: string): Promise<($models.Post | null)[]> & { cancel(): void } { - let $resultPromise = $Call.ByID(591521802, phrase) as any; +export function SearchByAllTextFields(phrase: string): Promise<($models.Task | null)[]> & { cancel(): void } { + let $resultPromise = $Call.ByID(3905257587, phrase) as any; let $typingPromise = $resultPromise.then(($result: any) => { return $$createType2($result); }) as any; @@ -62,8 +62,8 @@ export function SearchByAllTextFields(phrase: string): Promise<($models.Post | n return $typingPromise; } -export function SortedByOrder(fieldsSortOrder: utils$0.SortField[]): Promise<($models.Post | null)[]> & { cancel(): void } { - let $resultPromise = $Call.ByID(471862744, fieldsSortOrder) as any; +export function SortedByOrder(fieldsSortingOrder: utils$0.SortField[]): Promise<($models.Task | null)[]> & { cancel(): void } { + let $resultPromise = $Call.ByID(2942045693, fieldsSortingOrder) as any; let $typingPromise = $resultPromise.then(($result: any) => { return $$createType2($result); }) as any; @@ -71,8 +71,8 @@ export function SortedByOrder(fieldsSortOrder: utils$0.SortField[]): Promise<($m return $typingPromise; } -export function Update(item: $models.Post): Promise<$models.Post> & { cancel(): void } { - let $resultPromise = $Call.ByID(137798821, item) as any; +export function Update(item: $models.Task): Promise<$models.Task> & { cancel(): void } { + let $resultPromise = $Call.ByID(3997472442, item) as any; let $typingPromise = $resultPromise.then(($result: any) => { return $$createType0($result); }) as any; @@ -81,6 +81,6 @@ export function Update(item: $models.Post): Promise<$models.Post> & { cancel(): } // Private type creation functions -const $$createType0 = models$0.Post.createFrom; +const $$createType0 = models$0.Task.createFrom; const $$createType1 = $Create.Nullable($$createType0); const $$createType2 = $Create.Array($$createType1); diff --git a/frontend/bindings/app/internal/services/teamtaskservice.ts b/frontend/bindings/app/internal/services/teamtaskservice.ts new file mode 100644 index 0000000..dc178fc --- /dev/null +++ b/frontend/bindings/app/internal/services/teamtaskservice.ts @@ -0,0 +1,86 @@ +// Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH Â MODIWL +// This file is automatically generated. DO NOT EDIT + +// eslint-disable-next-line @typescript-eslint/ban-ts-comment +// @ts-ignore: Unused imports +import {Call as $Call, Create as $Create} from "@wailsio/runtime"; + +// eslint-disable-next-line @typescript-eslint/ban-ts-comment +// @ts-ignore: Unused imports +import * as models$0 from "../models/models.js"; +// eslint-disable-next-line @typescript-eslint/ban-ts-comment +// @ts-ignore: Unused imports +import * as utils$0 from "../utils/models.js"; + +// eslint-disable-next-line @typescript-eslint/ban-ts-comment +// @ts-ignore: Unused imports +import * as $models from "./models.js"; + +export function Count(): Promise & { cancel(): void } { + let $resultPromise = $Call.ByID(3706236529) as any; + return $resultPromise; +} + +export function Create(item: $models.TeamTask): Promise<$models.TeamTask> & { cancel(): void } { + let $resultPromise = $Call.ByID(757028622, item) as any; + let $typingPromise = $resultPromise.then(($result: any) => { + return $$createType0($result); + }) as any; + $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); + return $typingPromise; +} + +export function Delete(id: number): Promise & { cancel(): void } { + let $resultPromise = $Call.ByID(3016324197, id) as any; + return $resultPromise; +} + +export function GetAll(): Promise<($models.TeamTask | null)[]> & { cancel(): void } { + let $resultPromise = $Call.ByID(2153018165) as any; + let $typingPromise = $resultPromise.then(($result: any) => { + return $$createType2($result); + }) as any; + $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); + return $typingPromise; +} + +export function GetById(id: number): Promise<$models.TeamTask | null> & { cancel(): void } { + let $resultPromise = $Call.ByID(457048658, id) as any; + let $typingPromise = $resultPromise.then(($result: any) => { + return $$createType1($result); + }) as any; + $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); + return $typingPromise; +} + +export function SearchByAllTextFields(phrase: string): Promise<($models.TeamTask | null)[]> & { cancel(): void } { + let $resultPromise = $Call.ByID(352409060, phrase) as any; + let $typingPromise = $resultPromise.then(($result: any) => { + return $$createType2($result); + }) as any; + $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); + return $typingPromise; +} + +export function SortedByOrder(fieldsSortingOrder: utils$0.SortField[]): Promise<($models.TeamTask | null)[]> & { cancel(): void } { + let $resultPromise = $Call.ByID(1507635678, fieldsSortingOrder) as any; + let $typingPromise = $resultPromise.then(($result: any) => { + return $$createType2($result); + }) as any; + $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); + return $typingPromise; +} + +export function Update(item: $models.TeamTask): Promise<$models.TeamTask> & { cancel(): void } { + let $resultPromise = $Call.ByID(1052797555, item) as any; + let $typingPromise = $resultPromise.then(($result: any) => { + return $$createType0($result); + }) as any; + $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); + return $typingPromise; +} + +// Private type creation functions +const $$createType0 = models$0.TeamTask.createFrom; +const $$createType1 = $Create.Nullable($$createType0); +const $$createType2 = $Create.Array($$createType1); diff --git a/frontend/bindings/app/internal/services/teamtypeservice.ts b/frontend/bindings/app/internal/services/teamtypeservice.ts new file mode 100644 index 0000000..3e29201 --- /dev/null +++ b/frontend/bindings/app/internal/services/teamtypeservice.ts @@ -0,0 +1,86 @@ +// Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH Â MODIWL +// This file is automatically generated. DO NOT EDIT + +// eslint-disable-next-line @typescript-eslint/ban-ts-comment +// @ts-ignore: Unused imports +import {Call as $Call, Create as $Create} from "@wailsio/runtime"; + +// eslint-disable-next-line @typescript-eslint/ban-ts-comment +// @ts-ignore: Unused imports +import * as models$0 from "../models/models.js"; +// eslint-disable-next-line @typescript-eslint/ban-ts-comment +// @ts-ignore: Unused imports +import * as utils$0 from "../utils/models.js"; + +// eslint-disable-next-line @typescript-eslint/ban-ts-comment +// @ts-ignore: Unused imports +import * as $models from "./models.js"; + +export function Count(): Promise & { cancel(): void } { + let $resultPromise = $Call.ByID(1823045730) as any; + return $resultPromise; +} + +export function Create(item: $models.TeamType): Promise<$models.TeamType> & { cancel(): void } { + let $resultPromise = $Call.ByID(3331874131, item) as any; + let $typingPromise = $resultPromise.then(($result: any) => { + return $$createType0($result); + }) as any; + $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); + return $typingPromise; +} + +export function Delete(id: number): Promise & { cancel(): void } { + let $resultPromise = $Call.ByID(1006566688, id) as any; + return $resultPromise; +} + +export function GetAll(): Promise<($models.TeamType | null)[]> & { cancel(): void } { + let $resultPromise = $Call.ByID(63845852) as any; + let $typingPromise = $resultPromise.then(($result: any) => { + return $$createType2($result); + }) as any; + $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); + return $typingPromise; +} + +export function GetById(id: number): Promise<$models.TeamType | null> & { cancel(): void } { + let $resultPromise = $Call.ByID(1530543873, id) as any; + let $typingPromise = $resultPromise.then(($result: any) => { + return $$createType1($result); + }) as any; + $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); + return $typingPromise; +} + +export function SearchByAllTextFields(phrase: string): Promise<($models.TeamType | null)[]> & { cancel(): void } { + let $resultPromise = $Call.ByID(201965595, phrase) as any; + let $typingPromise = $resultPromise.then(($result: any) => { + return $$createType2($result); + }) as any; + $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); + return $typingPromise; +} + +export function SortedByOrder(fieldsSortingOrder: utils$0.SortField[]): Promise<($models.TeamType | null)[]> & { cancel(): void } { + let $resultPromise = $Call.ByID(2936929733, fieldsSortingOrder) as any; + let $typingPromise = $resultPromise.then(($result: any) => { + return $$createType2($result); + }) as any; + $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); + return $typingPromise; +} + +export function Update(item: $models.TeamType): Promise<$models.TeamType> & { cancel(): void } { + let $resultPromise = $Call.ByID(918118946, item) as any; + let $typingPromise = $resultPromise.then(($result: any) => { + return $$createType0($result); + }) as any; + $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); + return $typingPromise; +} + +// Private type creation functions +const $$createType0 = models$0.TeamType.createFrom; +const $$createType1 = $Create.Nullable($$createType0); +const $$createType2 = $Create.Array($$createType1); diff --git a/frontend/bindings/app/internal/services/workareaservice.ts b/frontend/bindings/app/internal/services/workareaservice.ts new file mode 100644 index 0000000..6e53e3e --- /dev/null +++ b/frontend/bindings/app/internal/services/workareaservice.ts @@ -0,0 +1,86 @@ +// Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH Â MODIWL +// This file is automatically generated. DO NOT EDIT + +// eslint-disable-next-line @typescript-eslint/ban-ts-comment +// @ts-ignore: Unused imports +import {Call as $Call, Create as $Create} from "@wailsio/runtime"; + +// eslint-disable-next-line @typescript-eslint/ban-ts-comment +// @ts-ignore: Unused imports +import * as models$0 from "../models/models.js"; +// eslint-disable-next-line @typescript-eslint/ban-ts-comment +// @ts-ignore: Unused imports +import * as utils$0 from "../utils/models.js"; + +// eslint-disable-next-line @typescript-eslint/ban-ts-comment +// @ts-ignore: Unused imports +import * as $models from "./models.js"; + +export function Count(): Promise & { cancel(): void } { + let $resultPromise = $Call.ByID(2628202257) as any; + return $resultPromise; +} + +export function Create(item: $models.WorkArea): Promise<$models.WorkArea> & { cancel(): void } { + let $resultPromise = $Call.ByID(969170222, item) as any; + let $typingPromise = $resultPromise.then(($result: any) => { + return $$createType0($result); + }) as any; + $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); + return $typingPromise; +} + +export function Delete(id: number): Promise & { cancel(): void } { + let $resultPromise = $Call.ByID(421967749, id) as any; + return $resultPromise; +} + +export function GetAll(): Promise<($models.WorkArea | null)[]> & { cancel(): void } { + let $resultPromise = $Call.ByID(2440807317) as any; + let $typingPromise = $resultPromise.then(($result: any) => { + return $$createType2($result); + }) as any; + $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); + return $typingPromise; +} + +export function GetById(id: number): Promise<$models.WorkArea | null> & { cancel(): void } { + let $resultPromise = $Call.ByID(2721437042, id) as any; + let $typingPromise = $resultPromise.then(($result: any) => { + return $$createType1($result); + }) as any; + $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); + return $typingPromise; +} + +export function SearchByAllTextFields(phrase: string): Promise<($models.WorkArea | null)[]> & { cancel(): void } { + let $resultPromise = $Call.ByID(3482576004, phrase) as any; + let $typingPromise = $resultPromise.then(($result: any) => { + return $$createType2($result); + }) as any; + $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); + return $typingPromise; +} + +export function SortedByOrder(fieldsSortingOrder: utils$0.SortField[]): Promise<($models.WorkArea | null)[]> & { cancel(): void } { + let $resultPromise = $Call.ByID(571753726, fieldsSortingOrder) as any; + let $typingPromise = $resultPromise.then(($result: any) => { + return $$createType2($result); + }) as any; + $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); + return $typingPromise; +} + +export function Update(item: $models.WorkArea): Promise<$models.WorkArea> & { cancel(): void } { + let $resultPromise = $Call.ByID(2753408403, item) as any; + let $typingPromise = $resultPromise.then(($result: any) => { + return $$createType0($result); + }) as any; + $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); + return $typingPromise; +} + +// Private type creation functions +const $$createType0 = models$0.WorkArea.createFrom; +const $$createType1 = $Create.Nullable($$createType0); +const $$createType2 = $Create.Array($$createType1); diff --git a/frontend/bindings/app/internal/services/authorservice.ts b/frontend/bindings/app/internal/services/workerservice.ts similarity index 72% rename from frontend/bindings/app/internal/services/authorservice.ts rename to frontend/bindings/app/internal/services/workerservice.ts index 9db5ddc..bf22488 100644 --- a/frontend/bindings/app/internal/services/authorservice.ts +++ b/frontend/bindings/app/internal/services/workerservice.ts @@ -17,12 +17,12 @@ import * as utils$0 from "../utils/models.js"; import * as $models from "./models.js"; export function Count(): Promise & { cancel(): void } { - let $resultPromise = $Call.ByID(3969879864) as any; + let $resultPromise = $Call.ByID(3131879451) as any; return $resultPromise; } -export function Create(item: $models.Author): Promise<$models.Author> & { cancel(): void } { - let $resultPromise = $Call.ByID(3684602449, item) as any; +export function Create(item: $models.Worker): Promise<$models.Worker> & { cancel(): void } { + let $resultPromise = $Call.ByID(90914192, item) as any; let $typingPromise = $resultPromise.then(($result: any) => { return $$createType0($result); }) as any; @@ -31,12 +31,12 @@ export function Create(item: $models.Author): Promise<$models.Author> & { cancel } export function Delete(id: number): Promise & { cancel(): void } { - let $resultPromise = $Call.ByID(2096845974, id) as any; + let $resultPromise = $Call.ByID(2314394095, id) as any; return $resultPromise; } -export function GetAll(): Promise<($models.Author | null)[]> & { cancel(): void } { - let $resultPromise = $Call.ByID(3248293926) as any; +export function GetAll(): Promise<($models.Worker | null)[]> & { cancel(): void } { + let $resultPromise = $Call.ByID(2019705299) as any; let $typingPromise = $resultPromise.then(($result: any) => { return $$createType2($result); }) as any; @@ -44,8 +44,8 @@ export function GetAll(): Promise<($models.Author | null)[]> & { cancel(): void return $typingPromise; } -export function GetById(id: number): Promise<$models.Author | null> & { cancel(): void } { - let $resultPromise = $Call.ByID(1703016211, id) as any; +export function GetById(id: number): Promise<$models.Worker | null> & { cancel(): void } { + let $resultPromise = $Call.ByID(721253752, id) as any; let $typingPromise = $resultPromise.then(($result: any) => { return $$createType1($result); }) as any; @@ -53,8 +53,8 @@ export function GetById(id: number): Promise<$models.Author | null> & { cancel() return $typingPromise; } -export function SearchByAllTextFields(phrase: string): Promise<($models.Author | null)[]> & { cancel(): void } { - let $resultPromise = $Call.ByID(3812644109, phrase) as any; +export function SearchByAllTextFields(phrase: string): Promise<($models.Worker | null)[]> & { cancel(): void } { + let $resultPromise = $Call.ByID(4245847914, phrase) as any; let $typingPromise = $resultPromise.then(($result: any) => { return $$createType2($result); }) as any; @@ -62,8 +62,8 @@ export function SearchByAllTextFields(phrase: string): Promise<($models.Author | return $typingPromise; } -export function SortedByOrder(fieldsSortingOrder: utils$0.SortField[]): Promise<($models.Author | null)[]> & { cancel(): void } { - let $resultPromise = $Call.ByID(3046628691, fieldsSortingOrder) as any; +export function SortedByOrder(fieldsSortingOrder: utils$0.SortField[]): Promise<($models.Worker | null)[]> & { cancel(): void } { + let $resultPromise = $Call.ByID(3186234552, fieldsSortingOrder) as any; let $typingPromise = $resultPromise.then(($result: any) => { return $$createType2($result); }) as any; @@ -71,8 +71,8 @@ export function SortedByOrder(fieldsSortingOrder: utils$0.SortField[]): Promise< return $typingPromise; } -export function Update(item: $models.Author): Promise<$models.Author> & { cancel(): void } { - let $resultPromise = $Call.ByID(2240704960, item) as any; +export function Update(item: $models.Worker): Promise<$models.Worker> & { cancel(): void } { + let $resultPromise = $Call.ByID(698136709, item) as any; let $typingPromise = $resultPromise.then(($result: any) => { return $$createType0($result); }) as any; @@ -81,6 +81,6 @@ export function Update(item: $models.Author): Promise<$models.Author> & { cancel } // Private type creation functions -const $$createType0 = models$0.Author.createFrom; +const $$createType0 = models$0.Worker.createFrom; const $$createType1 = $Create.Nullable($$createType0); const $$createType2 = $Create.Array($$createType1); diff --git a/frontend/bindings/app/internal/services/workshopservice.ts b/frontend/bindings/app/internal/services/workshopservice.ts new file mode 100644 index 0000000..640ac5c --- /dev/null +++ b/frontend/bindings/app/internal/services/workshopservice.ts @@ -0,0 +1,86 @@ +// Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH Â MODIWL +// This file is automatically generated. DO NOT EDIT + +// eslint-disable-next-line @typescript-eslint/ban-ts-comment +// @ts-ignore: Unused imports +import {Call as $Call, Create as $Create} from "@wailsio/runtime"; + +// eslint-disable-next-line @typescript-eslint/ban-ts-comment +// @ts-ignore: Unused imports +import * as models$0 from "../models/models.js"; +// eslint-disable-next-line @typescript-eslint/ban-ts-comment +// @ts-ignore: Unused imports +import * as utils$0 from "../utils/models.js"; + +// eslint-disable-next-line @typescript-eslint/ban-ts-comment +// @ts-ignore: Unused imports +import * as $models from "./models.js"; + +export function Count(): Promise & { cancel(): void } { + let $resultPromise = $Call.ByID(2983034394) as any; + return $resultPromise; +} + +export function Create(item: $models.Workshop): Promise<$models.Workshop> & { cancel(): void } { + let $resultPromise = $Call.ByID(982947003, item) as any; + let $typingPromise = $resultPromise.then(($result: any) => { + return $$createType0($result); + }) as any; + $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); + return $typingPromise; +} + +export function Delete(id: number): Promise & { cancel(): void } { + let $resultPromise = $Call.ByID(3145051352, id) as any; + return $resultPromise; +} + +export function GetAll(): Promise<($models.Workshop | null)[]> & { cancel(): void } { + let $resultPromise = $Call.ByID(806282052) as any; + let $typingPromise = $resultPromise.then(($result: any) => { + return $$createType2($result); + }) as any; + $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); + return $typingPromise; +} + +export function GetById(id: number): Promise<$models.Workshop | null> & { cancel(): void } { + let $resultPromise = $Call.ByID(1829452217, id) as any; + let $typingPromise = $resultPromise.then(($result: any) => { + return $$createType1($result); + }) as any; + $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); + return $typingPromise; +} + +export function SearchByAllTextFields(phrase: string): Promise<($models.Workshop | null)[]> & { cancel(): void } { + let $resultPromise = $Call.ByID(283835139, phrase) as any; + let $typingPromise = $resultPromise.then(($result: any) => { + return $$createType2($result); + }) as any; + $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); + return $typingPromise; +} + +export function SortedByOrder(fieldsSortingOrder: utils$0.SortField[]): Promise<($models.Workshop | null)[]> & { cancel(): void } { + let $resultPromise = $Call.ByID(3581052397, fieldsSortingOrder) as any; + let $typingPromise = $resultPromise.then(($result: any) => { + return $$createType2($result); + }) as any; + $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); + return $typingPromise; +} + +export function Update(item: $models.Workshop): Promise<$models.Workshop> & { cancel(): void } { + let $resultPromise = $Call.ByID(1795717546, item) as any; + let $typingPromise = $resultPromise.then(($result: any) => { + return $$createType0($result); + }) as any; + $typingPromise.cancel = $resultPromise.cancel.bind($resultPromise); + return $typingPromise; +} + +// Private type creation functions +const $$createType0 = models$0.Workshop.createFrom; +const $$createType1 = $Create.Nullable($$createType0); +const $$createType2 = $Create.Array($$createType1); diff --git a/frontend/src/author/AuthorScheme.vue b/frontend/src/author/AuthorScheme.vue deleted file mode 100644 index 113b9fc..0000000 --- a/frontend/src/author/AuthorScheme.vue +++ /dev/null @@ -1,89 +0,0 @@ - - - diff --git a/frontend/src/author/author.service.ts b/frontend/src/author/author.service.ts deleted file mode 100644 index 88d43b3..0000000 --- a/frontend/src/author/author.service.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { - GetAll, - Create, - Delete, - GetById, - Update, - Count, -} from "../../bindings/app/internal/services/authorservice.ts"; -import type { Author } from "../../bindings/app/internal/services"; -import type { IService } from "../types/service.type.ts"; - -export default class AuthorService implements IService { - async read(id: number) { - return (await GetById(id)) as Author; - } - - async readAll() { - return (await GetAll()) as Author[]; - } - - async create(item: Author) { - await Create(item); - } - - async delete(id: number) { - return await Delete(id); - } - - async update(item: Author) { - await Update(item); - } - - async count() { - return await Count(); - } -} diff --git a/frontend/src/comment/CommentScheme.vue b/frontend/src/comment/CommentScheme.vue deleted file mode 100644 index af901e2..0000000 --- a/frontend/src/comment/CommentScheme.vue +++ /dev/null @@ -1,93 +0,0 @@ - - - diff --git a/frontend/src/comment/comment.service.ts b/frontend/src/comment/comment.service.ts deleted file mode 100644 index a1dc85e..0000000 --- a/frontend/src/comment/comment.service.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { - GetAll, - Create, - Delete, - GetById, - Update, - Count, -} from "../../bindings/app/internal/services/commentservice.ts"; -import type { Comment } from "../../bindings/app/internal/services"; -import type { IService } from "../types/service.type.ts"; - -export default class CommentService implements IService { - async read(id: number) { - return (await GetById(id)) as Comment; - } - - async readAll() { - return (await GetAll()) as Comment[]; - } - - async create(item: Comment) { - await Create(item); - } - - async delete(id: number) { - return await Delete(id); - } - - async update(item: Comment) { - await Update(item); - } - - async count() { - return await Count(); - } -} diff --git a/frontend/src/customer/CustomerScheme.vue b/frontend/src/customer/CustomerScheme.vue new file mode 100644 index 0000000..8a37891 --- /dev/null +++ b/frontend/src/customer/CustomerScheme.vue @@ -0,0 +1,95 @@ + + + diff --git a/frontend/src/customer/customer.service.ts b/frontend/src/customer/customer.service.ts new file mode 100644 index 0000000..d7a8206 --- /dev/null +++ b/frontend/src/customer/customer.service.ts @@ -0,0 +1,52 @@ +import { + GetAll, + Create, + Delete, + GetById, + Update, + Count, + SortedByOrder, + SearchByAllTextFields, +} from "../../bindings/app/internal/services/customerservice"; +import type { Customer } from "../../bindings/app/internal/services"; +import type { IService } from "../types/service.type"; +import type { SortOptions } from "../types/sort-options.type"; + +export default class CustomerService implements IService { + async read(id: number) { + return (await GetById(id)) as Customer; + } + + async readAll() { + return (await GetAll()) as Customer[]; + } + + async create(item: Customer) { + await Create(item); + } + + async delete(id: number) { + return await Delete(id); + } + + async update(item: Customer) { + await Update(item); + } + + async count() { + return await Count(); + } + + async search(input: string) { + return (await SearchByAllTextFields(input)) as Customer[]; + } + + async sort(options: SortOptions) { + return (await SortedByOrder( + Object.entries(options).map((item) => ({ + Name: item[0], + Order: item[1], + })), + )) as Customer[]; + } +} diff --git a/frontend/src/order/OrderScheme.vue b/frontend/src/order/OrderScheme.vue new file mode 100644 index 0000000..1fc9f8f --- /dev/null +++ b/frontend/src/order/OrderScheme.vue @@ -0,0 +1,165 @@ + + + diff --git a/frontend/src/order/order.service.ts b/frontend/src/order/order.service.ts new file mode 100644 index 0000000..f54c206 --- /dev/null +++ b/frontend/src/order/order.service.ts @@ -0,0 +1,52 @@ +import { + GetAll, + Create, + Delete, + GetById, + Update, + Count, + SortedByOrder, + SearchByAllTextFields, +} from "../../bindings/app/internal/services/orderservice"; +import type { Order } from "../../bindings/app/internal/services"; +import type { IService } from "../types/service.type"; +import type { SortOptions } from "../types/sort-options.type"; + +export default class OrderService implements IService { + async read(id: number) { + return (await GetById(id)) as Order; + } + + async readAll() { + return (await GetAll()) as Order[]; + } + + async create(item: Order) { + await Create(item); + } + + async delete(id: number) { + return await Delete(id); + } + + async update(item: Order) { + await Update(item); + } + + async count() { + return await Count(); + } + + async search(input: string) { + return (await SearchByAllTextFields(input)) as Order[]; + } + + async sort(options: SortOptions) { + return (await SortedByOrder( + Object.entries(options).map((item) => ({ + Name: item[0], + Order: item[1], + })), + )) as Order[]; + } +} diff --git a/frontend/src/pages/Index.vue b/frontend/src/pages/Index.vue index ccd3edd..667d010 100644 --- a/frontend/src/pages/Index.vue +++ b/frontend/src/pages/Index.vue @@ -1,34 +1,43 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file + + + \ No newline at end of file diff --git a/frontend/src/pages/pages/GrebenPage.vue b/frontend/src/pages/pages/GrebenPage.vue deleted file mode 100644 index 8ae9ca0..0000000 --- a/frontend/src/pages/pages/GrebenPage.vue +++ /dev/null @@ -1,3 +0,0 @@ - \ No newline at end of file diff --git a/frontend/src/pages/pages/UserPage.vue b/frontend/src/pages/pages/UserPage.vue deleted file mode 100644 index 7b541d3..0000000 --- a/frontend/src/pages/pages/UserPage.vue +++ /dev/null @@ -1,14 +0,0 @@ - - - \ No newline at end of file diff --git a/frontend/src/pages/tables/PostTablePage.vue b/frontend/src/pages/tables/PostTablePage.vue deleted file mode 100644 index a0cd9f3..0000000 --- a/frontend/src/pages/tables/PostTablePage.vue +++ /dev/null @@ -1,7 +0,0 @@ - - - \ No newline at end of file diff --git a/frontend/src/post/PostScheme.vue b/frontend/src/post/PostScheme.vue deleted file mode 100644 index 59f7188..0000000 --- a/frontend/src/post/PostScheme.vue +++ /dev/null @@ -1,144 +0,0 @@ - - - diff --git a/frontend/src/post/post.service.ts b/frontend/src/post/post.service.ts deleted file mode 100644 index e2f79a6..0000000 --- a/frontend/src/post/post.service.ts +++ /dev/null @@ -1,47 +0,0 @@ -import { - GetAll, - Create, - Delete, - GetById, - Update, - Count, SortedByOrder, -} from "../../bindings/app/internal/services/postservice.ts"; -import type { Post } from "../../bindings/app/internal/services"; -import type { IService } from "../types/service.type.ts"; -import type {SortOptions} from "../types/sort-options.type.ts"; -import {SortField} from "../../bindings/app/internal/utils"; -import { SearchByAllTextFields } from "../../bindings/app/internal/services/postservice.ts"; - -export default class PostService implements IService { - async read(id: number) { - return (await GetById(id)) as Post; - } - - async readAll() { - return (await GetAll()) as Post[]; - } - - async create(item: Post) { - await Create(item); - } - - async delete(id: number) { - return await Delete(id); - } - - async update(item: Post) { - await Update(item); - } - - async count() { - return await Count(); - } - - async sort(options: SortOptions) { - return await SortedByOrder(Object.entries(options).map(item => ({Name: item[0], Order: item[1]}))) as Post[] - } - - async search(input: string): Promise { - return await SearchByAllTextFields(input) as Post[] - } -} diff --git a/frontend/src/posttype/PosttypeScheme.vue b/frontend/src/posttype/PosttypeScheme.vue deleted file mode 100644 index 68a96a4..0000000 --- a/frontend/src/posttype/PosttypeScheme.vue +++ /dev/null @@ -1,62 +0,0 @@ - - - diff --git a/frontend/src/posttype/posttype.service.ts b/frontend/src/posttype/posttype.service.ts deleted file mode 100644 index 0914bca..0000000 --- a/frontend/src/posttype/posttype.service.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { - GetAll, - Create, - Delete, - GetById, - Update, - Count, -} from "../../bindings/app/internal/services/posttypeservice.ts"; -import type { PostType } from "../../bindings/app/internal/services"; -import type { IService } from "../types/service.type.ts"; - -export default class PostTypeService implements IService { - async read(id: number) { - return (await GetById(id)) as PostType; - } - - async readAll() { - return (await GetAll()) as PostType[]; - } - - async create(item: PostType) { - await Create(item); - } - - async delete(id: number) { - return await Delete(id); - } - - async update(item: PostType) { - await Update(item); - } - - async count() { - return await Count(); - } -} diff --git a/frontend/src/preptask/PreptaskScheme.vue b/frontend/src/preptask/PreptaskScheme.vue new file mode 100644 index 0000000..884ddc3 --- /dev/null +++ b/frontend/src/preptask/PreptaskScheme.vue @@ -0,0 +1,141 @@ + + + diff --git a/frontend/src/preptask/preptask.service.ts b/frontend/src/preptask/preptask.service.ts new file mode 100644 index 0000000..0acfcd7 --- /dev/null +++ b/frontend/src/preptask/preptask.service.ts @@ -0,0 +1,52 @@ +import { + GetAll, + Create, + Delete, + GetById, + Update, + Count, + SortedByOrder, + SearchByAllTextFields, +} from "../../bindings/app/internal/services/preptaskservice"; +import type { PrepTask } from "../../bindings/app/internal/services"; +import type { IService } from "../types/service.type"; +import type { SortOptions } from "../types/sort-options.type"; + +export default class PrepTaskService implements IService { + async read(id: number) { + return (await GetById(id)) as PrepTask; + } + + async readAll() { + return (await GetAll()) as PrepTask[]; + } + + async create(item: PrepTask) { + await Create(item); + } + + async delete(id: number) { + return await Delete(id); + } + + async update(item: PrepTask) { + await Update(item); + } + + async count() { + return await Count(); + } + + async search(input: string) { + return (await SearchByAllTextFields(input)) as PrepTask[]; + } + + async sort(options: SortOptions) { + return (await SortedByOrder( + Object.entries(options).map((item) => ({ + Name: item[0], + Order: item[1], + })), + )) as PrepTask[]; + } +} diff --git a/frontend/src/producttype/ProducttypeScheme.vue b/frontend/src/producttype/ProducttypeScheme.vue new file mode 100644 index 0000000..02bd819 --- /dev/null +++ b/frontend/src/producttype/ProducttypeScheme.vue @@ -0,0 +1,72 @@ + + + diff --git a/frontend/src/producttype/producttype.service.ts b/frontend/src/producttype/producttype.service.ts new file mode 100644 index 0000000..8032215 --- /dev/null +++ b/frontend/src/producttype/producttype.service.ts @@ -0,0 +1,52 @@ +import { + GetAll, + Create, + Delete, + GetById, + Update, + Count, + SortedByOrder, + SearchByAllTextFields, +} from "../../bindings/app/internal/services/producttypeservice"; +import type { ProductType } from "../../bindings/app/internal/services"; +import type { IService } from "../types/service.type"; +import type { SortOptions } from "../types/sort-options.type"; + +export default class ProductTypeService implements IService { + async read(id: number) { + return (await GetById(id)) as ProductType; + } + + async readAll() { + return (await GetAll()) as ProductType[]; + } + + async create(item: ProductType) { + await Create(item); + } + + async delete(id: number) { + return await Delete(id); + } + + async update(item: ProductType) { + await Update(item); + } + + async count() { + return await Count(); + } + + async search(input: string) { + return (await SearchByAllTextFields(input)) as ProductType[]; + } + + async sort(options: SortOptions) { + return (await SortedByOrder( + Object.entries(options).map((item) => ({ + Name: item[0], + Order: item[1], + })), + )) as ProductType[]; + } +} diff --git a/frontend/src/router/router.ts b/frontend/src/router/router.ts index 99135c6..b8b4c01 100644 --- a/frontend/src/router/router.ts +++ b/frontend/src/router/router.ts @@ -1,32 +1,32 @@ import { createRouter, createWebHistory, type RouteRecordRaw } from "vue-router"; import Index from "../pages/Index.vue"; -import UserPage from "../pages/pages/UserPage.vue"; -import PostTablePage from "../pages/tables/PostTablePage.vue"; -import GrebenPage from "../pages/pages/GrebenPage.vue"; + export const routes: RouteRecordRaw[] = [{ path: "/", component: Index, name: 'Главная' -}, { - path: '/user', - name: 'Пользователь', - component: UserPage, - redirect: '/user/post', - children: [ - { - component: PostTablePage, - path: '/user/post', - name: 'Новости' - }, { - component: GrebenPage, - path: '/user/greben', - name: 'Страница гребня' - } - ] -}] as const +}, ] as const export const router = createRouter({ history: createWebHistory(), routes, -}); \ No newline at end of file +}); + +// { +// path: '/user', +// name: 'Пользователь', +// component: UserPage, +// redirect: '/user/post', +// children: [ +// { +// component: PostTablePage, +// path: '/user/post', +// name: 'Новости' +// }, { +// component: GrebenPage, +// path: '/user/greben', +// name: 'Страница гребня' +// } +// ] +// } \ No newline at end of file diff --git a/frontend/src/shift/ShiftScheme.vue b/frontend/src/shift/ShiftScheme.vue new file mode 100644 index 0000000..5c7e4b1 --- /dev/null +++ b/frontend/src/shift/ShiftScheme.vue @@ -0,0 +1,140 @@ + + + diff --git a/frontend/src/shift/shift.service.ts b/frontend/src/shift/shift.service.ts new file mode 100644 index 0000000..f30bb59 --- /dev/null +++ b/frontend/src/shift/shift.service.ts @@ -0,0 +1,52 @@ +import { + GetAll, + Create, + Delete, + GetById, + Update, + Count, + SortedByOrder, + SearchByAllTextFields, +} from "../../bindings/app/internal/services/shiftservice"; +import type { Shift } from "../../bindings/app/internal/services"; +import type { IService } from "../types/service.type"; +import type { SortOptions } from "../types/sort-options.type"; + +export default class ShiftService implements IService { + async read(id: number) { + return (await GetById(id)) as Shift; + } + + async readAll() { + return (await GetAll()) as Shift[]; + } + + async create(item: Shift) { + await Create(item); + } + + async delete(id: number) { + return await Delete(id); + } + + async update(item: Shift) { + await Update(item); + } + + async count() { + return await Count(); + } + + async search(input: string) { + return (await SearchByAllTextFields(input)) as Shift[]; + } + + async sort(options: SortOptions) { + return (await SortedByOrder( + Object.entries(options).map((item) => ({ + Name: item[0], + Order: item[1], + })), + )) as Shift[]; + } +} diff --git a/frontend/src/task/TaskScheme.vue b/frontend/src/task/TaskScheme.vue new file mode 100644 index 0000000..1d918a1 --- /dev/null +++ b/frontend/src/task/TaskScheme.vue @@ -0,0 +1,175 @@ + + + diff --git a/frontend/src/task/task.service.ts b/frontend/src/task/task.service.ts new file mode 100644 index 0000000..bea3705 --- /dev/null +++ b/frontend/src/task/task.service.ts @@ -0,0 +1,52 @@ +import { + GetAll, + Create, + Delete, + GetById, + Update, + Count, + SortedByOrder, + SearchByAllTextFields, +} from "../../bindings/app/internal/services/taskservice"; +import type { Task } from "../../bindings/app/internal/services"; +import type { IService } from "../types/service.type"; +import type { SortOptions } from "../types/sort-options.type"; + +export default class TaskService implements IService { + async read(id: number) { + return (await GetById(id)) as Task; + } + + async readAll() { + return (await GetAll()) as Task[]; + } + + async create(item: Task) { + await Create(item); + } + + async delete(id: number) { + return await Delete(id); + } + + async update(item: Task) { + await Update(item); + } + + async count() { + return await Count(); + } + + async search(input: string) { + return (await SearchByAllTextFields(input)) as Task[]; + } + + async sort(options: SortOptions) { + return (await SortedByOrder( + Object.entries(options).map((item) => ({ + Name: item[0], + Order: item[1], + })), + )) as Task[]; + } +} diff --git a/frontend/src/teamtask/TeamtaskScheme.vue b/frontend/src/teamtask/TeamtaskScheme.vue new file mode 100644 index 0000000..48bc6b5 --- /dev/null +++ b/frontend/src/teamtask/TeamtaskScheme.vue @@ -0,0 +1,157 @@ + + + diff --git a/frontend/src/teamtask/teamtask.service.ts b/frontend/src/teamtask/teamtask.service.ts new file mode 100644 index 0000000..0bf1ad0 --- /dev/null +++ b/frontend/src/teamtask/teamtask.service.ts @@ -0,0 +1,52 @@ +import { + GetAll, + Create, + Delete, + GetById, + Update, + Count, + SortedByOrder, + SearchByAllTextFields, +} from "../../bindings/app/internal/services/teamtaskservice"; +import type { TeamTask } from "../../bindings/app/internal/services"; +import type { IService } from "../types/service.type"; +import type { SortOptions } from "../types/sort-options.type"; + +export default class TeamTaskService implements IService { + async read(id: number) { + return (await GetById(id)) as TeamTask; + } + + async readAll() { + return (await GetAll()) as TeamTask[]; + } + + async create(item: TeamTask) { + await Create(item); + } + + async delete(id: number) { + return await Delete(id); + } + + async update(item: TeamTask) { + await Update(item); + } + + async count() { + return await Count(); + } + + async search(input: string) { + return (await SearchByAllTextFields(input)) as TeamTask[]; + } + + async sort(options: SortOptions) { + return (await SortedByOrder( + Object.entries(options).map((item) => ({ + Name: item[0], + Order: item[1], + })), + )) as TeamTask[]; + } +} diff --git a/frontend/src/teamtype/TeamtypeScheme.vue b/frontend/src/teamtype/TeamtypeScheme.vue new file mode 100644 index 0000000..b15b829 --- /dev/null +++ b/frontend/src/teamtype/TeamtypeScheme.vue @@ -0,0 +1,72 @@ + + + diff --git a/frontend/src/teamtype/teamtype.service.ts b/frontend/src/teamtype/teamtype.service.ts new file mode 100644 index 0000000..bb83e29 --- /dev/null +++ b/frontend/src/teamtype/teamtype.service.ts @@ -0,0 +1,52 @@ +import { + GetAll, + Create, + Delete, + GetById, + Update, + Count, + SortedByOrder, + SearchByAllTextFields, +} from "../../bindings/app/internal/services/teamtypeservice"; +import type { TeamType } from "../../bindings/app/internal/services"; +import type { IService } from "../types/service.type"; +import type { SortOptions } from "../types/sort-options.type"; + +export default class TeamTypeService implements IService { + async read(id: number) { + return (await GetById(id)) as TeamType; + } + + async readAll() { + return (await GetAll()) as TeamType[]; + } + + async create(item: TeamType) { + await Create(item); + } + + async delete(id: number) { + return await Delete(id); + } + + async update(item: TeamType) { + await Update(item); + } + + async count() { + return await Count(); + } + + async search(input: string) { + return (await SearchByAllTextFields(input)) as TeamType[]; + } + + async sort(options: SortOptions) { + return (await SortedByOrder( + Object.entries(options).map((item) => ({ + Name: item[0], + Order: item[1], + })), + )) as TeamType[]; + } +} diff --git a/frontend/src/workarea/WorkareaScheme.vue b/frontend/src/workarea/WorkareaScheme.vue new file mode 100644 index 0000000..bbdfc99 --- /dev/null +++ b/frontend/src/workarea/WorkareaScheme.vue @@ -0,0 +1,159 @@ + + + diff --git a/frontend/src/workarea/workarea.service.ts b/frontend/src/workarea/workarea.service.ts new file mode 100644 index 0000000..a09c86e --- /dev/null +++ b/frontend/src/workarea/workarea.service.ts @@ -0,0 +1,52 @@ +import { + GetAll, + Create, + Delete, + GetById, + Update, + Count, + SortedByOrder, + SearchByAllTextFields, +} from "../../bindings/app/internal/services/workareaservice"; +import type { WorkArea } from "../../bindings/app/internal/services"; +import type { IService } from "../types/service.type"; +import type { SortOptions } from "../types/sort-options.type"; + +export default class WorkAreaService implements IService { + async read(id: number) { + return (await GetById(id)) as WorkArea; + } + + async readAll() { + return (await GetAll()) as WorkArea[]; + } + + async create(item: WorkArea) { + await Create(item); + } + + async delete(id: number) { + return await Delete(id); + } + + async update(item: WorkArea) { + await Update(item); + } + + async count() { + return await Count(); + } + + async search(input: string) { + return (await SearchByAllTextFields(input)) as WorkArea[]; + } + + async sort(options: SortOptions) { + return (await SortedByOrder( + Object.entries(options).map((item) => ({ + Name: item[0], + Order: item[1], + })), + )) as WorkArea[]; + } +} diff --git a/frontend/src/worker/WorkerScheme.vue b/frontend/src/worker/WorkerScheme.vue new file mode 100644 index 0000000..313cf0b --- /dev/null +++ b/frontend/src/worker/WorkerScheme.vue @@ -0,0 +1,111 @@ + + + diff --git a/frontend/src/worker/worker.service.ts b/frontend/src/worker/worker.service.ts new file mode 100644 index 0000000..3e3e702 --- /dev/null +++ b/frontend/src/worker/worker.service.ts @@ -0,0 +1,52 @@ +import { + GetAll, + Create, + Delete, + GetById, + Update, + Count, + SortedByOrder, + SearchByAllTextFields, +} from "../../bindings/app/internal/services/workerservice"; +import type { Worker } from "../../bindings/app/internal/services"; +import type { IService } from "../types/service.type"; +import type { SortOptions } from "../types/sort-options.type"; + +export default class WorkerService implements IService { + async read(id: number) { + return (await GetById(id)) as Worker; + } + + async readAll() { + return (await GetAll()) as Worker[]; + } + + async create(item: Worker) { + await Create(item); + } + + async delete(id: number) { + return await Delete(id); + } + + async update(item: Worker) { + await Update(item); + } + + async count() { + return await Count(); + } + + async search(input: string) { + return (await SearchByAllTextFields(input)) as Worker[]; + } + + async sort(options: SortOptions) { + return (await SortedByOrder( + Object.entries(options).map((item) => ({ + Name: item[0], + Order: item[1], + })), + )) as Worker[]; + } +} diff --git a/frontend/src/workshop/WorkshopScheme.vue b/frontend/src/workshop/WorkshopScheme.vue new file mode 100644 index 0000000..063162b --- /dev/null +++ b/frontend/src/workshop/WorkshopScheme.vue @@ -0,0 +1,121 @@ + + + diff --git a/frontend/src/workshop/workshop.service.ts b/frontend/src/workshop/workshop.service.ts new file mode 100644 index 0000000..06b4ad2 --- /dev/null +++ b/frontend/src/workshop/workshop.service.ts @@ -0,0 +1,52 @@ +import { + GetAll, + Create, + Delete, + GetById, + Update, + Count, + SortedByOrder, + SearchByAllTextFields, +} from "../../bindings/app/internal/services/workshopservice"; +import type { Workshop } from "../../bindings/app/internal/services"; +import type { IService } from "../types/service.type"; +import type { SortOptions } from "../types/sort-options.type"; + +export default class WorkshopService implements IService { + async read(id: number) { + return (await GetById(id)) as Workshop; + } + + async readAll() { + return (await GetAll()) as Workshop[]; + } + + async create(item: Workshop) { + await Create(item); + } + + async delete(id: number) { + return await Delete(id); + } + + async update(item: Workshop) { + await Update(item); + } + + async count() { + return await Count(); + } + + async search(input: string) { + return (await SearchByAllTextFields(input)) as Workshop[]; + } + + async sort(options: SortOptions) { + return (await SortedByOrder( + Object.entries(options).map((item) => ({ + Name: item[0], + Order: item[1], + })), + )) as Workshop[]; + } +} diff --git a/internal/dal/authors.gen.go b/internal/dal/authors.gen.go deleted file mode 100644 index 3037c5e..0000000 --- a/internal/dal/authors.gen.go +++ /dev/null @@ -1,615 +0,0 @@ -// Code generated by gorm.io/gen. DO NOT EDIT. -// Code generated by gorm.io/gen. DO NOT EDIT. -// Code generated by gorm.io/gen. DO NOT EDIT. - -package dal - -import ( - "app/internal/models" - "context" - - "gorm.io/gorm" - "gorm.io/gorm/clause" - "gorm.io/gorm/schema" - - "gorm.io/gen" - "gorm.io/gen/field" - - "gorm.io/plugin/dbresolver" -) - -func newAuthor(db *gorm.DB, opts ...gen.DOOption) author { - _author := author{} - - _author.authorDo.UseDB(db, opts...) - _author.authorDo.UseModel(&models.Author{}) - - tableName := _author.authorDo.TableName() - _author.ALL = field.NewAsterisk(tableName) - _author.Id = field.NewUint(tableName, "id") - _author.Name = field.NewString(tableName, "name") - _author.Posts = authorHasManyPosts{ - db: db.Session(&gorm.Session{}), - - RelationField: field.NewRelation("Posts", "models.Post"), - Author: struct { - field.RelationField - Posts struct { - field.RelationField - } - Comments struct { - field.RelationField - Author struct { - field.RelationField - } - Posts struct { - field.RelationField - } - } - }{ - RelationField: field.NewRelation("Posts.Author", "models.Author"), - Posts: struct { - field.RelationField - }{ - RelationField: field.NewRelation("Posts.Author.Posts", "models.Post"), - }, - Comments: struct { - field.RelationField - Author struct { - field.RelationField - } - Posts struct { - field.RelationField - } - }{ - RelationField: field.NewRelation("Posts.Author.Comments", "models.Comment"), - Author: struct { - field.RelationField - }{ - RelationField: field.NewRelation("Posts.Author.Comments.Author", "models.Author"), - }, - Posts: struct { - field.RelationField - }{ - RelationField: field.NewRelation("Posts.Author.Comments.Posts", "models.Post"), - }, - }, - }, - PostType: struct { - field.RelationField - }{ - RelationField: field.NewRelation("Posts.PostType", "models.PostType"), - }, - Comments: struct { - field.RelationField - }{ - RelationField: field.NewRelation("Posts.Comments", "models.Comment"), - }, - } - - _author.Comments = authorHasManyComments{ - db: db.Session(&gorm.Session{}), - - RelationField: field.NewRelation("Comments", "models.Comment"), - } - - _author.fillFieldMap() - - return _author -} - -type author struct { - authorDo - - ALL field.Asterisk - Id field.Uint - Name field.String - Posts authorHasManyPosts - - Comments authorHasManyComments - - fieldMap map[string]field.Expr -} - -func (a author) Table(newTableName string) *author { - a.authorDo.UseTable(newTableName) - return a.updateTableName(newTableName) -} - -func (a author) As(alias string) *author { - a.authorDo.DO = *(a.authorDo.As(alias).(*gen.DO)) - return a.updateTableName(alias) -} - -func (a *author) updateTableName(table string) *author { - a.ALL = field.NewAsterisk(table) - a.Id = field.NewUint(table, "id") - a.Name = field.NewString(table, "name") - - a.fillFieldMap() - - return a -} - -func (a *author) GetFieldByName(fieldName string) (field.OrderExpr, bool) { - _f, ok := a.fieldMap[fieldName] - if !ok || _f == nil { - return nil, false - } - _oe, ok := _f.(field.OrderExpr) - return _oe, ok -} - -func (a *author) fillFieldMap() { - a.fieldMap = make(map[string]field.Expr, 4) - a.fieldMap["id"] = a.Id - a.fieldMap["name"] = a.Name - -} - -func (a author) clone(db *gorm.DB) author { - a.authorDo.ReplaceConnPool(db.Statement.ConnPool) - return a -} - -func (a author) replaceDB(db *gorm.DB) author { - a.authorDo.ReplaceDB(db) - return a -} - -type authorHasManyPosts struct { - db *gorm.DB - - field.RelationField - - Author struct { - field.RelationField - Posts struct { - field.RelationField - } - Comments struct { - field.RelationField - Author struct { - field.RelationField - } - Posts struct { - field.RelationField - } - } - } - PostType struct { - field.RelationField - } - Comments struct { - field.RelationField - } -} - -func (a authorHasManyPosts) Where(conds ...field.Expr) *authorHasManyPosts { - if len(conds) == 0 { - return &a - } - - exprs := make([]clause.Expression, 0, len(conds)) - for _, cond := range conds { - exprs = append(exprs, cond.BeCond().(clause.Expression)) - } - a.db = a.db.Clauses(clause.Where{Exprs: exprs}) - return &a -} - -func (a authorHasManyPosts) WithContext(ctx context.Context) *authorHasManyPosts { - a.db = a.db.WithContext(ctx) - return &a -} - -func (a authorHasManyPosts) Session(session *gorm.Session) *authorHasManyPosts { - a.db = a.db.Session(session) - return &a -} - -func (a authorHasManyPosts) Model(m *models.Author) *authorHasManyPostsTx { - return &authorHasManyPostsTx{a.db.Model(m).Association(a.Name())} -} - -type authorHasManyPostsTx struct{ tx *gorm.Association } - -func (a authorHasManyPostsTx) Find() (result []*models.Post, err error) { - return result, a.tx.Find(&result) -} - -func (a authorHasManyPostsTx) Append(values ...*models.Post) (err error) { - targetValues := make([]interface{}, len(values)) - for i, v := range values { - targetValues[i] = v - } - return a.tx.Append(targetValues...) -} - -func (a authorHasManyPostsTx) Replace(values ...*models.Post) (err error) { - targetValues := make([]interface{}, len(values)) - for i, v := range values { - targetValues[i] = v - } - return a.tx.Replace(targetValues...) -} - -func (a authorHasManyPostsTx) Delete(values ...*models.Post) (err error) { - targetValues := make([]interface{}, len(values)) - for i, v := range values { - targetValues[i] = v - } - return a.tx.Delete(targetValues...) -} - -func (a authorHasManyPostsTx) Clear() error { - return a.tx.Clear() -} - -func (a authorHasManyPostsTx) Count() int64 { - return a.tx.Count() -} - -type authorHasManyComments struct { - db *gorm.DB - - field.RelationField -} - -func (a authorHasManyComments) Where(conds ...field.Expr) *authorHasManyComments { - if len(conds) == 0 { - return &a - } - - exprs := make([]clause.Expression, 0, len(conds)) - for _, cond := range conds { - exprs = append(exprs, cond.BeCond().(clause.Expression)) - } - a.db = a.db.Clauses(clause.Where{Exprs: exprs}) - return &a -} - -func (a authorHasManyComments) WithContext(ctx context.Context) *authorHasManyComments { - a.db = a.db.WithContext(ctx) - return &a -} - -func (a authorHasManyComments) Session(session *gorm.Session) *authorHasManyComments { - a.db = a.db.Session(session) - return &a -} - -func (a authorHasManyComments) Model(m *models.Author) *authorHasManyCommentsTx { - return &authorHasManyCommentsTx{a.db.Model(m).Association(a.Name())} -} - -type authorHasManyCommentsTx struct{ tx *gorm.Association } - -func (a authorHasManyCommentsTx) Find() (result []*models.Comment, err error) { - return result, a.tx.Find(&result) -} - -func (a authorHasManyCommentsTx) Append(values ...*models.Comment) (err error) { - targetValues := make([]interface{}, len(values)) - for i, v := range values { - targetValues[i] = v - } - return a.tx.Append(targetValues...) -} - -func (a authorHasManyCommentsTx) Replace(values ...*models.Comment) (err error) { - targetValues := make([]interface{}, len(values)) - for i, v := range values { - targetValues[i] = v - } - return a.tx.Replace(targetValues...) -} - -func (a authorHasManyCommentsTx) Delete(values ...*models.Comment) (err error) { - targetValues := make([]interface{}, len(values)) - for i, v := range values { - targetValues[i] = v - } - return a.tx.Delete(targetValues...) -} - -func (a authorHasManyCommentsTx) Clear() error { - return a.tx.Clear() -} - -func (a authorHasManyCommentsTx) Count() int64 { - return a.tx.Count() -} - -type authorDo struct{ gen.DO } - -type IAuthorDo interface { - gen.SubQuery - Debug() IAuthorDo - WithContext(ctx context.Context) IAuthorDo - WithResult(fc func(tx gen.Dao)) gen.ResultInfo - ReplaceDB(db *gorm.DB) - ReadDB() IAuthorDo - WriteDB() IAuthorDo - As(alias string) gen.Dao - Session(config *gorm.Session) IAuthorDo - Columns(cols ...field.Expr) gen.Columns - Clauses(conds ...clause.Expression) IAuthorDo - Not(conds ...gen.Condition) IAuthorDo - Or(conds ...gen.Condition) IAuthorDo - Select(conds ...field.Expr) IAuthorDo - Where(conds ...gen.Condition) IAuthorDo - Order(conds ...field.Expr) IAuthorDo - Distinct(cols ...field.Expr) IAuthorDo - Omit(cols ...field.Expr) IAuthorDo - Join(table schema.Tabler, on ...field.Expr) IAuthorDo - LeftJoin(table schema.Tabler, on ...field.Expr) IAuthorDo - RightJoin(table schema.Tabler, on ...field.Expr) IAuthorDo - Group(cols ...field.Expr) IAuthorDo - Having(conds ...gen.Condition) IAuthorDo - Limit(limit int) IAuthorDo - Offset(offset int) IAuthorDo - Count() (count int64, err error) - Scopes(funcs ...func(gen.Dao) gen.Dao) IAuthorDo - Unscoped() IAuthorDo - Create(values ...*models.Author) error - CreateInBatches(values []*models.Author, batchSize int) error - Save(values ...*models.Author) error - First() (*models.Author, error) - Take() (*models.Author, error) - Last() (*models.Author, error) - Find() ([]*models.Author, error) - FindInBatch(batchSize int, fc func(tx gen.Dao, batch int) error) (results []*models.Author, err error) - FindInBatches(result *[]*models.Author, batchSize int, fc func(tx gen.Dao, batch int) error) error - Pluck(column field.Expr, dest interface{}) error - Delete(...*models.Author) (info gen.ResultInfo, err error) - Update(column field.Expr, value interface{}) (info gen.ResultInfo, err error) - UpdateSimple(columns ...field.AssignExpr) (info gen.ResultInfo, err error) - Updates(value interface{}) (info gen.ResultInfo, err error) - UpdateColumn(column field.Expr, value interface{}) (info gen.ResultInfo, err error) - UpdateColumnSimple(columns ...field.AssignExpr) (info gen.ResultInfo, err error) - UpdateColumns(value interface{}) (info gen.ResultInfo, err error) - UpdateFrom(q gen.SubQuery) gen.Dao - Attrs(attrs ...field.AssignExpr) IAuthorDo - Assign(attrs ...field.AssignExpr) IAuthorDo - Joins(fields ...field.RelationField) IAuthorDo - Preload(fields ...field.RelationField) IAuthorDo - FirstOrInit() (*models.Author, error) - FirstOrCreate() (*models.Author, error) - FindByPage(offset int, limit int) (result []*models.Author, count int64, err error) - ScanByPage(result interface{}, offset int, limit int) (count int64, err error) - Scan(result interface{}) (err error) - Returning(value interface{}, columns ...string) IAuthorDo - UnderlyingDB() *gorm.DB - schema.Tabler -} - -func (a authorDo) Debug() IAuthorDo { - return a.withDO(a.DO.Debug()) -} - -func (a authorDo) WithContext(ctx context.Context) IAuthorDo { - return a.withDO(a.DO.WithContext(ctx)) -} - -func (a authorDo) ReadDB() IAuthorDo { - return a.Clauses(dbresolver.Read) -} - -func (a authorDo) WriteDB() IAuthorDo { - return a.Clauses(dbresolver.Write) -} - -func (a authorDo) Session(config *gorm.Session) IAuthorDo { - return a.withDO(a.DO.Session(config)) -} - -func (a authorDo) Clauses(conds ...clause.Expression) IAuthorDo { - return a.withDO(a.DO.Clauses(conds...)) -} - -func (a authorDo) Returning(value interface{}, columns ...string) IAuthorDo { - return a.withDO(a.DO.Returning(value, columns...)) -} - -func (a authorDo) Not(conds ...gen.Condition) IAuthorDo { - return a.withDO(a.DO.Not(conds...)) -} - -func (a authorDo) Or(conds ...gen.Condition) IAuthorDo { - return a.withDO(a.DO.Or(conds...)) -} - -func (a authorDo) Select(conds ...field.Expr) IAuthorDo { - return a.withDO(a.DO.Select(conds...)) -} - -func (a authorDo) Where(conds ...gen.Condition) IAuthorDo { - return a.withDO(a.DO.Where(conds...)) -} - -func (a authorDo) Order(conds ...field.Expr) IAuthorDo { - return a.withDO(a.DO.Order(conds...)) -} - -func (a authorDo) Distinct(cols ...field.Expr) IAuthorDo { - return a.withDO(a.DO.Distinct(cols...)) -} - -func (a authorDo) Omit(cols ...field.Expr) IAuthorDo { - return a.withDO(a.DO.Omit(cols...)) -} - -func (a authorDo) Join(table schema.Tabler, on ...field.Expr) IAuthorDo { - return a.withDO(a.DO.Join(table, on...)) -} - -func (a authorDo) LeftJoin(table schema.Tabler, on ...field.Expr) IAuthorDo { - return a.withDO(a.DO.LeftJoin(table, on...)) -} - -func (a authorDo) RightJoin(table schema.Tabler, on ...field.Expr) IAuthorDo { - return a.withDO(a.DO.RightJoin(table, on...)) -} - -func (a authorDo) Group(cols ...field.Expr) IAuthorDo { - return a.withDO(a.DO.Group(cols...)) -} - -func (a authorDo) Having(conds ...gen.Condition) IAuthorDo { - return a.withDO(a.DO.Having(conds...)) -} - -func (a authorDo) Limit(limit int) IAuthorDo { - return a.withDO(a.DO.Limit(limit)) -} - -func (a authorDo) Offset(offset int) IAuthorDo { - return a.withDO(a.DO.Offset(offset)) -} - -func (a authorDo) Scopes(funcs ...func(gen.Dao) gen.Dao) IAuthorDo { - return a.withDO(a.DO.Scopes(funcs...)) -} - -func (a authorDo) Unscoped() IAuthorDo { - return a.withDO(a.DO.Unscoped()) -} - -func (a authorDo) Create(values ...*models.Author) error { - if len(values) == 0 { - return nil - } - return a.DO.Create(values) -} - -func (a authorDo) CreateInBatches(values []*models.Author, batchSize int) error { - return a.DO.CreateInBatches(values, batchSize) -} - -// Save : !!! underlying implementation is different with GORM -// The method is equivalent to executing the statement: db.Clauses(clause.OnConflict{UpdateAll: true}).Create(values) -func (a authorDo) Save(values ...*models.Author) error { - if len(values) == 0 { - return nil - } - return a.DO.Save(values) -} - -func (a authorDo) First() (*models.Author, error) { - if result, err := a.DO.First(); err != nil { - return nil, err - } else { - return result.(*models.Author), nil - } -} - -func (a authorDo) Take() (*models.Author, error) { - if result, err := a.DO.Take(); err != nil { - return nil, err - } else { - return result.(*models.Author), nil - } -} - -func (a authorDo) Last() (*models.Author, error) { - if result, err := a.DO.Last(); err != nil { - return nil, err - } else { - return result.(*models.Author), nil - } -} - -func (a authorDo) Find() ([]*models.Author, error) { - result, err := a.DO.Find() - return result.([]*models.Author), err -} - -func (a authorDo) FindInBatch(batchSize int, fc func(tx gen.Dao, batch int) error) (results []*models.Author, err error) { - buf := make([]*models.Author, 0, batchSize) - err = a.DO.FindInBatches(&buf, batchSize, func(tx gen.Dao, batch int) error { - defer func() { results = append(results, buf...) }() - return fc(tx, batch) - }) - return results, err -} - -func (a authorDo) FindInBatches(result *[]*models.Author, batchSize int, fc func(tx gen.Dao, batch int) error) error { - return a.DO.FindInBatches(result, batchSize, fc) -} - -func (a authorDo) Attrs(attrs ...field.AssignExpr) IAuthorDo { - return a.withDO(a.DO.Attrs(attrs...)) -} - -func (a authorDo) Assign(attrs ...field.AssignExpr) IAuthorDo { - return a.withDO(a.DO.Assign(attrs...)) -} - -func (a authorDo) Joins(fields ...field.RelationField) IAuthorDo { - for _, _f := range fields { - a = *a.withDO(a.DO.Joins(_f)) - } - return &a -} - -func (a authorDo) Preload(fields ...field.RelationField) IAuthorDo { - for _, _f := range fields { - a = *a.withDO(a.DO.Preload(_f)) - } - return &a -} - -func (a authorDo) FirstOrInit() (*models.Author, error) { - if result, err := a.DO.FirstOrInit(); err != nil { - return nil, err - } else { - return result.(*models.Author), nil - } -} - -func (a authorDo) FirstOrCreate() (*models.Author, error) { - if result, err := a.DO.FirstOrCreate(); err != nil { - return nil, err - } else { - return result.(*models.Author), nil - } -} - -func (a authorDo) FindByPage(offset int, limit int) (result []*models.Author, count int64, err error) { - result, err = a.Offset(offset).Limit(limit).Find() - if err != nil { - return - } - - if size := len(result); 0 < limit && 0 < size && size < limit { - count = int64(size + offset) - return - } - - count, err = a.Offset(-1).Limit(-1).Count() - return -} - -func (a authorDo) ScanByPage(result interface{}, offset int, limit int) (count int64, err error) { - count, err = a.Count() - if err != nil { - return - } - - err = a.Offset(offset).Limit(limit).Scan(result) - return -} - -func (a authorDo) Scan(result interface{}) (err error) { - return a.DO.Scan(result) -} - -func (a authorDo) Delete(models ...*models.Author) (result gen.ResultInfo, err error) { - return a.DO.Delete(models) -} - -func (a *authorDo) withDO(do gen.Dao) *authorDo { - a.DO = *do.(*gen.DO) - return a -} diff --git a/internal/dal/authors.gen_test.go b/internal/dal/authors.gen_test.go deleted file mode 100644 index 1ec73b6..0000000 --- a/internal/dal/authors.gen_test.go +++ /dev/null @@ -1,145 +0,0 @@ -// Code generated by gorm.io/gen. DO NOT EDIT. -// Code generated by gorm.io/gen. DO NOT EDIT. -// Code generated by gorm.io/gen. DO NOT EDIT. - -package dal - -import ( - "app/internal/models" - "context" - "fmt" - "testing" - - "gorm.io/gen" - "gorm.io/gen/field" - "gorm.io/gorm/clause" -) - -func init() { - InitializeDB() - err := _gen_test_db.AutoMigrate(&models.Author{}) - if err != nil { - fmt.Printf("Error: AutoMigrate(&models.Author{}) fail: %s", err) - } -} - -func Test_authorQuery(t *testing.T) { - author := newAuthor(_gen_test_db) - author = *author.As(author.TableName()) - _do := author.WithContext(context.Background()).Debug() - - primaryKey := field.NewString(author.TableName(), clause.PrimaryKey) - _, err := _do.Unscoped().Where(primaryKey.IsNotNull()).Delete() - if err != nil { - t.Error("clean table fail:", err) - return - } - - _, ok := author.GetFieldByName("") - if ok { - t.Error("GetFieldByName(\"\") from author success") - } - - err = _do.Create(&models.Author{}) - if err != nil { - t.Error("create item in table fail:", err) - } - - err = _do.Save(&models.Author{}) - if err != nil { - t.Error("create item in table fail:", err) - } - - err = _do.CreateInBatches([]*models.Author{{}, {}}, 10) - if err != nil { - t.Error("create item in table fail:", err) - } - - _, err = _do.Select(author.ALL).Take() - if err != nil { - t.Error("Take() on table fail:", err) - } - - _, err = _do.First() - if err != nil { - t.Error("First() on table fail:", err) - } - - _, err = _do.Last() - if err != nil { - t.Error("First() on table fail:", err) - } - - _, err = _do.Where(primaryKey.IsNotNull()).FindInBatch(10, func(tx gen.Dao, batch int) error { return nil }) - if err != nil { - t.Error("FindInBatch() on table fail:", err) - } - - err = _do.Where(primaryKey.IsNotNull()).FindInBatches(&[]*models.Author{}, 10, func(tx gen.Dao, batch int) error { return nil }) - if err != nil { - t.Error("FindInBatches() on table fail:", err) - } - - _, err = _do.Select(author.ALL).Where(primaryKey.IsNotNull()).Order(primaryKey.Desc()).Find() - if err != nil { - t.Error("Find() on table fail:", err) - } - - _, err = _do.Distinct(primaryKey).Take() - if err != nil { - t.Error("select Distinct() on table fail:", err) - } - - _, err = _do.Select(author.ALL).Omit(primaryKey).Take() - if err != nil { - t.Error("Omit() on table fail:", err) - } - - _, err = _do.Group(primaryKey).Find() - if err != nil { - t.Error("Group() on table fail:", err) - } - - _, err = _do.Scopes(func(dao gen.Dao) gen.Dao { return dao.Where(primaryKey.IsNotNull()) }).Find() - if err != nil { - t.Error("Scopes() on table fail:", err) - } - - _, _, err = _do.FindByPage(0, 1) - if err != nil { - t.Error("FindByPage() on table fail:", err) - } - - _, err = _do.ScanByPage(&models.Author{}, 0, 1) - if err != nil { - t.Error("ScanByPage() on table fail:", err) - } - - _, err = _do.Attrs(primaryKey).Assign(primaryKey).FirstOrInit() - if err != nil { - t.Error("FirstOrInit() on table fail:", err) - } - - _, err = _do.Attrs(primaryKey).Assign(primaryKey).FirstOrCreate() - if err != nil { - t.Error("FirstOrCreate() on table fail:", err) - } - - var _a _another - var _aPK = field.NewString(_a.TableName(), "id") - - err = _do.Join(&_a, primaryKey.EqCol(_aPK)).Scan(map[string]interface{}{}) - if err != nil { - t.Error("Join() on table fail:", err) - } - - err = _do.LeftJoin(&_a, primaryKey.EqCol(_aPK)).Scan(map[string]interface{}{}) - if err != nil { - t.Error("LeftJoin() on table fail:", err) - } - - _, err = _do.Not().Or().Clauses().Take() - if err != nil { - t.Error("Not/Or/Clauses on table fail:", err) - } -} diff --git a/internal/dal/comments.gen.go b/internal/dal/comments.gen.go deleted file mode 100644 index c5fdbc8..0000000 --- a/internal/dal/comments.gen.go +++ /dev/null @@ -1,622 +0,0 @@ -// Code generated by gorm.io/gen. DO NOT EDIT. -// Code generated by gorm.io/gen. DO NOT EDIT. -// Code generated by gorm.io/gen. DO NOT EDIT. - -package dal - -import ( - "app/internal/models" - "context" - - "gorm.io/gorm" - "gorm.io/gorm/clause" - "gorm.io/gorm/schema" - - "gorm.io/gen" - "gorm.io/gen/field" - - "gorm.io/plugin/dbresolver" -) - -func newComment(db *gorm.DB, opts ...gen.DOOption) comment { - _comment := comment{} - - _comment.commentDo.UseDB(db, opts...) - _comment.commentDo.UseModel(&models.Comment{}) - - tableName := _comment.commentDo.TableName() - _comment.ALL = field.NewAsterisk(tableName) - _comment.Id = field.NewUint(tableName, "id") - _comment.Text = field.NewString(tableName, "text") - _comment.AuthorId = field.NewUint(tableName, "author_id") - _comment.Author = commentBelongsToAuthor{ - db: db.Session(&gorm.Session{}), - - RelationField: field.NewRelation("Author", "models.Author"), - Posts: struct { - field.RelationField - Author struct { - field.RelationField - } - PostType struct { - field.RelationField - } - Comments struct { - field.RelationField - Author struct { - field.RelationField - } - Posts struct { - field.RelationField - } - } - }{ - RelationField: field.NewRelation("Author.Posts", "models.Post"), - Author: struct { - field.RelationField - }{ - RelationField: field.NewRelation("Author.Posts.Author", "models.Author"), - }, - PostType: struct { - field.RelationField - }{ - RelationField: field.NewRelation("Author.Posts.PostType", "models.PostType"), - }, - Comments: struct { - field.RelationField - Author struct { - field.RelationField - } - Posts struct { - field.RelationField - } - }{ - RelationField: field.NewRelation("Author.Posts.Comments", "models.Comment"), - Author: struct { - field.RelationField - }{ - RelationField: field.NewRelation("Author.Posts.Comments.Author", "models.Author"), - }, - Posts: struct { - field.RelationField - }{ - RelationField: field.NewRelation("Author.Posts.Comments.Posts", "models.Post"), - }, - }, - }, - Comments: struct { - field.RelationField - }{ - RelationField: field.NewRelation("Author.Comments", "models.Comment"), - }, - } - - _comment.Posts = commentManyToManyPosts{ - db: db.Session(&gorm.Session{}), - - RelationField: field.NewRelation("Posts", "models.Post"), - } - - _comment.fillFieldMap() - - return _comment -} - -type comment struct { - commentDo - - ALL field.Asterisk - Id field.Uint - Text field.String - AuthorId field.Uint - Author commentBelongsToAuthor - - Posts commentManyToManyPosts - - fieldMap map[string]field.Expr -} - -func (c comment) Table(newTableName string) *comment { - c.commentDo.UseTable(newTableName) - return c.updateTableName(newTableName) -} - -func (c comment) As(alias string) *comment { - c.commentDo.DO = *(c.commentDo.As(alias).(*gen.DO)) - return c.updateTableName(alias) -} - -func (c *comment) updateTableName(table string) *comment { - c.ALL = field.NewAsterisk(table) - c.Id = field.NewUint(table, "id") - c.Text = field.NewString(table, "text") - c.AuthorId = field.NewUint(table, "author_id") - - c.fillFieldMap() - - return c -} - -func (c *comment) GetFieldByName(fieldName string) (field.OrderExpr, bool) { - _f, ok := c.fieldMap[fieldName] - if !ok || _f == nil { - return nil, false - } - _oe, ok := _f.(field.OrderExpr) - return _oe, ok -} - -func (c *comment) fillFieldMap() { - c.fieldMap = make(map[string]field.Expr, 5) - c.fieldMap["id"] = c.Id - c.fieldMap["text"] = c.Text - c.fieldMap["author_id"] = c.AuthorId - -} - -func (c comment) clone(db *gorm.DB) comment { - c.commentDo.ReplaceConnPool(db.Statement.ConnPool) - return c -} - -func (c comment) replaceDB(db *gorm.DB) comment { - c.commentDo.ReplaceDB(db) - return c -} - -type commentBelongsToAuthor struct { - db *gorm.DB - - field.RelationField - - Posts struct { - field.RelationField - Author struct { - field.RelationField - } - PostType struct { - field.RelationField - } - Comments struct { - field.RelationField - Author struct { - field.RelationField - } - Posts struct { - field.RelationField - } - } - } - Comments struct { - field.RelationField - } -} - -func (a commentBelongsToAuthor) Where(conds ...field.Expr) *commentBelongsToAuthor { - if len(conds) == 0 { - return &a - } - - exprs := make([]clause.Expression, 0, len(conds)) - for _, cond := range conds { - exprs = append(exprs, cond.BeCond().(clause.Expression)) - } - a.db = a.db.Clauses(clause.Where{Exprs: exprs}) - return &a -} - -func (a commentBelongsToAuthor) WithContext(ctx context.Context) *commentBelongsToAuthor { - a.db = a.db.WithContext(ctx) - return &a -} - -func (a commentBelongsToAuthor) Session(session *gorm.Session) *commentBelongsToAuthor { - a.db = a.db.Session(session) - return &a -} - -func (a commentBelongsToAuthor) Model(m *models.Comment) *commentBelongsToAuthorTx { - return &commentBelongsToAuthorTx{a.db.Model(m).Association(a.Name())} -} - -type commentBelongsToAuthorTx struct{ tx *gorm.Association } - -func (a commentBelongsToAuthorTx) Find() (result *models.Author, err error) { - return result, a.tx.Find(&result) -} - -func (a commentBelongsToAuthorTx) Append(values ...*models.Author) (err error) { - targetValues := make([]interface{}, len(values)) - for i, v := range values { - targetValues[i] = v - } - return a.tx.Append(targetValues...) -} - -func (a commentBelongsToAuthorTx) Replace(values ...*models.Author) (err error) { - targetValues := make([]interface{}, len(values)) - for i, v := range values { - targetValues[i] = v - } - return a.tx.Replace(targetValues...) -} - -func (a commentBelongsToAuthorTx) Delete(values ...*models.Author) (err error) { - targetValues := make([]interface{}, len(values)) - for i, v := range values { - targetValues[i] = v - } - return a.tx.Delete(targetValues...) -} - -func (a commentBelongsToAuthorTx) Clear() error { - return a.tx.Clear() -} - -func (a commentBelongsToAuthorTx) Count() int64 { - return a.tx.Count() -} - -type commentManyToManyPosts struct { - db *gorm.DB - - field.RelationField -} - -func (a commentManyToManyPosts) Where(conds ...field.Expr) *commentManyToManyPosts { - if len(conds) == 0 { - return &a - } - - exprs := make([]clause.Expression, 0, len(conds)) - for _, cond := range conds { - exprs = append(exprs, cond.BeCond().(clause.Expression)) - } - a.db = a.db.Clauses(clause.Where{Exprs: exprs}) - return &a -} - -func (a commentManyToManyPosts) WithContext(ctx context.Context) *commentManyToManyPosts { - a.db = a.db.WithContext(ctx) - return &a -} - -func (a commentManyToManyPosts) Session(session *gorm.Session) *commentManyToManyPosts { - a.db = a.db.Session(session) - return &a -} - -func (a commentManyToManyPosts) Model(m *models.Comment) *commentManyToManyPostsTx { - return &commentManyToManyPostsTx{a.db.Model(m).Association(a.Name())} -} - -type commentManyToManyPostsTx struct{ tx *gorm.Association } - -func (a commentManyToManyPostsTx) Find() (result []*models.Post, err error) { - return result, a.tx.Find(&result) -} - -func (a commentManyToManyPostsTx) Append(values ...*models.Post) (err error) { - targetValues := make([]interface{}, len(values)) - for i, v := range values { - targetValues[i] = v - } - return a.tx.Append(targetValues...) -} - -func (a commentManyToManyPostsTx) Replace(values ...*models.Post) (err error) { - targetValues := make([]interface{}, len(values)) - for i, v := range values { - targetValues[i] = v - } - return a.tx.Replace(targetValues...) -} - -func (a commentManyToManyPostsTx) Delete(values ...*models.Post) (err error) { - targetValues := make([]interface{}, len(values)) - for i, v := range values { - targetValues[i] = v - } - return a.tx.Delete(targetValues...) -} - -func (a commentManyToManyPostsTx) Clear() error { - return a.tx.Clear() -} - -func (a commentManyToManyPostsTx) Count() int64 { - return a.tx.Count() -} - -type commentDo struct{ gen.DO } - -type ICommentDo interface { - gen.SubQuery - Debug() ICommentDo - WithContext(ctx context.Context) ICommentDo - WithResult(fc func(tx gen.Dao)) gen.ResultInfo - ReplaceDB(db *gorm.DB) - ReadDB() ICommentDo - WriteDB() ICommentDo - As(alias string) gen.Dao - Session(config *gorm.Session) ICommentDo - Columns(cols ...field.Expr) gen.Columns - Clauses(conds ...clause.Expression) ICommentDo - Not(conds ...gen.Condition) ICommentDo - Or(conds ...gen.Condition) ICommentDo - Select(conds ...field.Expr) ICommentDo - Where(conds ...gen.Condition) ICommentDo - Order(conds ...field.Expr) ICommentDo - Distinct(cols ...field.Expr) ICommentDo - Omit(cols ...field.Expr) ICommentDo - Join(table schema.Tabler, on ...field.Expr) ICommentDo - LeftJoin(table schema.Tabler, on ...field.Expr) ICommentDo - RightJoin(table schema.Tabler, on ...field.Expr) ICommentDo - Group(cols ...field.Expr) ICommentDo - Having(conds ...gen.Condition) ICommentDo - Limit(limit int) ICommentDo - Offset(offset int) ICommentDo - Count() (count int64, err error) - Scopes(funcs ...func(gen.Dao) gen.Dao) ICommentDo - Unscoped() ICommentDo - Create(values ...*models.Comment) error - CreateInBatches(values []*models.Comment, batchSize int) error - Save(values ...*models.Comment) error - First() (*models.Comment, error) - Take() (*models.Comment, error) - Last() (*models.Comment, error) - Find() ([]*models.Comment, error) - FindInBatch(batchSize int, fc func(tx gen.Dao, batch int) error) (results []*models.Comment, err error) - FindInBatches(result *[]*models.Comment, batchSize int, fc func(tx gen.Dao, batch int) error) error - Pluck(column field.Expr, dest interface{}) error - Delete(...*models.Comment) (info gen.ResultInfo, err error) - Update(column field.Expr, value interface{}) (info gen.ResultInfo, err error) - UpdateSimple(columns ...field.AssignExpr) (info gen.ResultInfo, err error) - Updates(value interface{}) (info gen.ResultInfo, err error) - UpdateColumn(column field.Expr, value interface{}) (info gen.ResultInfo, err error) - UpdateColumnSimple(columns ...field.AssignExpr) (info gen.ResultInfo, err error) - UpdateColumns(value interface{}) (info gen.ResultInfo, err error) - UpdateFrom(q gen.SubQuery) gen.Dao - Attrs(attrs ...field.AssignExpr) ICommentDo - Assign(attrs ...field.AssignExpr) ICommentDo - Joins(fields ...field.RelationField) ICommentDo - Preload(fields ...field.RelationField) ICommentDo - FirstOrInit() (*models.Comment, error) - FirstOrCreate() (*models.Comment, error) - FindByPage(offset int, limit int) (result []*models.Comment, count int64, err error) - ScanByPage(result interface{}, offset int, limit int) (count int64, err error) - Scan(result interface{}) (err error) - Returning(value interface{}, columns ...string) ICommentDo - UnderlyingDB() *gorm.DB - schema.Tabler -} - -func (c commentDo) Debug() ICommentDo { - return c.withDO(c.DO.Debug()) -} - -func (c commentDo) WithContext(ctx context.Context) ICommentDo { - return c.withDO(c.DO.WithContext(ctx)) -} - -func (c commentDo) ReadDB() ICommentDo { - return c.Clauses(dbresolver.Read) -} - -func (c commentDo) WriteDB() ICommentDo { - return c.Clauses(dbresolver.Write) -} - -func (c commentDo) Session(config *gorm.Session) ICommentDo { - return c.withDO(c.DO.Session(config)) -} - -func (c commentDo) Clauses(conds ...clause.Expression) ICommentDo { - return c.withDO(c.DO.Clauses(conds...)) -} - -func (c commentDo) Returning(value interface{}, columns ...string) ICommentDo { - return c.withDO(c.DO.Returning(value, columns...)) -} - -func (c commentDo) Not(conds ...gen.Condition) ICommentDo { - return c.withDO(c.DO.Not(conds...)) -} - -func (c commentDo) Or(conds ...gen.Condition) ICommentDo { - return c.withDO(c.DO.Or(conds...)) -} - -func (c commentDo) Select(conds ...field.Expr) ICommentDo { - return c.withDO(c.DO.Select(conds...)) -} - -func (c commentDo) Where(conds ...gen.Condition) ICommentDo { - return c.withDO(c.DO.Where(conds...)) -} - -func (c commentDo) Order(conds ...field.Expr) ICommentDo { - return c.withDO(c.DO.Order(conds...)) -} - -func (c commentDo) Distinct(cols ...field.Expr) ICommentDo { - return c.withDO(c.DO.Distinct(cols...)) -} - -func (c commentDo) Omit(cols ...field.Expr) ICommentDo { - return c.withDO(c.DO.Omit(cols...)) -} - -func (c commentDo) Join(table schema.Tabler, on ...field.Expr) ICommentDo { - return c.withDO(c.DO.Join(table, on...)) -} - -func (c commentDo) LeftJoin(table schema.Tabler, on ...field.Expr) ICommentDo { - return c.withDO(c.DO.LeftJoin(table, on...)) -} - -func (c commentDo) RightJoin(table schema.Tabler, on ...field.Expr) ICommentDo { - return c.withDO(c.DO.RightJoin(table, on...)) -} - -func (c commentDo) Group(cols ...field.Expr) ICommentDo { - return c.withDO(c.DO.Group(cols...)) -} - -func (c commentDo) Having(conds ...gen.Condition) ICommentDo { - return c.withDO(c.DO.Having(conds...)) -} - -func (c commentDo) Limit(limit int) ICommentDo { - return c.withDO(c.DO.Limit(limit)) -} - -func (c commentDo) Offset(offset int) ICommentDo { - return c.withDO(c.DO.Offset(offset)) -} - -func (c commentDo) Scopes(funcs ...func(gen.Dao) gen.Dao) ICommentDo { - return c.withDO(c.DO.Scopes(funcs...)) -} - -func (c commentDo) Unscoped() ICommentDo { - return c.withDO(c.DO.Unscoped()) -} - -func (c commentDo) Create(values ...*models.Comment) error { - if len(values) == 0 { - return nil - } - return c.DO.Create(values) -} - -func (c commentDo) CreateInBatches(values []*models.Comment, batchSize int) error { - return c.DO.CreateInBatches(values, batchSize) -} - -// Save : !!! underlying implementation is different with GORM -// The method is equivalent to executing the statement: db.Clauses(clause.OnConflict{UpdateAll: true}).Create(values) -func (c commentDo) Save(values ...*models.Comment) error { - if len(values) == 0 { - return nil - } - return c.DO.Save(values) -} - -func (c commentDo) First() (*models.Comment, error) { - if result, err := c.DO.First(); err != nil { - return nil, err - } else { - return result.(*models.Comment), nil - } -} - -func (c commentDo) Take() (*models.Comment, error) { - if result, err := c.DO.Take(); err != nil { - return nil, err - } else { - return result.(*models.Comment), nil - } -} - -func (c commentDo) Last() (*models.Comment, error) { - if result, err := c.DO.Last(); err != nil { - return nil, err - } else { - return result.(*models.Comment), nil - } -} - -func (c commentDo) Find() ([]*models.Comment, error) { - result, err := c.DO.Find() - return result.([]*models.Comment), err -} - -func (c commentDo) FindInBatch(batchSize int, fc func(tx gen.Dao, batch int) error) (results []*models.Comment, err error) { - buf := make([]*models.Comment, 0, batchSize) - err = c.DO.FindInBatches(&buf, batchSize, func(tx gen.Dao, batch int) error { - defer func() { results = append(results, buf...) }() - return fc(tx, batch) - }) - return results, err -} - -func (c commentDo) FindInBatches(result *[]*models.Comment, batchSize int, fc func(tx gen.Dao, batch int) error) error { - return c.DO.FindInBatches(result, batchSize, fc) -} - -func (c commentDo) Attrs(attrs ...field.AssignExpr) ICommentDo { - return c.withDO(c.DO.Attrs(attrs...)) -} - -func (c commentDo) Assign(attrs ...field.AssignExpr) ICommentDo { - return c.withDO(c.DO.Assign(attrs...)) -} - -func (c commentDo) Joins(fields ...field.RelationField) ICommentDo { - for _, _f := range fields { - c = *c.withDO(c.DO.Joins(_f)) - } - return &c -} - -func (c commentDo) Preload(fields ...field.RelationField) ICommentDo { - for _, _f := range fields { - c = *c.withDO(c.DO.Preload(_f)) - } - return &c -} - -func (c commentDo) FirstOrInit() (*models.Comment, error) { - if result, err := c.DO.FirstOrInit(); err != nil { - return nil, err - } else { - return result.(*models.Comment), nil - } -} - -func (c commentDo) FirstOrCreate() (*models.Comment, error) { - if result, err := c.DO.FirstOrCreate(); err != nil { - return nil, err - } else { - return result.(*models.Comment), nil - } -} - -func (c commentDo) FindByPage(offset int, limit int) (result []*models.Comment, count int64, err error) { - result, err = c.Offset(offset).Limit(limit).Find() - if err != nil { - return - } - - if size := len(result); 0 < limit && 0 < size && size < limit { - count = int64(size + offset) - return - } - - count, err = c.Offset(-1).Limit(-1).Count() - return -} - -func (c commentDo) ScanByPage(result interface{}, offset int, limit int) (count int64, err error) { - count, err = c.Count() - if err != nil { - return - } - - err = c.Offset(offset).Limit(limit).Scan(result) - return -} - -func (c commentDo) Scan(result interface{}) (err error) { - return c.DO.Scan(result) -} - -func (c commentDo) Delete(models ...*models.Comment) (result gen.ResultInfo, err error) { - return c.DO.Delete(models) -} - -func (c *commentDo) withDO(do gen.Dao) *commentDo { - c.DO = *do.(*gen.DO) - return c -} diff --git a/internal/dal/comments.gen_test.go b/internal/dal/comments.gen_test.go deleted file mode 100644 index f008f02..0000000 --- a/internal/dal/comments.gen_test.go +++ /dev/null @@ -1,145 +0,0 @@ -// Code generated by gorm.io/gen. DO NOT EDIT. -// Code generated by gorm.io/gen. DO NOT EDIT. -// Code generated by gorm.io/gen. DO NOT EDIT. - -package dal - -import ( - "app/internal/models" - "context" - "fmt" - "testing" - - "gorm.io/gen" - "gorm.io/gen/field" - "gorm.io/gorm/clause" -) - -func init() { - InitializeDB() - err := _gen_test_db.AutoMigrate(&models.Comment{}) - if err != nil { - fmt.Printf("Error: AutoMigrate(&models.Comment{}) fail: %s", err) - } -} - -func Test_commentQuery(t *testing.T) { - comment := newComment(_gen_test_db) - comment = *comment.As(comment.TableName()) - _do := comment.WithContext(context.Background()).Debug() - - primaryKey := field.NewString(comment.TableName(), clause.PrimaryKey) - _, err := _do.Unscoped().Where(primaryKey.IsNotNull()).Delete() - if err != nil { - t.Error("clean table fail:", err) - return - } - - _, ok := comment.GetFieldByName("") - if ok { - t.Error("GetFieldByName(\"\") from comment success") - } - - err = _do.Create(&models.Comment{}) - if err != nil { - t.Error("create item in table fail:", err) - } - - err = _do.Save(&models.Comment{}) - if err != nil { - t.Error("create item in table fail:", err) - } - - err = _do.CreateInBatches([]*models.Comment{{}, {}}, 10) - if err != nil { - t.Error("create item in table fail:", err) - } - - _, err = _do.Select(comment.ALL).Take() - if err != nil { - t.Error("Take() on table fail:", err) - } - - _, err = _do.First() - if err != nil { - t.Error("First() on table fail:", err) - } - - _, err = _do.Last() - if err != nil { - t.Error("First() on table fail:", err) - } - - _, err = _do.Where(primaryKey.IsNotNull()).FindInBatch(10, func(tx gen.Dao, batch int) error { return nil }) - if err != nil { - t.Error("FindInBatch() on table fail:", err) - } - - err = _do.Where(primaryKey.IsNotNull()).FindInBatches(&[]*models.Comment{}, 10, func(tx gen.Dao, batch int) error { return nil }) - if err != nil { - t.Error("FindInBatches() on table fail:", err) - } - - _, err = _do.Select(comment.ALL).Where(primaryKey.IsNotNull()).Order(primaryKey.Desc()).Find() - if err != nil { - t.Error("Find() on table fail:", err) - } - - _, err = _do.Distinct(primaryKey).Take() - if err != nil { - t.Error("select Distinct() on table fail:", err) - } - - _, err = _do.Select(comment.ALL).Omit(primaryKey).Take() - if err != nil { - t.Error("Omit() on table fail:", err) - } - - _, err = _do.Group(primaryKey).Find() - if err != nil { - t.Error("Group() on table fail:", err) - } - - _, err = _do.Scopes(func(dao gen.Dao) gen.Dao { return dao.Where(primaryKey.IsNotNull()) }).Find() - if err != nil { - t.Error("Scopes() on table fail:", err) - } - - _, _, err = _do.FindByPage(0, 1) - if err != nil { - t.Error("FindByPage() on table fail:", err) - } - - _, err = _do.ScanByPage(&models.Comment{}, 0, 1) - if err != nil { - t.Error("ScanByPage() on table fail:", err) - } - - _, err = _do.Attrs(primaryKey).Assign(primaryKey).FirstOrInit() - if err != nil { - t.Error("FirstOrInit() on table fail:", err) - } - - _, err = _do.Attrs(primaryKey).Assign(primaryKey).FirstOrCreate() - if err != nil { - t.Error("FirstOrCreate() on table fail:", err) - } - - var _a _another - var _aPK = field.NewString(_a.TableName(), "id") - - err = _do.Join(&_a, primaryKey.EqCol(_aPK)).Scan(map[string]interface{}{}) - if err != nil { - t.Error("Join() on table fail:", err) - } - - err = _do.LeftJoin(&_a, primaryKey.EqCol(_aPK)).Scan(map[string]interface{}{}) - if err != nil { - t.Error("LeftJoin() on table fail:", err) - } - - _, err = _do.Not().Or().Clauses().Take() - if err != nil { - t.Error("Not/Or/Clauses on table fail:", err) - } -} diff --git a/internal/dal/customers.gen.go b/internal/dal/customers.gen.go new file mode 100644 index 0000000..6812572 --- /dev/null +++ b/internal/dal/customers.gen.go @@ -0,0 +1,891 @@ +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. + +package dal + +import ( + "app/internal/models" + "context" + + "gorm.io/gorm" + "gorm.io/gorm/clause" + "gorm.io/gorm/schema" + + "gorm.io/gen" + "gorm.io/gen/field" + + "gorm.io/plugin/dbresolver" +) + +func newCustomer(db *gorm.DB, opts ...gen.DOOption) customer { + _customer := customer{} + + _customer.customerDo.UseDB(db, opts...) + _customer.customerDo.UseModel(&models.Customer{}) + + tableName := _customer.customerDo.TableName() + _customer.ALL = field.NewAsterisk(tableName) + _customer.Id = field.NewUint(tableName, "id") + _customer.Title = field.NewString(tableName, "title") + _customer.Contact = field.NewString(tableName, "contact") + _customer.Orders = customerHasManyOrders{ + db: db.Session(&gorm.Session{}), + + RelationField: field.NewRelation("Orders", "models.Order"), + ProductType: struct { + field.RelationField + }{ + RelationField: field.NewRelation("Orders.ProductType", "models.ProductType"), + }, + Customer: struct { + field.RelationField + Orders struct { + field.RelationField + } + }{ + RelationField: field.NewRelation("Orders.Customer", "models.Customer"), + Orders: struct { + field.RelationField + }{ + RelationField: field.NewRelation("Orders.Customer.Orders", "models.Order"), + }, + }, + Tasks: struct { + field.RelationField + ProductType struct { + field.RelationField + } + Order struct { + field.RelationField + } + PrepTasks struct { + field.RelationField + Task struct { + field.RelationField + } + WorkArea struct { + field.RelationField + Workshop struct { + field.RelationField + WorkAreas struct { + field.RelationField + } + Workers struct { + field.RelationField + Workshop struct { + field.RelationField + } + TeamTasks struct { + field.RelationField + TeamType struct { + field.RelationField + } + TeamLeader struct { + field.RelationField + } + WorkArea struct { + field.RelationField + } + TeamMembers struct { + field.RelationField + } + } + } + Tasks struct { + field.RelationField + } + } + PrepTasks struct { + field.RelationField + } + Shifts struct { + field.RelationField + ProductType struct { + field.RelationField + } + WorkArea struct { + field.RelationField + } + } + TeamTasks struct { + field.RelationField + } + } + } + Workshops struct { + field.RelationField + } + }{ + RelationField: field.NewRelation("Orders.Tasks", "models.Task"), + ProductType: struct { + field.RelationField + }{ + RelationField: field.NewRelation("Orders.Tasks.ProductType", "models.ProductType"), + }, + Order: struct { + field.RelationField + }{ + RelationField: field.NewRelation("Orders.Tasks.Order", "models.Order"), + }, + PrepTasks: struct { + field.RelationField + Task struct { + field.RelationField + } + WorkArea struct { + field.RelationField + Workshop struct { + field.RelationField + WorkAreas struct { + field.RelationField + } + Workers struct { + field.RelationField + Workshop struct { + field.RelationField + } + TeamTasks struct { + field.RelationField + TeamType struct { + field.RelationField + } + TeamLeader struct { + field.RelationField + } + WorkArea struct { + field.RelationField + } + TeamMembers struct { + field.RelationField + } + } + } + Tasks struct { + field.RelationField + } + } + PrepTasks struct { + field.RelationField + } + Shifts struct { + field.RelationField + ProductType struct { + field.RelationField + } + WorkArea struct { + field.RelationField + } + } + TeamTasks struct { + field.RelationField + } + } + }{ + RelationField: field.NewRelation("Orders.Tasks.PrepTasks", "models.PrepTask"), + Task: struct { + field.RelationField + }{ + RelationField: field.NewRelation("Orders.Tasks.PrepTasks.Task", "models.Task"), + }, + WorkArea: struct { + field.RelationField + Workshop struct { + field.RelationField + WorkAreas struct { + field.RelationField + } + Workers struct { + field.RelationField + Workshop struct { + field.RelationField + } + TeamTasks struct { + field.RelationField + TeamType struct { + field.RelationField + } + TeamLeader struct { + field.RelationField + } + WorkArea struct { + field.RelationField + } + TeamMembers struct { + field.RelationField + } + } + } + Tasks struct { + field.RelationField + } + } + PrepTasks struct { + field.RelationField + } + Shifts struct { + field.RelationField + ProductType struct { + field.RelationField + } + WorkArea struct { + field.RelationField + } + } + TeamTasks struct { + field.RelationField + } + }{ + RelationField: field.NewRelation("Orders.Tasks.PrepTasks.WorkArea", "models.WorkArea"), + Workshop: struct { + field.RelationField + WorkAreas struct { + field.RelationField + } + Workers struct { + field.RelationField + Workshop struct { + field.RelationField + } + TeamTasks struct { + field.RelationField + TeamType struct { + field.RelationField + } + TeamLeader struct { + field.RelationField + } + WorkArea struct { + field.RelationField + } + TeamMembers struct { + field.RelationField + } + } + } + Tasks struct { + field.RelationField + } + }{ + RelationField: field.NewRelation("Orders.Tasks.PrepTasks.WorkArea.Workshop", "models.Workshop"), + WorkAreas: struct { + field.RelationField + }{ + RelationField: field.NewRelation("Orders.Tasks.PrepTasks.WorkArea.Workshop.WorkAreas", "models.WorkArea"), + }, + Workers: struct { + field.RelationField + Workshop struct { + field.RelationField + } + TeamTasks struct { + field.RelationField + TeamType struct { + field.RelationField + } + TeamLeader struct { + field.RelationField + } + WorkArea struct { + field.RelationField + } + TeamMembers struct { + field.RelationField + } + } + }{ + RelationField: field.NewRelation("Orders.Tasks.PrepTasks.WorkArea.Workshop.Workers", "models.Worker"), + Workshop: struct { + field.RelationField + }{ + RelationField: field.NewRelation("Orders.Tasks.PrepTasks.WorkArea.Workshop.Workers.Workshop", "models.Workshop"), + }, + TeamTasks: struct { + field.RelationField + TeamType struct { + field.RelationField + } + TeamLeader struct { + field.RelationField + } + WorkArea struct { + field.RelationField + } + TeamMembers struct { + field.RelationField + } + }{ + RelationField: field.NewRelation("Orders.Tasks.PrepTasks.WorkArea.Workshop.Workers.TeamTasks", "models.TeamTask"), + TeamType: struct { + field.RelationField + }{ + RelationField: field.NewRelation("Orders.Tasks.PrepTasks.WorkArea.Workshop.Workers.TeamTasks.TeamType", "models.TeamType"), + }, + TeamLeader: struct { + field.RelationField + }{ + RelationField: field.NewRelation("Orders.Tasks.PrepTasks.WorkArea.Workshop.Workers.TeamTasks.TeamLeader", "models.Worker"), + }, + WorkArea: struct { + field.RelationField + }{ + RelationField: field.NewRelation("Orders.Tasks.PrepTasks.WorkArea.Workshop.Workers.TeamTasks.WorkArea", "models.WorkArea"), + }, + TeamMembers: struct { + field.RelationField + }{ + RelationField: field.NewRelation("Orders.Tasks.PrepTasks.WorkArea.Workshop.Workers.TeamTasks.TeamMembers", "models.Worker"), + }, + }, + }, + Tasks: struct { + field.RelationField + }{ + RelationField: field.NewRelation("Orders.Tasks.PrepTasks.WorkArea.Workshop.Tasks", "models.Task"), + }, + }, + PrepTasks: struct { + field.RelationField + }{ + RelationField: field.NewRelation("Orders.Tasks.PrepTasks.WorkArea.PrepTasks", "models.PrepTask"), + }, + Shifts: struct { + field.RelationField + ProductType struct { + field.RelationField + } + WorkArea struct { + field.RelationField + } + }{ + RelationField: field.NewRelation("Orders.Tasks.PrepTasks.WorkArea.Shifts", "models.Shift"), + ProductType: struct { + field.RelationField + }{ + RelationField: field.NewRelation("Orders.Tasks.PrepTasks.WorkArea.Shifts.ProductType", "models.ProductType"), + }, + WorkArea: struct { + field.RelationField + }{ + RelationField: field.NewRelation("Orders.Tasks.PrepTasks.WorkArea.Shifts.WorkArea", "models.WorkArea"), + }, + }, + TeamTasks: struct { + field.RelationField + }{ + RelationField: field.NewRelation("Orders.Tasks.PrepTasks.WorkArea.TeamTasks", "models.TeamTask"), + }, + }, + }, + Workshops: struct { + field.RelationField + }{ + RelationField: field.NewRelation("Orders.Tasks.Workshops", "models.Workshop"), + }, + }, + } + + _customer.fillFieldMap() + + return _customer +} + +type customer struct { + customerDo + + ALL field.Asterisk + Id field.Uint + Title field.String + Contact field.String + Orders customerHasManyOrders + + fieldMap map[string]field.Expr +} + +func (c customer) Table(newTableName string) *customer { + c.customerDo.UseTable(newTableName) + return c.updateTableName(newTableName) +} + +func (c customer) As(alias string) *customer { + c.customerDo.DO = *(c.customerDo.As(alias).(*gen.DO)) + return c.updateTableName(alias) +} + +func (c *customer) updateTableName(table string) *customer { + c.ALL = field.NewAsterisk(table) + c.Id = field.NewUint(table, "id") + c.Title = field.NewString(table, "title") + c.Contact = field.NewString(table, "contact") + + c.fillFieldMap() + + return c +} + +func (c *customer) GetFieldByName(fieldName string) (field.OrderExpr, bool) { + _f, ok := c.fieldMap[fieldName] + if !ok || _f == nil { + return nil, false + } + _oe, ok := _f.(field.OrderExpr) + return _oe, ok +} + +func (c *customer) fillFieldMap() { + c.fieldMap = make(map[string]field.Expr, 4) + c.fieldMap["id"] = c.Id + c.fieldMap["title"] = c.Title + c.fieldMap["contact"] = c.Contact + +} + +func (c customer) clone(db *gorm.DB) customer { + c.customerDo.ReplaceConnPool(db.Statement.ConnPool) + return c +} + +func (c customer) replaceDB(db *gorm.DB) customer { + c.customerDo.ReplaceDB(db) + return c +} + +type customerHasManyOrders struct { + db *gorm.DB + + field.RelationField + + ProductType struct { + field.RelationField + } + Customer struct { + field.RelationField + Orders struct { + field.RelationField + } + } + Tasks struct { + field.RelationField + ProductType struct { + field.RelationField + } + Order struct { + field.RelationField + } + PrepTasks struct { + field.RelationField + Task struct { + field.RelationField + } + WorkArea struct { + field.RelationField + Workshop struct { + field.RelationField + WorkAreas struct { + field.RelationField + } + Workers struct { + field.RelationField + Workshop struct { + field.RelationField + } + TeamTasks struct { + field.RelationField + TeamType struct { + field.RelationField + } + TeamLeader struct { + field.RelationField + } + WorkArea struct { + field.RelationField + } + TeamMembers struct { + field.RelationField + } + } + } + Tasks struct { + field.RelationField + } + } + PrepTasks struct { + field.RelationField + } + Shifts struct { + field.RelationField + ProductType struct { + field.RelationField + } + WorkArea struct { + field.RelationField + } + } + TeamTasks struct { + field.RelationField + } + } + } + Workshops struct { + field.RelationField + } + } +} + +func (a customerHasManyOrders) Where(conds ...field.Expr) *customerHasManyOrders { + if len(conds) == 0 { + return &a + } + + exprs := make([]clause.Expression, 0, len(conds)) + for _, cond := range conds { + exprs = append(exprs, cond.BeCond().(clause.Expression)) + } + a.db = a.db.Clauses(clause.Where{Exprs: exprs}) + return &a +} + +func (a customerHasManyOrders) WithContext(ctx context.Context) *customerHasManyOrders { + a.db = a.db.WithContext(ctx) + return &a +} + +func (a customerHasManyOrders) Session(session *gorm.Session) *customerHasManyOrders { + a.db = a.db.Session(session) + return &a +} + +func (a customerHasManyOrders) Model(m *models.Customer) *customerHasManyOrdersTx { + return &customerHasManyOrdersTx{a.db.Model(m).Association(a.Name())} +} + +type customerHasManyOrdersTx struct{ tx *gorm.Association } + +func (a customerHasManyOrdersTx) Find() (result []*models.Order, err error) { + return result, a.tx.Find(&result) +} + +func (a customerHasManyOrdersTx) Append(values ...*models.Order) (err error) { + targetValues := make([]interface{}, len(values)) + for i, v := range values { + targetValues[i] = v + } + return a.tx.Append(targetValues...) +} + +func (a customerHasManyOrdersTx) Replace(values ...*models.Order) (err error) { + targetValues := make([]interface{}, len(values)) + for i, v := range values { + targetValues[i] = v + } + return a.tx.Replace(targetValues...) +} + +func (a customerHasManyOrdersTx) Delete(values ...*models.Order) (err error) { + targetValues := make([]interface{}, len(values)) + for i, v := range values { + targetValues[i] = v + } + return a.tx.Delete(targetValues...) +} + +func (a customerHasManyOrdersTx) Clear() error { + return a.tx.Clear() +} + +func (a customerHasManyOrdersTx) Count() int64 { + return a.tx.Count() +} + +type customerDo struct{ gen.DO } + +type ICustomerDo interface { + gen.SubQuery + Debug() ICustomerDo + WithContext(ctx context.Context) ICustomerDo + WithResult(fc func(tx gen.Dao)) gen.ResultInfo + ReplaceDB(db *gorm.DB) + ReadDB() ICustomerDo + WriteDB() ICustomerDo + As(alias string) gen.Dao + Session(config *gorm.Session) ICustomerDo + Columns(cols ...field.Expr) gen.Columns + Clauses(conds ...clause.Expression) ICustomerDo + Not(conds ...gen.Condition) ICustomerDo + Or(conds ...gen.Condition) ICustomerDo + Select(conds ...field.Expr) ICustomerDo + Where(conds ...gen.Condition) ICustomerDo + Order(conds ...field.Expr) ICustomerDo + Distinct(cols ...field.Expr) ICustomerDo + Omit(cols ...field.Expr) ICustomerDo + Join(table schema.Tabler, on ...field.Expr) ICustomerDo + LeftJoin(table schema.Tabler, on ...field.Expr) ICustomerDo + RightJoin(table schema.Tabler, on ...field.Expr) ICustomerDo + Group(cols ...field.Expr) ICustomerDo + Having(conds ...gen.Condition) ICustomerDo + Limit(limit int) ICustomerDo + Offset(offset int) ICustomerDo + Count() (count int64, err error) + Scopes(funcs ...func(gen.Dao) gen.Dao) ICustomerDo + Unscoped() ICustomerDo + Create(values ...*models.Customer) error + CreateInBatches(values []*models.Customer, batchSize int) error + Save(values ...*models.Customer) error + First() (*models.Customer, error) + Take() (*models.Customer, error) + Last() (*models.Customer, error) + Find() ([]*models.Customer, error) + FindInBatch(batchSize int, fc func(tx gen.Dao, batch int) error) (results []*models.Customer, err error) + FindInBatches(result *[]*models.Customer, batchSize int, fc func(tx gen.Dao, batch int) error) error + Pluck(column field.Expr, dest interface{}) error + Delete(...*models.Customer) (info gen.ResultInfo, err error) + Update(column field.Expr, value interface{}) (info gen.ResultInfo, err error) + UpdateSimple(columns ...field.AssignExpr) (info gen.ResultInfo, err error) + Updates(value interface{}) (info gen.ResultInfo, err error) + UpdateColumn(column field.Expr, value interface{}) (info gen.ResultInfo, err error) + UpdateColumnSimple(columns ...field.AssignExpr) (info gen.ResultInfo, err error) + UpdateColumns(value interface{}) (info gen.ResultInfo, err error) + UpdateFrom(q gen.SubQuery) gen.Dao + Attrs(attrs ...field.AssignExpr) ICustomerDo + Assign(attrs ...field.AssignExpr) ICustomerDo + Joins(fields ...field.RelationField) ICustomerDo + Preload(fields ...field.RelationField) ICustomerDo + FirstOrInit() (*models.Customer, error) + FirstOrCreate() (*models.Customer, error) + FindByPage(offset int, limit int) (result []*models.Customer, count int64, err error) + ScanByPage(result interface{}, offset int, limit int) (count int64, err error) + Scan(result interface{}) (err error) + Returning(value interface{}, columns ...string) ICustomerDo + UnderlyingDB() *gorm.DB + schema.Tabler +} + +func (c customerDo) Debug() ICustomerDo { + return c.withDO(c.DO.Debug()) +} + +func (c customerDo) WithContext(ctx context.Context) ICustomerDo { + return c.withDO(c.DO.WithContext(ctx)) +} + +func (c customerDo) ReadDB() ICustomerDo { + return c.Clauses(dbresolver.Read) +} + +func (c customerDo) WriteDB() ICustomerDo { + return c.Clauses(dbresolver.Write) +} + +func (c customerDo) Session(config *gorm.Session) ICustomerDo { + return c.withDO(c.DO.Session(config)) +} + +func (c customerDo) Clauses(conds ...clause.Expression) ICustomerDo { + return c.withDO(c.DO.Clauses(conds...)) +} + +func (c customerDo) Returning(value interface{}, columns ...string) ICustomerDo { + return c.withDO(c.DO.Returning(value, columns...)) +} + +func (c customerDo) Not(conds ...gen.Condition) ICustomerDo { + return c.withDO(c.DO.Not(conds...)) +} + +func (c customerDo) Or(conds ...gen.Condition) ICustomerDo { + return c.withDO(c.DO.Or(conds...)) +} + +func (c customerDo) Select(conds ...field.Expr) ICustomerDo { + return c.withDO(c.DO.Select(conds...)) +} + +func (c customerDo) Where(conds ...gen.Condition) ICustomerDo { + return c.withDO(c.DO.Where(conds...)) +} + +func (c customerDo) Order(conds ...field.Expr) ICustomerDo { + return c.withDO(c.DO.Order(conds...)) +} + +func (c customerDo) Distinct(cols ...field.Expr) ICustomerDo { + return c.withDO(c.DO.Distinct(cols...)) +} + +func (c customerDo) Omit(cols ...field.Expr) ICustomerDo { + return c.withDO(c.DO.Omit(cols...)) +} + +func (c customerDo) Join(table schema.Tabler, on ...field.Expr) ICustomerDo { + return c.withDO(c.DO.Join(table, on...)) +} + +func (c customerDo) LeftJoin(table schema.Tabler, on ...field.Expr) ICustomerDo { + return c.withDO(c.DO.LeftJoin(table, on...)) +} + +func (c customerDo) RightJoin(table schema.Tabler, on ...field.Expr) ICustomerDo { + return c.withDO(c.DO.RightJoin(table, on...)) +} + +func (c customerDo) Group(cols ...field.Expr) ICustomerDo { + return c.withDO(c.DO.Group(cols...)) +} + +func (c customerDo) Having(conds ...gen.Condition) ICustomerDo { + return c.withDO(c.DO.Having(conds...)) +} + +func (c customerDo) Limit(limit int) ICustomerDo { + return c.withDO(c.DO.Limit(limit)) +} + +func (c customerDo) Offset(offset int) ICustomerDo { + return c.withDO(c.DO.Offset(offset)) +} + +func (c customerDo) Scopes(funcs ...func(gen.Dao) gen.Dao) ICustomerDo { + return c.withDO(c.DO.Scopes(funcs...)) +} + +func (c customerDo) Unscoped() ICustomerDo { + return c.withDO(c.DO.Unscoped()) +} + +func (c customerDo) Create(values ...*models.Customer) error { + if len(values) == 0 { + return nil + } + return c.DO.Create(values) +} + +func (c customerDo) CreateInBatches(values []*models.Customer, batchSize int) error { + return c.DO.CreateInBatches(values, batchSize) +} + +// Save : !!! underlying implementation is different with GORM +// The method is equivalent to executing the statement: db.Clauses(clause.OnConflict{UpdateAll: true}).Create(values) +func (c customerDo) Save(values ...*models.Customer) error { + if len(values) == 0 { + return nil + } + return c.DO.Save(values) +} + +func (c customerDo) First() (*models.Customer, error) { + if result, err := c.DO.First(); err != nil { + return nil, err + } else { + return result.(*models.Customer), nil + } +} + +func (c customerDo) Take() (*models.Customer, error) { + if result, err := c.DO.Take(); err != nil { + return nil, err + } else { + return result.(*models.Customer), nil + } +} + +func (c customerDo) Last() (*models.Customer, error) { + if result, err := c.DO.Last(); err != nil { + return nil, err + } else { + return result.(*models.Customer), nil + } +} + +func (c customerDo) Find() ([]*models.Customer, error) { + result, err := c.DO.Find() + return result.([]*models.Customer), err +} + +func (c customerDo) FindInBatch(batchSize int, fc func(tx gen.Dao, batch int) error) (results []*models.Customer, err error) { + buf := make([]*models.Customer, 0, batchSize) + err = c.DO.FindInBatches(&buf, batchSize, func(tx gen.Dao, batch int) error { + defer func() { results = append(results, buf...) }() + return fc(tx, batch) + }) + return results, err +} + +func (c customerDo) FindInBatches(result *[]*models.Customer, batchSize int, fc func(tx gen.Dao, batch int) error) error { + return c.DO.FindInBatches(result, batchSize, fc) +} + +func (c customerDo) Attrs(attrs ...field.AssignExpr) ICustomerDo { + return c.withDO(c.DO.Attrs(attrs...)) +} + +func (c customerDo) Assign(attrs ...field.AssignExpr) ICustomerDo { + return c.withDO(c.DO.Assign(attrs...)) +} + +func (c customerDo) Joins(fields ...field.RelationField) ICustomerDo { + for _, _f := range fields { + c = *c.withDO(c.DO.Joins(_f)) + } + return &c +} + +func (c customerDo) Preload(fields ...field.RelationField) ICustomerDo { + for _, _f := range fields { + c = *c.withDO(c.DO.Preload(_f)) + } + return &c +} + +func (c customerDo) FirstOrInit() (*models.Customer, error) { + if result, err := c.DO.FirstOrInit(); err != nil { + return nil, err + } else { + return result.(*models.Customer), nil + } +} + +func (c customerDo) FirstOrCreate() (*models.Customer, error) { + if result, err := c.DO.FirstOrCreate(); err != nil { + return nil, err + } else { + return result.(*models.Customer), nil + } +} + +func (c customerDo) FindByPage(offset int, limit int) (result []*models.Customer, count int64, err error) { + result, err = c.Offset(offset).Limit(limit).Find() + if err != nil { + return + } + + if size := len(result); 0 < limit && 0 < size && size < limit { + count = int64(size + offset) + return + } + + count, err = c.Offset(-1).Limit(-1).Count() + return +} + +func (c customerDo) ScanByPage(result interface{}, offset int, limit int) (count int64, err error) { + count, err = c.Count() + if err != nil { + return + } + + err = c.Offset(offset).Limit(limit).Scan(result) + return +} + +func (c customerDo) Scan(result interface{}) (err error) { + return c.DO.Scan(result) +} + +func (c customerDo) Delete(models ...*models.Customer) (result gen.ResultInfo, err error) { + return c.DO.Delete(models) +} + +func (c *customerDo) withDO(do gen.Dao) *customerDo { + c.DO = *do.(*gen.DO) + return c +} diff --git a/internal/dal/customers.gen_test.go b/internal/dal/customers.gen_test.go new file mode 100644 index 0000000..424cf3c --- /dev/null +++ b/internal/dal/customers.gen_test.go @@ -0,0 +1,145 @@ +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. + +package dal + +import ( + "app/internal/models" + "context" + "fmt" + "testing" + + "gorm.io/gen" + "gorm.io/gen/field" + "gorm.io/gorm/clause" +) + +func init() { + InitializeDB() + err := _gen_test_db.AutoMigrate(&models.Customer{}) + if err != nil { + fmt.Printf("Error: AutoMigrate(&models.Customer{}) fail: %s", err) + } +} + +func Test_customerQuery(t *testing.T) { + customer := newCustomer(_gen_test_db) + customer = *customer.As(customer.TableName()) + _do := customer.WithContext(context.Background()).Debug() + + primaryKey := field.NewString(customer.TableName(), clause.PrimaryKey) + _, err := _do.Unscoped().Where(primaryKey.IsNotNull()).Delete() + if err != nil { + t.Error("clean table fail:", err) + return + } + + _, ok := customer.GetFieldByName("") + if ok { + t.Error("GetFieldByName(\"\") from customer success") + } + + err = _do.Create(&models.Customer{}) + if err != nil { + t.Error("create item in table fail:", err) + } + + err = _do.Save(&models.Customer{}) + if err != nil { + t.Error("create item in table fail:", err) + } + + err = _do.CreateInBatches([]*models.Customer{{}, {}}, 10) + if err != nil { + t.Error("create item in table fail:", err) + } + + _, err = _do.Select(customer.ALL).Take() + if err != nil { + t.Error("Take() on table fail:", err) + } + + _, err = _do.First() + if err != nil { + t.Error("First() on table fail:", err) + } + + _, err = _do.Last() + if err != nil { + t.Error("First() on table fail:", err) + } + + _, err = _do.Where(primaryKey.IsNotNull()).FindInBatch(10, func(tx gen.Dao, batch int) error { return nil }) + if err != nil { + t.Error("FindInBatch() on table fail:", err) + } + + err = _do.Where(primaryKey.IsNotNull()).FindInBatches(&[]*models.Customer{}, 10, func(tx gen.Dao, batch int) error { return nil }) + if err != nil { + t.Error("FindInBatches() on table fail:", err) + } + + _, err = _do.Select(customer.ALL).Where(primaryKey.IsNotNull()).Order(primaryKey.Desc()).Find() + if err != nil { + t.Error("Find() on table fail:", err) + } + + _, err = _do.Distinct(primaryKey).Take() + if err != nil { + t.Error("select Distinct() on table fail:", err) + } + + _, err = _do.Select(customer.ALL).Omit(primaryKey).Take() + if err != nil { + t.Error("Omit() on table fail:", err) + } + + _, err = _do.Group(primaryKey).Find() + if err != nil { + t.Error("Group() on table fail:", err) + } + + _, err = _do.Scopes(func(dao gen.Dao) gen.Dao { return dao.Where(primaryKey.IsNotNull()) }).Find() + if err != nil { + t.Error("Scopes() on table fail:", err) + } + + _, _, err = _do.FindByPage(0, 1) + if err != nil { + t.Error("FindByPage() on table fail:", err) + } + + _, err = _do.ScanByPage(&models.Customer{}, 0, 1) + if err != nil { + t.Error("ScanByPage() on table fail:", err) + } + + _, err = _do.Attrs(primaryKey).Assign(primaryKey).FirstOrInit() + if err != nil { + t.Error("FirstOrInit() on table fail:", err) + } + + _, err = _do.Attrs(primaryKey).Assign(primaryKey).FirstOrCreate() + if err != nil { + t.Error("FirstOrCreate() on table fail:", err) + } + + var _a _another + var _aPK = field.NewString(_a.TableName(), "id") + + err = _do.Join(&_a, primaryKey.EqCol(_aPK)).Scan(map[string]interface{}{}) + if err != nil { + t.Error("Join() on table fail:", err) + } + + err = _do.LeftJoin(&_a, primaryKey.EqCol(_aPK)).Scan(map[string]interface{}{}) + if err != nil { + t.Error("LeftJoin() on table fail:", err) + } + + _, err = _do.Not().Or().Clauses().Take() + if err != nil { + t.Error("Not/Or/Clauses on table fail:", err) + } +} diff --git a/internal/dal/gen.go b/internal/dal/gen.go index e69fc7e..06afe41 100644 --- a/internal/dal/gen.go +++ b/internal/dal/gen.go @@ -16,49 +16,84 @@ import ( ) var ( - Q = new(Query) - Author *author - Comment *comment - Post *post - PostType *postType + Q = new(Query) + Customer *customer + Order *order + PrepTask *prepTask + ProductType *productType + Shift *shift + Task *task + TeamTask *teamTask + TeamType *teamType + WorkArea *workArea + Worker *worker + Workshop *workshop ) func SetDefault(db *gorm.DB, opts ...gen.DOOption) { *Q = *Use(db, opts...) - Author = &Q.Author - Comment = &Q.Comment - Post = &Q.Post - PostType = &Q.PostType + Customer = &Q.Customer + Order = &Q.Order + PrepTask = &Q.PrepTask + ProductType = &Q.ProductType + Shift = &Q.Shift + Task = &Q.Task + TeamTask = &Q.TeamTask + TeamType = &Q.TeamType + WorkArea = &Q.WorkArea + Worker = &Q.Worker + Workshop = &Q.Workshop } func Use(db *gorm.DB, opts ...gen.DOOption) *Query { return &Query{ - db: db, - Author: newAuthor(db, opts...), - Comment: newComment(db, opts...), - Post: newPost(db, opts...), - PostType: newPostType(db, opts...), + db: db, + Customer: newCustomer(db, opts...), + Order: newOrder(db, opts...), + PrepTask: newPrepTask(db, opts...), + ProductType: newProductType(db, opts...), + Shift: newShift(db, opts...), + Task: newTask(db, opts...), + TeamTask: newTeamTask(db, opts...), + TeamType: newTeamType(db, opts...), + WorkArea: newWorkArea(db, opts...), + Worker: newWorker(db, opts...), + Workshop: newWorkshop(db, opts...), } } type Query struct { db *gorm.DB - Author author - Comment comment - Post post - PostType postType + Customer customer + Order order + PrepTask prepTask + ProductType productType + Shift shift + Task task + TeamTask teamTask + TeamType teamType + WorkArea workArea + Worker worker + Workshop workshop } func (q *Query) Available() bool { return q.db != nil } func (q *Query) clone(db *gorm.DB) *Query { return &Query{ - db: db, - Author: q.Author.clone(db), - Comment: q.Comment.clone(db), - Post: q.Post.clone(db), - PostType: q.PostType.clone(db), + db: db, + Customer: q.Customer.clone(db), + Order: q.Order.clone(db), + PrepTask: q.PrepTask.clone(db), + ProductType: q.ProductType.clone(db), + Shift: q.Shift.clone(db), + Task: q.Task.clone(db), + TeamTask: q.TeamTask.clone(db), + TeamType: q.TeamType.clone(db), + WorkArea: q.WorkArea.clone(db), + Worker: q.Worker.clone(db), + Workshop: q.Workshop.clone(db), } } @@ -72,27 +107,48 @@ func (q *Query) WriteDB() *Query { func (q *Query) ReplaceDB(db *gorm.DB) *Query { return &Query{ - db: db, - Author: q.Author.replaceDB(db), - Comment: q.Comment.replaceDB(db), - Post: q.Post.replaceDB(db), - PostType: q.PostType.replaceDB(db), + db: db, + Customer: q.Customer.replaceDB(db), + Order: q.Order.replaceDB(db), + PrepTask: q.PrepTask.replaceDB(db), + ProductType: q.ProductType.replaceDB(db), + Shift: q.Shift.replaceDB(db), + Task: q.Task.replaceDB(db), + TeamTask: q.TeamTask.replaceDB(db), + TeamType: q.TeamType.replaceDB(db), + WorkArea: q.WorkArea.replaceDB(db), + Worker: q.Worker.replaceDB(db), + Workshop: q.Workshop.replaceDB(db), } } type queryCtx struct { - Author IAuthorDo - Comment ICommentDo - Post IPostDo - PostType IPostTypeDo + Customer ICustomerDo + Order IOrderDo + PrepTask IPrepTaskDo + ProductType IProductTypeDo + Shift IShiftDo + Task ITaskDo + TeamTask ITeamTaskDo + TeamType ITeamTypeDo + WorkArea IWorkAreaDo + Worker IWorkerDo + Workshop IWorkshopDo } func (q *Query) WithContext(ctx context.Context) *queryCtx { return &queryCtx{ - Author: q.Author.WithContext(ctx), - Comment: q.Comment.WithContext(ctx), - Post: q.Post.WithContext(ctx), - PostType: q.PostType.WithContext(ctx), + Customer: q.Customer.WithContext(ctx), + Order: q.Order.WithContext(ctx), + PrepTask: q.PrepTask.WithContext(ctx), + ProductType: q.ProductType.WithContext(ctx), + Shift: q.Shift.WithContext(ctx), + Task: q.Task.WithContext(ctx), + TeamTask: q.TeamTask.WithContext(ctx), + TeamType: q.TeamType.WithContext(ctx), + WorkArea: q.WorkArea.WithContext(ctx), + Worker: q.Worker.WithContext(ctx), + Workshop: q.Workshop.WithContext(ctx), } } diff --git a/internal/dal/gen_test.db b/internal/dal/gen_test.db deleted file mode 100644 index ac0b67d47652549879a544b69d2cb6f5c3b3feff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12288 zcmeI#Jxjzu5C-7=$Z^%NS_Q#kEAim4vAEVKDZ~@bculHo#8m^DNHT(rMgFgijg5_y z$bm}iRo;PpGf9?gc)B@1TNLE&RaM{RWcS5}kWw62D})&F(!AECxCz!be3hU2pW2bw z%eE){R+$}PS`HKhAOHafKmY;|fB*y_009U<;MWSIY8-~4Y&R*txb^o{Lrow0D2bz0 zY**3YBDSu7=IpL3E}bn(^4GqeIr5L>Y?rfTa(o&ksXd9)k6qL0lN^Whxoo%kPv>Pt zH@?nz9?u@if->?A4L(#~j~?9f{Z|H#?`Crz`cV*o00bZa0SG_<0uX=z1Rwwb2>fG# wZvGF fail:", err) + return + } + + _, ok := order.GetFieldByName("") + if ok { + t.Error("GetFieldByName(\"\") from order success") + } + + err = _do.Create(&models.Order{}) + if err != nil { + t.Error("create item in table fail:", err) + } + + err = _do.Save(&models.Order{}) + if err != nil { + t.Error("create item in table fail:", err) + } + + err = _do.CreateInBatches([]*models.Order{{}, {}}, 10) + if err != nil { + t.Error("create item in table fail:", err) + } + + _, err = _do.Select(order.ALL).Take() + if err != nil { + t.Error("Take() on table fail:", err) + } + + _, err = _do.First() + if err != nil { + t.Error("First() on table fail:", err) + } + + _, err = _do.Last() + if err != nil { + t.Error("First() on table fail:", err) + } + + _, err = _do.Where(primaryKey.IsNotNull()).FindInBatch(10, func(tx gen.Dao, batch int) error { return nil }) + if err != nil { + t.Error("FindInBatch() on table fail:", err) + } + + err = _do.Where(primaryKey.IsNotNull()).FindInBatches(&[]*models.Order{}, 10, func(tx gen.Dao, batch int) error { return nil }) + if err != nil { + t.Error("FindInBatches() on table fail:", err) + } + + _, err = _do.Select(order.ALL).Where(primaryKey.IsNotNull()).Order(primaryKey.Desc()).Find() + if err != nil { + t.Error("Find() on table fail:", err) + } + + _, err = _do.Distinct(primaryKey).Take() + if err != nil { + t.Error("select Distinct() on table fail:", err) + } + + _, err = _do.Select(order.ALL).Omit(primaryKey).Take() + if err != nil { + t.Error("Omit() on table fail:", err) + } + + _, err = _do.Group(primaryKey).Find() + if err != nil { + t.Error("Group() on table fail:", err) + } + + _, err = _do.Scopes(func(dao gen.Dao) gen.Dao { return dao.Where(primaryKey.IsNotNull()) }).Find() + if err != nil { + t.Error("Scopes() on table fail:", err) + } + + _, _, err = _do.FindByPage(0, 1) + if err != nil { + t.Error("FindByPage() on table fail:", err) + } + + _, err = _do.ScanByPage(&models.Order{}, 0, 1) + if err != nil { + t.Error("ScanByPage() on table fail:", err) + } + + _, err = _do.Attrs(primaryKey).Assign(primaryKey).FirstOrInit() + if err != nil { + t.Error("FirstOrInit() on table fail:", err) + } + + _, err = _do.Attrs(primaryKey).Assign(primaryKey).FirstOrCreate() + if err != nil { + t.Error("FirstOrCreate() on table fail:", err) + } + + var _a _another + var _aPK = field.NewString(_a.TableName(), "id") + + err = _do.Join(&_a, primaryKey.EqCol(_aPK)).Scan(map[string]interface{}{}) + if err != nil { + t.Error("Join() on table fail:", err) + } + + err = _do.LeftJoin(&_a, primaryKey.EqCol(_aPK)).Scan(map[string]interface{}{}) + if err != nil { + t.Error("LeftJoin() on table fail:", err) + } + + _, err = _do.Not().Or().Clauses().Take() + if err != nil { + t.Error("Not/Or/Clauses on table fail:", err) + } +} diff --git a/internal/dal/post_types.gen.go b/internal/dal/post_types.gen.go deleted file mode 100644 index 65f71b4..0000000 --- a/internal/dal/post_types.gen.go +++ /dev/null @@ -1,383 +0,0 @@ -// Code generated by gorm.io/gen. DO NOT EDIT. -// Code generated by gorm.io/gen. DO NOT EDIT. -// Code generated by gorm.io/gen. DO NOT EDIT. - -package dal - -import ( - "app/internal/models" - "context" - - "gorm.io/gorm" - "gorm.io/gorm/clause" - "gorm.io/gorm/schema" - - "gorm.io/gen" - "gorm.io/gen/field" - - "gorm.io/plugin/dbresolver" -) - -func newPostType(db *gorm.DB, opts ...gen.DOOption) postType { - _postType := postType{} - - _postType.postTypeDo.UseDB(db, opts...) - _postType.postTypeDo.UseModel(&models.PostType{}) - - tableName := _postType.postTypeDo.TableName() - _postType.ALL = field.NewAsterisk(tableName) - _postType.Id = field.NewUint(tableName, "id") - _postType.Name = field.NewString(tableName, "name") - - _postType.fillFieldMap() - - return _postType -} - -type postType struct { - postTypeDo - - ALL field.Asterisk - Id field.Uint - Name field.String - - fieldMap map[string]field.Expr -} - -func (p postType) Table(newTableName string) *postType { - p.postTypeDo.UseTable(newTableName) - return p.updateTableName(newTableName) -} - -func (p postType) As(alias string) *postType { - p.postTypeDo.DO = *(p.postTypeDo.As(alias).(*gen.DO)) - return p.updateTableName(alias) -} - -func (p *postType) updateTableName(table string) *postType { - p.ALL = field.NewAsterisk(table) - p.Id = field.NewUint(table, "id") - p.Name = field.NewString(table, "name") - - p.fillFieldMap() - - return p -} - -func (p *postType) GetFieldByName(fieldName string) (field.OrderExpr, bool) { - _f, ok := p.fieldMap[fieldName] - if !ok || _f == nil { - return nil, false - } - _oe, ok := _f.(field.OrderExpr) - return _oe, ok -} - -func (p *postType) fillFieldMap() { - p.fieldMap = make(map[string]field.Expr, 2) - p.fieldMap["id"] = p.Id - p.fieldMap["name"] = p.Name -} - -func (p postType) clone(db *gorm.DB) postType { - p.postTypeDo.ReplaceConnPool(db.Statement.ConnPool) - return p -} - -func (p postType) replaceDB(db *gorm.DB) postType { - p.postTypeDo.ReplaceDB(db) - return p -} - -type postTypeDo struct{ gen.DO } - -type IPostTypeDo interface { - gen.SubQuery - Debug() IPostTypeDo - WithContext(ctx context.Context) IPostTypeDo - WithResult(fc func(tx gen.Dao)) gen.ResultInfo - ReplaceDB(db *gorm.DB) - ReadDB() IPostTypeDo - WriteDB() IPostTypeDo - As(alias string) gen.Dao - Session(config *gorm.Session) IPostTypeDo - Columns(cols ...field.Expr) gen.Columns - Clauses(conds ...clause.Expression) IPostTypeDo - Not(conds ...gen.Condition) IPostTypeDo - Or(conds ...gen.Condition) IPostTypeDo - Select(conds ...field.Expr) IPostTypeDo - Where(conds ...gen.Condition) IPostTypeDo - Order(conds ...field.Expr) IPostTypeDo - Distinct(cols ...field.Expr) IPostTypeDo - Omit(cols ...field.Expr) IPostTypeDo - Join(table schema.Tabler, on ...field.Expr) IPostTypeDo - LeftJoin(table schema.Tabler, on ...field.Expr) IPostTypeDo - RightJoin(table schema.Tabler, on ...field.Expr) IPostTypeDo - Group(cols ...field.Expr) IPostTypeDo - Having(conds ...gen.Condition) IPostTypeDo - Limit(limit int) IPostTypeDo - Offset(offset int) IPostTypeDo - Count() (count int64, err error) - Scopes(funcs ...func(gen.Dao) gen.Dao) IPostTypeDo - Unscoped() IPostTypeDo - Create(values ...*models.PostType) error - CreateInBatches(values []*models.PostType, batchSize int) error - Save(values ...*models.PostType) error - First() (*models.PostType, error) - Take() (*models.PostType, error) - Last() (*models.PostType, error) - Find() ([]*models.PostType, error) - FindInBatch(batchSize int, fc func(tx gen.Dao, batch int) error) (results []*models.PostType, err error) - FindInBatches(result *[]*models.PostType, batchSize int, fc func(tx gen.Dao, batch int) error) error - Pluck(column field.Expr, dest interface{}) error - Delete(...*models.PostType) (info gen.ResultInfo, err error) - Update(column field.Expr, value interface{}) (info gen.ResultInfo, err error) - UpdateSimple(columns ...field.AssignExpr) (info gen.ResultInfo, err error) - Updates(value interface{}) (info gen.ResultInfo, err error) - UpdateColumn(column field.Expr, value interface{}) (info gen.ResultInfo, err error) - UpdateColumnSimple(columns ...field.AssignExpr) (info gen.ResultInfo, err error) - UpdateColumns(value interface{}) (info gen.ResultInfo, err error) - UpdateFrom(q gen.SubQuery) gen.Dao - Attrs(attrs ...field.AssignExpr) IPostTypeDo - Assign(attrs ...field.AssignExpr) IPostTypeDo - Joins(fields ...field.RelationField) IPostTypeDo - Preload(fields ...field.RelationField) IPostTypeDo - FirstOrInit() (*models.PostType, error) - FirstOrCreate() (*models.PostType, error) - FindByPage(offset int, limit int) (result []*models.PostType, count int64, err error) - ScanByPage(result interface{}, offset int, limit int) (count int64, err error) - Scan(result interface{}) (err error) - Returning(value interface{}, columns ...string) IPostTypeDo - UnderlyingDB() *gorm.DB - schema.Tabler -} - -func (p postTypeDo) Debug() IPostTypeDo { - return p.withDO(p.DO.Debug()) -} - -func (p postTypeDo) WithContext(ctx context.Context) IPostTypeDo { - return p.withDO(p.DO.WithContext(ctx)) -} - -func (p postTypeDo) ReadDB() IPostTypeDo { - return p.Clauses(dbresolver.Read) -} - -func (p postTypeDo) WriteDB() IPostTypeDo { - return p.Clauses(dbresolver.Write) -} - -func (p postTypeDo) Session(config *gorm.Session) IPostTypeDo { - return p.withDO(p.DO.Session(config)) -} - -func (p postTypeDo) Clauses(conds ...clause.Expression) IPostTypeDo { - return p.withDO(p.DO.Clauses(conds...)) -} - -func (p postTypeDo) Returning(value interface{}, columns ...string) IPostTypeDo { - return p.withDO(p.DO.Returning(value, columns...)) -} - -func (p postTypeDo) Not(conds ...gen.Condition) IPostTypeDo { - return p.withDO(p.DO.Not(conds...)) -} - -func (p postTypeDo) Or(conds ...gen.Condition) IPostTypeDo { - return p.withDO(p.DO.Or(conds...)) -} - -func (p postTypeDo) Select(conds ...field.Expr) IPostTypeDo { - return p.withDO(p.DO.Select(conds...)) -} - -func (p postTypeDo) Where(conds ...gen.Condition) IPostTypeDo { - return p.withDO(p.DO.Where(conds...)) -} - -func (p postTypeDo) Order(conds ...field.Expr) IPostTypeDo { - return p.withDO(p.DO.Order(conds...)) -} - -func (p postTypeDo) Distinct(cols ...field.Expr) IPostTypeDo { - return p.withDO(p.DO.Distinct(cols...)) -} - -func (p postTypeDo) Omit(cols ...field.Expr) IPostTypeDo { - return p.withDO(p.DO.Omit(cols...)) -} - -func (p postTypeDo) Join(table schema.Tabler, on ...field.Expr) IPostTypeDo { - return p.withDO(p.DO.Join(table, on...)) -} - -func (p postTypeDo) LeftJoin(table schema.Tabler, on ...field.Expr) IPostTypeDo { - return p.withDO(p.DO.LeftJoin(table, on...)) -} - -func (p postTypeDo) RightJoin(table schema.Tabler, on ...field.Expr) IPostTypeDo { - return p.withDO(p.DO.RightJoin(table, on...)) -} - -func (p postTypeDo) Group(cols ...field.Expr) IPostTypeDo { - return p.withDO(p.DO.Group(cols...)) -} - -func (p postTypeDo) Having(conds ...gen.Condition) IPostTypeDo { - return p.withDO(p.DO.Having(conds...)) -} - -func (p postTypeDo) Limit(limit int) IPostTypeDo { - return p.withDO(p.DO.Limit(limit)) -} - -func (p postTypeDo) Offset(offset int) IPostTypeDo { - return p.withDO(p.DO.Offset(offset)) -} - -func (p postTypeDo) Scopes(funcs ...func(gen.Dao) gen.Dao) IPostTypeDo { - return p.withDO(p.DO.Scopes(funcs...)) -} - -func (p postTypeDo) Unscoped() IPostTypeDo { - return p.withDO(p.DO.Unscoped()) -} - -func (p postTypeDo) Create(values ...*models.PostType) error { - if len(values) == 0 { - return nil - } - return p.DO.Create(values) -} - -func (p postTypeDo) CreateInBatches(values []*models.PostType, batchSize int) error { - return p.DO.CreateInBatches(values, batchSize) -} - -// Save : !!! underlying implementation is different with GORM -// The method is equivalent to executing the statement: db.Clauses(clause.OnConflict{UpdateAll: true}).Create(values) -func (p postTypeDo) Save(values ...*models.PostType) error { - if len(values) == 0 { - return nil - } - return p.DO.Save(values) -} - -func (p postTypeDo) First() (*models.PostType, error) { - if result, err := p.DO.First(); err != nil { - return nil, err - } else { - return result.(*models.PostType), nil - } -} - -func (p postTypeDo) Take() (*models.PostType, error) { - if result, err := p.DO.Take(); err != nil { - return nil, err - } else { - return result.(*models.PostType), nil - } -} - -func (p postTypeDo) Last() (*models.PostType, error) { - if result, err := p.DO.Last(); err != nil { - return nil, err - } else { - return result.(*models.PostType), nil - } -} - -func (p postTypeDo) Find() ([]*models.PostType, error) { - result, err := p.DO.Find() - return result.([]*models.PostType), err -} - -func (p postTypeDo) FindInBatch(batchSize int, fc func(tx gen.Dao, batch int) error) (results []*models.PostType, err error) { - buf := make([]*models.PostType, 0, batchSize) - err = p.DO.FindInBatches(&buf, batchSize, func(tx gen.Dao, batch int) error { - defer func() { results = append(results, buf...) }() - return fc(tx, batch) - }) - return results, err -} - -func (p postTypeDo) FindInBatches(result *[]*models.PostType, batchSize int, fc func(tx gen.Dao, batch int) error) error { - return p.DO.FindInBatches(result, batchSize, fc) -} - -func (p postTypeDo) Attrs(attrs ...field.AssignExpr) IPostTypeDo { - return p.withDO(p.DO.Attrs(attrs...)) -} - -func (p postTypeDo) Assign(attrs ...field.AssignExpr) IPostTypeDo { - return p.withDO(p.DO.Assign(attrs...)) -} - -func (p postTypeDo) Joins(fields ...field.RelationField) IPostTypeDo { - for _, _f := range fields { - p = *p.withDO(p.DO.Joins(_f)) - } - return &p -} - -func (p postTypeDo) Preload(fields ...field.RelationField) IPostTypeDo { - for _, _f := range fields { - p = *p.withDO(p.DO.Preload(_f)) - } - return &p -} - -func (p postTypeDo) FirstOrInit() (*models.PostType, error) { - if result, err := p.DO.FirstOrInit(); err != nil { - return nil, err - } else { - return result.(*models.PostType), nil - } -} - -func (p postTypeDo) FirstOrCreate() (*models.PostType, error) { - if result, err := p.DO.FirstOrCreate(); err != nil { - return nil, err - } else { - return result.(*models.PostType), nil - } -} - -func (p postTypeDo) FindByPage(offset int, limit int) (result []*models.PostType, count int64, err error) { - result, err = p.Offset(offset).Limit(limit).Find() - if err != nil { - return - } - - if size := len(result); 0 < limit && 0 < size && size < limit { - count = int64(size + offset) - return - } - - count, err = p.Offset(-1).Limit(-1).Count() - return -} - -func (p postTypeDo) ScanByPage(result interface{}, offset int, limit int) (count int64, err error) { - count, err = p.Count() - if err != nil { - return - } - - err = p.Offset(offset).Limit(limit).Scan(result) - return -} - -func (p postTypeDo) Scan(result interface{}) (err error) { - return p.DO.Scan(result) -} - -func (p postTypeDo) Delete(models ...*models.PostType) (result gen.ResultInfo, err error) { - return p.DO.Delete(models) -} - -func (p *postTypeDo) withDO(do gen.Dao) *postTypeDo { - p.DO = *do.(*gen.DO) - return p -} diff --git a/internal/dal/post_types.gen_test.go b/internal/dal/post_types.gen_test.go deleted file mode 100644 index df0dd22..0000000 --- a/internal/dal/post_types.gen_test.go +++ /dev/null @@ -1,145 +0,0 @@ -// Code generated by gorm.io/gen. DO NOT EDIT. -// Code generated by gorm.io/gen. DO NOT EDIT. -// Code generated by gorm.io/gen. DO NOT EDIT. - -package dal - -import ( - "app/internal/models" - "context" - "fmt" - "testing" - - "gorm.io/gen" - "gorm.io/gen/field" - "gorm.io/gorm/clause" -) - -func init() { - InitializeDB() - err := _gen_test_db.AutoMigrate(&models.PostType{}) - if err != nil { - fmt.Printf("Error: AutoMigrate(&models.PostType{}) fail: %s", err) - } -} - -func Test_postTypeQuery(t *testing.T) { - postType := newPostType(_gen_test_db) - postType = *postType.As(postType.TableName()) - _do := postType.WithContext(context.Background()).Debug() - - primaryKey := field.NewString(postType.TableName(), clause.PrimaryKey) - _, err := _do.Unscoped().Where(primaryKey.IsNotNull()).Delete() - if err != nil { - t.Error("clean table fail:", err) - return - } - - _, ok := postType.GetFieldByName("") - if ok { - t.Error("GetFieldByName(\"\") from postType success") - } - - err = _do.Create(&models.PostType{}) - if err != nil { - t.Error("create item in table fail:", err) - } - - err = _do.Save(&models.PostType{}) - if err != nil { - t.Error("create item in table fail:", err) - } - - err = _do.CreateInBatches([]*models.PostType{{}, {}}, 10) - if err != nil { - t.Error("create item in table fail:", err) - } - - _, err = _do.Select(postType.ALL).Take() - if err != nil { - t.Error("Take() on table fail:", err) - } - - _, err = _do.First() - if err != nil { - t.Error("First() on table fail:", err) - } - - _, err = _do.Last() - if err != nil { - t.Error("First() on table fail:", err) - } - - _, err = _do.Where(primaryKey.IsNotNull()).FindInBatch(10, func(tx gen.Dao, batch int) error { return nil }) - if err != nil { - t.Error("FindInBatch() on table fail:", err) - } - - err = _do.Where(primaryKey.IsNotNull()).FindInBatches(&[]*models.PostType{}, 10, func(tx gen.Dao, batch int) error { return nil }) - if err != nil { - t.Error("FindInBatches() on table fail:", err) - } - - _, err = _do.Select(postType.ALL).Where(primaryKey.IsNotNull()).Order(primaryKey.Desc()).Find() - if err != nil { - t.Error("Find() on table fail:", err) - } - - _, err = _do.Distinct(primaryKey).Take() - if err != nil { - t.Error("select Distinct() on table fail:", err) - } - - _, err = _do.Select(postType.ALL).Omit(primaryKey).Take() - if err != nil { - t.Error("Omit() on table fail:", err) - } - - _, err = _do.Group(primaryKey).Find() - if err != nil { - t.Error("Group() on table fail:", err) - } - - _, err = _do.Scopes(func(dao gen.Dao) gen.Dao { return dao.Where(primaryKey.IsNotNull()) }).Find() - if err != nil { - t.Error("Scopes() on table fail:", err) - } - - _, _, err = _do.FindByPage(0, 1) - if err != nil { - t.Error("FindByPage() on table fail:", err) - } - - _, err = _do.ScanByPage(&models.PostType{}, 0, 1) - if err != nil { - t.Error("ScanByPage() on table fail:", err) - } - - _, err = _do.Attrs(primaryKey).Assign(primaryKey).FirstOrInit() - if err != nil { - t.Error("FirstOrInit() on table fail:", err) - } - - _, err = _do.Attrs(primaryKey).Assign(primaryKey).FirstOrCreate() - if err != nil { - t.Error("FirstOrCreate() on table fail:", err) - } - - var _a _another - var _aPK = field.NewString(_a.TableName(), "id") - - err = _do.Join(&_a, primaryKey.EqCol(_aPK)).Scan(map[string]interface{}{}) - if err != nil { - t.Error("Join() on table fail:", err) - } - - err = _do.LeftJoin(&_a, primaryKey.EqCol(_aPK)).Scan(map[string]interface{}{}) - if err != nil { - t.Error("LeftJoin() on table fail:", err) - } - - _, err = _do.Not().Or().Clauses().Take() - if err != nil { - t.Error("Not/Or/Clauses on table fail:", err) - } -} diff --git a/internal/dal/posts.gen.go b/internal/dal/posts.gen.go deleted file mode 100644 index cd6295d..0000000 --- a/internal/dal/posts.gen.go +++ /dev/null @@ -1,713 +0,0 @@ -// Code generated by gorm.io/gen. DO NOT EDIT. -// Code generated by gorm.io/gen. DO NOT EDIT. -// Code generated by gorm.io/gen. DO NOT EDIT. - -package dal - -import ( - "app/internal/models" - "context" - - "gorm.io/gorm" - "gorm.io/gorm/clause" - "gorm.io/gorm/schema" - - "gorm.io/gen" - "gorm.io/gen/field" - - "gorm.io/plugin/dbresolver" -) - -func newPost(db *gorm.DB, opts ...gen.DOOption) post { - _post := post{} - - _post.postDo.UseDB(db, opts...) - _post.postDo.UseModel(&models.Post{}) - - tableName := _post.postDo.TableName() - _post.ALL = field.NewAsterisk(tableName) - _post.Id = field.NewUint(tableName, "id") - _post.Text = field.NewString(tableName, "text") - _post.Deadline = field.NewInt64(tableName, "deadline") - _post.CreatedAt = field.NewInt64(tableName, "created_at") - _post.AuthorId = field.NewUint(tableName, "author_id") - _post.PostTypeId = field.NewUint(tableName, "post_type_id") - _post.Author = postBelongsToAuthor{ - db: db.Session(&gorm.Session{}), - - RelationField: field.NewRelation("Author", "models.Author"), - Posts: struct { - field.RelationField - Author struct { - field.RelationField - } - PostType struct { - field.RelationField - } - Comments struct { - field.RelationField - Author struct { - field.RelationField - } - Posts struct { - field.RelationField - } - } - }{ - RelationField: field.NewRelation("Author.Posts", "models.Post"), - Author: struct { - field.RelationField - }{ - RelationField: field.NewRelation("Author.Posts.Author", "models.Author"), - }, - PostType: struct { - field.RelationField - }{ - RelationField: field.NewRelation("Author.Posts.PostType", "models.PostType"), - }, - Comments: struct { - field.RelationField - Author struct { - field.RelationField - } - Posts struct { - field.RelationField - } - }{ - RelationField: field.NewRelation("Author.Posts.Comments", "models.Comment"), - Author: struct { - field.RelationField - }{ - RelationField: field.NewRelation("Author.Posts.Comments.Author", "models.Author"), - }, - Posts: struct { - field.RelationField - }{ - RelationField: field.NewRelation("Author.Posts.Comments.Posts", "models.Post"), - }, - }, - }, - Comments: struct { - field.RelationField - }{ - RelationField: field.NewRelation("Author.Comments", "models.Comment"), - }, - } - - _post.PostType = postBelongsToPostType{ - db: db.Session(&gorm.Session{}), - - RelationField: field.NewRelation("PostType", "models.PostType"), - } - - _post.Comments = postManyToManyComments{ - db: db.Session(&gorm.Session{}), - - RelationField: field.NewRelation("Comments", "models.Comment"), - } - - _post.fillFieldMap() - - return _post -} - -type post struct { - postDo - - ALL field.Asterisk - Id field.Uint - Text field.String - Deadline field.Int64 - CreatedAt field.Int64 - AuthorId field.Uint - PostTypeId field.Uint - Author postBelongsToAuthor - - PostType postBelongsToPostType - - Comments postManyToManyComments - - fieldMap map[string]field.Expr -} - -func (p post) Table(newTableName string) *post { - p.postDo.UseTable(newTableName) - return p.updateTableName(newTableName) -} - -func (p post) As(alias string) *post { - p.postDo.DO = *(p.postDo.As(alias).(*gen.DO)) - return p.updateTableName(alias) -} - -func (p *post) updateTableName(table string) *post { - p.ALL = field.NewAsterisk(table) - p.Id = field.NewUint(table, "id") - p.Text = field.NewString(table, "text") - p.Deadline = field.NewInt64(table, "deadline") - p.CreatedAt = field.NewInt64(table, "created_at") - p.AuthorId = field.NewUint(table, "author_id") - p.PostTypeId = field.NewUint(table, "post_type_id") - - p.fillFieldMap() - - return p -} - -func (p *post) GetFieldByName(fieldName string) (field.OrderExpr, bool) { - _f, ok := p.fieldMap[fieldName] - if !ok || _f == nil { - return nil, false - } - _oe, ok := _f.(field.OrderExpr) - return _oe, ok -} - -func (p *post) fillFieldMap() { - p.fieldMap = make(map[string]field.Expr, 9) - p.fieldMap["id"] = p.Id - p.fieldMap["text"] = p.Text - p.fieldMap["deadline"] = p.Deadline - p.fieldMap["created_at"] = p.CreatedAt - p.fieldMap["author_id"] = p.AuthorId - p.fieldMap["post_type_id"] = p.PostTypeId - -} - -func (p post) clone(db *gorm.DB) post { - p.postDo.ReplaceConnPool(db.Statement.ConnPool) - return p -} - -func (p post) replaceDB(db *gorm.DB) post { - p.postDo.ReplaceDB(db) - return p -} - -type postBelongsToAuthor struct { - db *gorm.DB - - field.RelationField - - Posts struct { - field.RelationField - Author struct { - field.RelationField - } - PostType struct { - field.RelationField - } - Comments struct { - field.RelationField - Author struct { - field.RelationField - } - Posts struct { - field.RelationField - } - } - } - Comments struct { - field.RelationField - } -} - -func (a postBelongsToAuthor) Where(conds ...field.Expr) *postBelongsToAuthor { - if len(conds) == 0 { - return &a - } - - exprs := make([]clause.Expression, 0, len(conds)) - for _, cond := range conds { - exprs = append(exprs, cond.BeCond().(clause.Expression)) - } - a.db = a.db.Clauses(clause.Where{Exprs: exprs}) - return &a -} - -func (a postBelongsToAuthor) WithContext(ctx context.Context) *postBelongsToAuthor { - a.db = a.db.WithContext(ctx) - return &a -} - -func (a postBelongsToAuthor) Session(session *gorm.Session) *postBelongsToAuthor { - a.db = a.db.Session(session) - return &a -} - -func (a postBelongsToAuthor) Model(m *models.Post) *postBelongsToAuthorTx { - return &postBelongsToAuthorTx{a.db.Model(m).Association(a.Name())} -} - -type postBelongsToAuthorTx struct{ tx *gorm.Association } - -func (a postBelongsToAuthorTx) Find() (result *models.Author, err error) { - return result, a.tx.Find(&result) -} - -func (a postBelongsToAuthorTx) Append(values ...*models.Author) (err error) { - targetValues := make([]interface{}, len(values)) - for i, v := range values { - targetValues[i] = v - } - return a.tx.Append(targetValues...) -} - -func (a postBelongsToAuthorTx) Replace(values ...*models.Author) (err error) { - targetValues := make([]interface{}, len(values)) - for i, v := range values { - targetValues[i] = v - } - return a.tx.Replace(targetValues...) -} - -func (a postBelongsToAuthorTx) Delete(values ...*models.Author) (err error) { - targetValues := make([]interface{}, len(values)) - for i, v := range values { - targetValues[i] = v - } - return a.tx.Delete(targetValues...) -} - -func (a postBelongsToAuthorTx) Clear() error { - return a.tx.Clear() -} - -func (a postBelongsToAuthorTx) Count() int64 { - return a.tx.Count() -} - -type postBelongsToPostType struct { - db *gorm.DB - - field.RelationField -} - -func (a postBelongsToPostType) Where(conds ...field.Expr) *postBelongsToPostType { - if len(conds) == 0 { - return &a - } - - exprs := make([]clause.Expression, 0, len(conds)) - for _, cond := range conds { - exprs = append(exprs, cond.BeCond().(clause.Expression)) - } - a.db = a.db.Clauses(clause.Where{Exprs: exprs}) - return &a -} - -func (a postBelongsToPostType) WithContext(ctx context.Context) *postBelongsToPostType { - a.db = a.db.WithContext(ctx) - return &a -} - -func (a postBelongsToPostType) Session(session *gorm.Session) *postBelongsToPostType { - a.db = a.db.Session(session) - return &a -} - -func (a postBelongsToPostType) Model(m *models.Post) *postBelongsToPostTypeTx { - return &postBelongsToPostTypeTx{a.db.Model(m).Association(a.Name())} -} - -type postBelongsToPostTypeTx struct{ tx *gorm.Association } - -func (a postBelongsToPostTypeTx) Find() (result *models.PostType, err error) { - return result, a.tx.Find(&result) -} - -func (a postBelongsToPostTypeTx) Append(values ...*models.PostType) (err error) { - targetValues := make([]interface{}, len(values)) - for i, v := range values { - targetValues[i] = v - } - return a.tx.Append(targetValues...) -} - -func (a postBelongsToPostTypeTx) Replace(values ...*models.PostType) (err error) { - targetValues := make([]interface{}, len(values)) - for i, v := range values { - targetValues[i] = v - } - return a.tx.Replace(targetValues...) -} - -func (a postBelongsToPostTypeTx) Delete(values ...*models.PostType) (err error) { - targetValues := make([]interface{}, len(values)) - for i, v := range values { - targetValues[i] = v - } - return a.tx.Delete(targetValues...) -} - -func (a postBelongsToPostTypeTx) Clear() error { - return a.tx.Clear() -} - -func (a postBelongsToPostTypeTx) Count() int64 { - return a.tx.Count() -} - -type postManyToManyComments struct { - db *gorm.DB - - field.RelationField -} - -func (a postManyToManyComments) Where(conds ...field.Expr) *postManyToManyComments { - if len(conds) == 0 { - return &a - } - - exprs := make([]clause.Expression, 0, len(conds)) - for _, cond := range conds { - exprs = append(exprs, cond.BeCond().(clause.Expression)) - } - a.db = a.db.Clauses(clause.Where{Exprs: exprs}) - return &a -} - -func (a postManyToManyComments) WithContext(ctx context.Context) *postManyToManyComments { - a.db = a.db.WithContext(ctx) - return &a -} - -func (a postManyToManyComments) Session(session *gorm.Session) *postManyToManyComments { - a.db = a.db.Session(session) - return &a -} - -func (a postManyToManyComments) Model(m *models.Post) *postManyToManyCommentsTx { - return &postManyToManyCommentsTx{a.db.Model(m).Association(a.Name())} -} - -type postManyToManyCommentsTx struct{ tx *gorm.Association } - -func (a postManyToManyCommentsTx) Find() (result []*models.Comment, err error) { - return result, a.tx.Find(&result) -} - -func (a postManyToManyCommentsTx) Append(values ...*models.Comment) (err error) { - targetValues := make([]interface{}, len(values)) - for i, v := range values { - targetValues[i] = v - } - return a.tx.Append(targetValues...) -} - -func (a postManyToManyCommentsTx) Replace(values ...*models.Comment) (err error) { - targetValues := make([]interface{}, len(values)) - for i, v := range values { - targetValues[i] = v - } - return a.tx.Replace(targetValues...) -} - -func (a postManyToManyCommentsTx) Delete(values ...*models.Comment) (err error) { - targetValues := make([]interface{}, len(values)) - for i, v := range values { - targetValues[i] = v - } - return a.tx.Delete(targetValues...) -} - -func (a postManyToManyCommentsTx) Clear() error { - return a.tx.Clear() -} - -func (a postManyToManyCommentsTx) Count() int64 { - return a.tx.Count() -} - -type postDo struct{ gen.DO } - -type IPostDo interface { - gen.SubQuery - Debug() IPostDo - WithContext(ctx context.Context) IPostDo - WithResult(fc func(tx gen.Dao)) gen.ResultInfo - ReplaceDB(db *gorm.DB) - ReadDB() IPostDo - WriteDB() IPostDo - As(alias string) gen.Dao - Session(config *gorm.Session) IPostDo - Columns(cols ...field.Expr) gen.Columns - Clauses(conds ...clause.Expression) IPostDo - Not(conds ...gen.Condition) IPostDo - Or(conds ...gen.Condition) IPostDo - Select(conds ...field.Expr) IPostDo - Where(conds ...gen.Condition) IPostDo - Order(conds ...field.Expr) IPostDo - Distinct(cols ...field.Expr) IPostDo - Omit(cols ...field.Expr) IPostDo - Join(table schema.Tabler, on ...field.Expr) IPostDo - LeftJoin(table schema.Tabler, on ...field.Expr) IPostDo - RightJoin(table schema.Tabler, on ...field.Expr) IPostDo - Group(cols ...field.Expr) IPostDo - Having(conds ...gen.Condition) IPostDo - Limit(limit int) IPostDo - Offset(offset int) IPostDo - Count() (count int64, err error) - Scopes(funcs ...func(gen.Dao) gen.Dao) IPostDo - Unscoped() IPostDo - Create(values ...*models.Post) error - CreateInBatches(values []*models.Post, batchSize int) error - Save(values ...*models.Post) error - First() (*models.Post, error) - Take() (*models.Post, error) - Last() (*models.Post, error) - Find() ([]*models.Post, error) - FindInBatch(batchSize int, fc func(tx gen.Dao, batch int) error) (results []*models.Post, err error) - FindInBatches(result *[]*models.Post, batchSize int, fc func(tx gen.Dao, batch int) error) error - Pluck(column field.Expr, dest interface{}) error - Delete(...*models.Post) (info gen.ResultInfo, err error) - Update(column field.Expr, value interface{}) (info gen.ResultInfo, err error) - UpdateSimple(columns ...field.AssignExpr) (info gen.ResultInfo, err error) - Updates(value interface{}) (info gen.ResultInfo, err error) - UpdateColumn(column field.Expr, value interface{}) (info gen.ResultInfo, err error) - UpdateColumnSimple(columns ...field.AssignExpr) (info gen.ResultInfo, err error) - UpdateColumns(value interface{}) (info gen.ResultInfo, err error) - UpdateFrom(q gen.SubQuery) gen.Dao - Attrs(attrs ...field.AssignExpr) IPostDo - Assign(attrs ...field.AssignExpr) IPostDo - Joins(fields ...field.RelationField) IPostDo - Preload(fields ...field.RelationField) IPostDo - FirstOrInit() (*models.Post, error) - FirstOrCreate() (*models.Post, error) - FindByPage(offset int, limit int) (result []*models.Post, count int64, err error) - ScanByPage(result interface{}, offset int, limit int) (count int64, err error) - Scan(result interface{}) (err error) - Returning(value interface{}, columns ...string) IPostDo - UnderlyingDB() *gorm.DB - schema.Tabler -} - -func (p postDo) Debug() IPostDo { - return p.withDO(p.DO.Debug()) -} - -func (p postDo) WithContext(ctx context.Context) IPostDo { - return p.withDO(p.DO.WithContext(ctx)) -} - -func (p postDo) ReadDB() IPostDo { - return p.Clauses(dbresolver.Read) -} - -func (p postDo) WriteDB() IPostDo { - return p.Clauses(dbresolver.Write) -} - -func (p postDo) Session(config *gorm.Session) IPostDo { - return p.withDO(p.DO.Session(config)) -} - -func (p postDo) Clauses(conds ...clause.Expression) IPostDo { - return p.withDO(p.DO.Clauses(conds...)) -} - -func (p postDo) Returning(value interface{}, columns ...string) IPostDo { - return p.withDO(p.DO.Returning(value, columns...)) -} - -func (p postDo) Not(conds ...gen.Condition) IPostDo { - return p.withDO(p.DO.Not(conds...)) -} - -func (p postDo) Or(conds ...gen.Condition) IPostDo { - return p.withDO(p.DO.Or(conds...)) -} - -func (p postDo) Select(conds ...field.Expr) IPostDo { - return p.withDO(p.DO.Select(conds...)) -} - -func (p postDo) Where(conds ...gen.Condition) IPostDo { - return p.withDO(p.DO.Where(conds...)) -} - -func (p postDo) Order(conds ...field.Expr) IPostDo { - return p.withDO(p.DO.Order(conds...)) -} - -func (p postDo) Distinct(cols ...field.Expr) IPostDo { - return p.withDO(p.DO.Distinct(cols...)) -} - -func (p postDo) Omit(cols ...field.Expr) IPostDo { - return p.withDO(p.DO.Omit(cols...)) -} - -func (p postDo) Join(table schema.Tabler, on ...field.Expr) IPostDo { - return p.withDO(p.DO.Join(table, on...)) -} - -func (p postDo) LeftJoin(table schema.Tabler, on ...field.Expr) IPostDo { - return p.withDO(p.DO.LeftJoin(table, on...)) -} - -func (p postDo) RightJoin(table schema.Tabler, on ...field.Expr) IPostDo { - return p.withDO(p.DO.RightJoin(table, on...)) -} - -func (p postDo) Group(cols ...field.Expr) IPostDo { - return p.withDO(p.DO.Group(cols...)) -} - -func (p postDo) Having(conds ...gen.Condition) IPostDo { - return p.withDO(p.DO.Having(conds...)) -} - -func (p postDo) Limit(limit int) IPostDo { - return p.withDO(p.DO.Limit(limit)) -} - -func (p postDo) Offset(offset int) IPostDo { - return p.withDO(p.DO.Offset(offset)) -} - -func (p postDo) Scopes(funcs ...func(gen.Dao) gen.Dao) IPostDo { - return p.withDO(p.DO.Scopes(funcs...)) -} - -func (p postDo) Unscoped() IPostDo { - return p.withDO(p.DO.Unscoped()) -} - -func (p postDo) Create(values ...*models.Post) error { - if len(values) == 0 { - return nil - } - return p.DO.Create(values) -} - -func (p postDo) CreateInBatches(values []*models.Post, batchSize int) error { - return p.DO.CreateInBatches(values, batchSize) -} - -// Save : !!! underlying implementation is different with GORM -// The method is equivalent to executing the statement: db.Clauses(clause.OnConflict{UpdateAll: true}).Create(values) -func (p postDo) Save(values ...*models.Post) error { - if len(values) == 0 { - return nil - } - return p.DO.Save(values) -} - -func (p postDo) First() (*models.Post, error) { - if result, err := p.DO.First(); err != nil { - return nil, err - } else { - return result.(*models.Post), nil - } -} - -func (p postDo) Take() (*models.Post, error) { - if result, err := p.DO.Take(); err != nil { - return nil, err - } else { - return result.(*models.Post), nil - } -} - -func (p postDo) Last() (*models.Post, error) { - if result, err := p.DO.Last(); err != nil { - return nil, err - } else { - return result.(*models.Post), nil - } -} - -func (p postDo) Find() ([]*models.Post, error) { - result, err := p.DO.Find() - return result.([]*models.Post), err -} - -func (p postDo) FindInBatch(batchSize int, fc func(tx gen.Dao, batch int) error) (results []*models.Post, err error) { - buf := make([]*models.Post, 0, batchSize) - err = p.DO.FindInBatches(&buf, batchSize, func(tx gen.Dao, batch int) error { - defer func() { results = append(results, buf...) }() - return fc(tx, batch) - }) - return results, err -} - -func (p postDo) FindInBatches(result *[]*models.Post, batchSize int, fc func(tx gen.Dao, batch int) error) error { - return p.DO.FindInBatches(result, batchSize, fc) -} - -func (p postDo) Attrs(attrs ...field.AssignExpr) IPostDo { - return p.withDO(p.DO.Attrs(attrs...)) -} - -func (p postDo) Assign(attrs ...field.AssignExpr) IPostDo { - return p.withDO(p.DO.Assign(attrs...)) -} - -func (p postDo) Joins(fields ...field.RelationField) IPostDo { - for _, _f := range fields { - p = *p.withDO(p.DO.Joins(_f)) - } - return &p -} - -func (p postDo) Preload(fields ...field.RelationField) IPostDo { - for _, _f := range fields { - p = *p.withDO(p.DO.Preload(_f)) - } - return &p -} - -func (p postDo) FirstOrInit() (*models.Post, error) { - if result, err := p.DO.FirstOrInit(); err != nil { - return nil, err - } else { - return result.(*models.Post), nil - } -} - -func (p postDo) FirstOrCreate() (*models.Post, error) { - if result, err := p.DO.FirstOrCreate(); err != nil { - return nil, err - } else { - return result.(*models.Post), nil - } -} - -func (p postDo) FindByPage(offset int, limit int) (result []*models.Post, count int64, err error) { - result, err = p.Offset(offset).Limit(limit).Find() - if err != nil { - return - } - - if size := len(result); 0 < limit && 0 < size && size < limit { - count = int64(size + offset) - return - } - - count, err = p.Offset(-1).Limit(-1).Count() - return -} - -func (p postDo) ScanByPage(result interface{}, offset int, limit int) (count int64, err error) { - count, err = p.Count() - if err != nil { - return - } - - err = p.Offset(offset).Limit(limit).Scan(result) - return -} - -func (p postDo) Scan(result interface{}) (err error) { - return p.DO.Scan(result) -} - -func (p postDo) Delete(models ...*models.Post) (result gen.ResultInfo, err error) { - return p.DO.Delete(models) -} - -func (p *postDo) withDO(do gen.Dao) *postDo { - p.DO = *do.(*gen.DO) - return p -} diff --git a/internal/dal/posts.gen_test.go b/internal/dal/posts.gen_test.go deleted file mode 100644 index ed31c2e..0000000 --- a/internal/dal/posts.gen_test.go +++ /dev/null @@ -1,145 +0,0 @@ -// Code generated by gorm.io/gen. DO NOT EDIT. -// Code generated by gorm.io/gen. DO NOT EDIT. -// Code generated by gorm.io/gen. DO NOT EDIT. - -package dal - -import ( - "app/internal/models" - "context" - "fmt" - "testing" - - "gorm.io/gen" - "gorm.io/gen/field" - "gorm.io/gorm/clause" -) - -func init() { - InitializeDB() - err := _gen_test_db.AutoMigrate(&models.Post{}) - if err != nil { - fmt.Printf("Error: AutoMigrate(&models.Post{}) fail: %s", err) - } -} - -func Test_postQuery(t *testing.T) { - post := newPost(_gen_test_db) - post = *post.As(post.TableName()) - _do := post.WithContext(context.Background()).Debug() - - primaryKey := field.NewString(post.TableName(), clause.PrimaryKey) - _, err := _do.Unscoped().Where(primaryKey.IsNotNull()).Delete() - if err != nil { - t.Error("clean table fail:", err) - return - } - - _, ok := post.GetFieldByName("") - if ok { - t.Error("GetFieldByName(\"\") from post success") - } - - err = _do.Create(&models.Post{}) - if err != nil { - t.Error("create item in table fail:", err) - } - - err = _do.Save(&models.Post{}) - if err != nil { - t.Error("create item in table fail:", err) - } - - err = _do.CreateInBatches([]*models.Post{{}, {}}, 10) - if err != nil { - t.Error("create item in table fail:", err) - } - - _, err = _do.Select(post.ALL).Take() - if err != nil { - t.Error("Take() on table fail:", err) - } - - _, err = _do.First() - if err != nil { - t.Error("First() on table fail:", err) - } - - _, err = _do.Last() - if err != nil { - t.Error("First() on table fail:", err) - } - - _, err = _do.Where(primaryKey.IsNotNull()).FindInBatch(10, func(tx gen.Dao, batch int) error { return nil }) - if err != nil { - t.Error("FindInBatch() on table fail:", err) - } - - err = _do.Where(primaryKey.IsNotNull()).FindInBatches(&[]*models.Post{}, 10, func(tx gen.Dao, batch int) error { return nil }) - if err != nil { - t.Error("FindInBatches() on table fail:", err) - } - - _, err = _do.Select(post.ALL).Where(primaryKey.IsNotNull()).Order(primaryKey.Desc()).Find() - if err != nil { - t.Error("Find() on table fail:", err) - } - - _, err = _do.Distinct(primaryKey).Take() - if err != nil { - t.Error("select Distinct() on table fail:", err) - } - - _, err = _do.Select(post.ALL).Omit(primaryKey).Take() - if err != nil { - t.Error("Omit() on table fail:", err) - } - - _, err = _do.Group(primaryKey).Find() - if err != nil { - t.Error("Group() on table fail:", err) - } - - _, err = _do.Scopes(func(dao gen.Dao) gen.Dao { return dao.Where(primaryKey.IsNotNull()) }).Find() - if err != nil { - t.Error("Scopes() on table fail:", err) - } - - _, _, err = _do.FindByPage(0, 1) - if err != nil { - t.Error("FindByPage() on table fail:", err) - } - - _, err = _do.ScanByPage(&models.Post{}, 0, 1) - if err != nil { - t.Error("ScanByPage() on table fail:", err) - } - - _, err = _do.Attrs(primaryKey).Assign(primaryKey).FirstOrInit() - if err != nil { - t.Error("FirstOrInit() on table fail:", err) - } - - _, err = _do.Attrs(primaryKey).Assign(primaryKey).FirstOrCreate() - if err != nil { - t.Error("FirstOrCreate() on table fail:", err) - } - - var _a _another - var _aPK = field.NewString(_a.TableName(), "id") - - err = _do.Join(&_a, primaryKey.EqCol(_aPK)).Scan(map[string]interface{}{}) - if err != nil { - t.Error("Join() on table fail:", err) - } - - err = _do.LeftJoin(&_a, primaryKey.EqCol(_aPK)).Scan(map[string]interface{}{}) - if err != nil { - t.Error("LeftJoin() on table fail:", err) - } - - _, err = _do.Not().Or().Clauses().Take() - if err != nil { - t.Error("Not/Or/Clauses on table fail:", err) - } -} diff --git a/internal/dal/prep_tasks.gen.go b/internal/dal/prep_tasks.gen.go new file mode 100644 index 0000000..48620c9 --- /dev/null +++ b/internal/dal/prep_tasks.gen.go @@ -0,0 +1,935 @@ +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. + +package dal + +import ( + "app/internal/models" + "context" + + "gorm.io/gorm" + "gorm.io/gorm/clause" + "gorm.io/gorm/schema" + + "gorm.io/gen" + "gorm.io/gen/field" + + "gorm.io/plugin/dbresolver" +) + +func newPrepTask(db *gorm.DB, opts ...gen.DOOption) prepTask { + _prepTask := prepTask{} + + _prepTask.prepTaskDo.UseDB(db, opts...) + _prepTask.prepTaskDo.UseModel(&models.PrepTask{}) + + tableName := _prepTask.prepTaskDo.TableName() + _prepTask.ALL = field.NewAsterisk(tableName) + _prepTask.Id = field.NewUint(tableName, "id") + _prepTask.Status = field.NewString(tableName, "status") + _prepTask.Description = field.NewString(tableName, "description") + _prepTask.TaskId = field.NewUint(tableName, "task_id") + _prepTask.WorkAreaId = field.NewUint(tableName, "work_area_id") + _prepTask.CreatedAt = field.NewInt64(tableName, "created_at") + _prepTask.Deadline = field.NewInt64(tableName, "deadline") + _prepTask.Task = prepTaskBelongsToTask{ + db: db.Session(&gorm.Session{}), + + RelationField: field.NewRelation("Task", "models.Task"), + ProductType: struct { + field.RelationField + }{ + RelationField: field.NewRelation("Task.ProductType", "models.ProductType"), + }, + Order: struct { + field.RelationField + ProductType struct { + field.RelationField + } + Customer struct { + field.RelationField + Orders struct { + field.RelationField + } + } + Tasks struct { + field.RelationField + } + }{ + RelationField: field.NewRelation("Task.Order", "models.Order"), + ProductType: struct { + field.RelationField + }{ + RelationField: field.NewRelation("Task.Order.ProductType", "models.ProductType"), + }, + Customer: struct { + field.RelationField + Orders struct { + field.RelationField + } + }{ + RelationField: field.NewRelation("Task.Order.Customer", "models.Customer"), + Orders: struct { + field.RelationField + }{ + RelationField: field.NewRelation("Task.Order.Customer.Orders", "models.Order"), + }, + }, + Tasks: struct { + field.RelationField + }{ + RelationField: field.NewRelation("Task.Order.Tasks", "models.Task"), + }, + }, + PrepTasks: struct { + field.RelationField + Task struct { + field.RelationField + } + WorkArea struct { + field.RelationField + Workshop struct { + field.RelationField + WorkAreas struct { + field.RelationField + } + Workers struct { + field.RelationField + Workshop struct { + field.RelationField + } + TeamTasks struct { + field.RelationField + TeamType struct { + field.RelationField + } + TeamLeader struct { + field.RelationField + } + WorkArea struct { + field.RelationField + } + TeamMembers struct { + field.RelationField + } + } + } + Tasks struct { + field.RelationField + } + } + PrepTasks struct { + field.RelationField + } + Shifts struct { + field.RelationField + ProductType struct { + field.RelationField + } + WorkArea struct { + field.RelationField + } + } + TeamTasks struct { + field.RelationField + } + } + }{ + RelationField: field.NewRelation("Task.PrepTasks", "models.PrepTask"), + Task: struct { + field.RelationField + }{ + RelationField: field.NewRelation("Task.PrepTasks.Task", "models.Task"), + }, + WorkArea: struct { + field.RelationField + Workshop struct { + field.RelationField + WorkAreas struct { + field.RelationField + } + Workers struct { + field.RelationField + Workshop struct { + field.RelationField + } + TeamTasks struct { + field.RelationField + TeamType struct { + field.RelationField + } + TeamLeader struct { + field.RelationField + } + WorkArea struct { + field.RelationField + } + TeamMembers struct { + field.RelationField + } + } + } + Tasks struct { + field.RelationField + } + } + PrepTasks struct { + field.RelationField + } + Shifts struct { + field.RelationField + ProductType struct { + field.RelationField + } + WorkArea struct { + field.RelationField + } + } + TeamTasks struct { + field.RelationField + } + }{ + RelationField: field.NewRelation("Task.PrepTasks.WorkArea", "models.WorkArea"), + Workshop: struct { + field.RelationField + WorkAreas struct { + field.RelationField + } + Workers struct { + field.RelationField + Workshop struct { + field.RelationField + } + TeamTasks struct { + field.RelationField + TeamType struct { + field.RelationField + } + TeamLeader struct { + field.RelationField + } + WorkArea struct { + field.RelationField + } + TeamMembers struct { + field.RelationField + } + } + } + Tasks struct { + field.RelationField + } + }{ + RelationField: field.NewRelation("Task.PrepTasks.WorkArea.Workshop", "models.Workshop"), + WorkAreas: struct { + field.RelationField + }{ + RelationField: field.NewRelation("Task.PrepTasks.WorkArea.Workshop.WorkAreas", "models.WorkArea"), + }, + Workers: struct { + field.RelationField + Workshop struct { + field.RelationField + } + TeamTasks struct { + field.RelationField + TeamType struct { + field.RelationField + } + TeamLeader struct { + field.RelationField + } + WorkArea struct { + field.RelationField + } + TeamMembers struct { + field.RelationField + } + } + }{ + RelationField: field.NewRelation("Task.PrepTasks.WorkArea.Workshop.Workers", "models.Worker"), + Workshop: struct { + field.RelationField + }{ + RelationField: field.NewRelation("Task.PrepTasks.WorkArea.Workshop.Workers.Workshop", "models.Workshop"), + }, + TeamTasks: struct { + field.RelationField + TeamType struct { + field.RelationField + } + TeamLeader struct { + field.RelationField + } + WorkArea struct { + field.RelationField + } + TeamMembers struct { + field.RelationField + } + }{ + RelationField: field.NewRelation("Task.PrepTasks.WorkArea.Workshop.Workers.TeamTasks", "models.TeamTask"), + TeamType: struct { + field.RelationField + }{ + RelationField: field.NewRelation("Task.PrepTasks.WorkArea.Workshop.Workers.TeamTasks.TeamType", "models.TeamType"), + }, + TeamLeader: struct { + field.RelationField + }{ + RelationField: field.NewRelation("Task.PrepTasks.WorkArea.Workshop.Workers.TeamTasks.TeamLeader", "models.Worker"), + }, + WorkArea: struct { + field.RelationField + }{ + RelationField: field.NewRelation("Task.PrepTasks.WorkArea.Workshop.Workers.TeamTasks.WorkArea", "models.WorkArea"), + }, + TeamMembers: struct { + field.RelationField + }{ + RelationField: field.NewRelation("Task.PrepTasks.WorkArea.Workshop.Workers.TeamTasks.TeamMembers", "models.Worker"), + }, + }, + }, + Tasks: struct { + field.RelationField + }{ + RelationField: field.NewRelation("Task.PrepTasks.WorkArea.Workshop.Tasks", "models.Task"), + }, + }, + PrepTasks: struct { + field.RelationField + }{ + RelationField: field.NewRelation("Task.PrepTasks.WorkArea.PrepTasks", "models.PrepTask"), + }, + Shifts: struct { + field.RelationField + ProductType struct { + field.RelationField + } + WorkArea struct { + field.RelationField + } + }{ + RelationField: field.NewRelation("Task.PrepTasks.WorkArea.Shifts", "models.Shift"), + ProductType: struct { + field.RelationField + }{ + RelationField: field.NewRelation("Task.PrepTasks.WorkArea.Shifts.ProductType", "models.ProductType"), + }, + WorkArea: struct { + field.RelationField + }{ + RelationField: field.NewRelation("Task.PrepTasks.WorkArea.Shifts.WorkArea", "models.WorkArea"), + }, + }, + TeamTasks: struct { + field.RelationField + }{ + RelationField: field.NewRelation("Task.PrepTasks.WorkArea.TeamTasks", "models.TeamTask"), + }, + }, + }, + Workshops: struct { + field.RelationField + }{ + RelationField: field.NewRelation("Task.Workshops", "models.Workshop"), + }, + } + + _prepTask.WorkArea = prepTaskBelongsToWorkArea{ + db: db.Session(&gorm.Session{}), + + RelationField: field.NewRelation("WorkArea", "models.WorkArea"), + } + + _prepTask.fillFieldMap() + + return _prepTask +} + +type prepTask struct { + prepTaskDo + + ALL field.Asterisk + Id field.Uint + Status field.String + Description field.String + TaskId field.Uint + WorkAreaId field.Uint + CreatedAt field.Int64 + Deadline field.Int64 + Task prepTaskBelongsToTask + + WorkArea prepTaskBelongsToWorkArea + + fieldMap map[string]field.Expr +} + +func (p prepTask) Table(newTableName string) *prepTask { + p.prepTaskDo.UseTable(newTableName) + return p.updateTableName(newTableName) +} + +func (p prepTask) As(alias string) *prepTask { + p.prepTaskDo.DO = *(p.prepTaskDo.As(alias).(*gen.DO)) + return p.updateTableName(alias) +} + +func (p *prepTask) updateTableName(table string) *prepTask { + p.ALL = field.NewAsterisk(table) + p.Id = field.NewUint(table, "id") + p.Status = field.NewString(table, "status") + p.Description = field.NewString(table, "description") + p.TaskId = field.NewUint(table, "task_id") + p.WorkAreaId = field.NewUint(table, "work_area_id") + p.CreatedAt = field.NewInt64(table, "created_at") + p.Deadline = field.NewInt64(table, "deadline") + + p.fillFieldMap() + + return p +} + +func (p *prepTask) GetFieldByName(fieldName string) (field.OrderExpr, bool) { + _f, ok := p.fieldMap[fieldName] + if !ok || _f == nil { + return nil, false + } + _oe, ok := _f.(field.OrderExpr) + return _oe, ok +} + +func (p *prepTask) fillFieldMap() { + p.fieldMap = make(map[string]field.Expr, 9) + p.fieldMap["id"] = p.Id + p.fieldMap["status"] = p.Status + p.fieldMap["description"] = p.Description + p.fieldMap["task_id"] = p.TaskId + p.fieldMap["work_area_id"] = p.WorkAreaId + p.fieldMap["created_at"] = p.CreatedAt + p.fieldMap["deadline"] = p.Deadline + +} + +func (p prepTask) clone(db *gorm.DB) prepTask { + p.prepTaskDo.ReplaceConnPool(db.Statement.ConnPool) + return p +} + +func (p prepTask) replaceDB(db *gorm.DB) prepTask { + p.prepTaskDo.ReplaceDB(db) + return p +} + +type prepTaskBelongsToTask struct { + db *gorm.DB + + field.RelationField + + ProductType struct { + field.RelationField + } + Order struct { + field.RelationField + ProductType struct { + field.RelationField + } + Customer struct { + field.RelationField + Orders struct { + field.RelationField + } + } + Tasks struct { + field.RelationField + } + } + PrepTasks struct { + field.RelationField + Task struct { + field.RelationField + } + WorkArea struct { + field.RelationField + Workshop struct { + field.RelationField + WorkAreas struct { + field.RelationField + } + Workers struct { + field.RelationField + Workshop struct { + field.RelationField + } + TeamTasks struct { + field.RelationField + TeamType struct { + field.RelationField + } + TeamLeader struct { + field.RelationField + } + WorkArea struct { + field.RelationField + } + TeamMembers struct { + field.RelationField + } + } + } + Tasks struct { + field.RelationField + } + } + PrepTasks struct { + field.RelationField + } + Shifts struct { + field.RelationField + ProductType struct { + field.RelationField + } + WorkArea struct { + field.RelationField + } + } + TeamTasks struct { + field.RelationField + } + } + } + Workshops struct { + field.RelationField + } +} + +func (a prepTaskBelongsToTask) Where(conds ...field.Expr) *prepTaskBelongsToTask { + if len(conds) == 0 { + return &a + } + + exprs := make([]clause.Expression, 0, len(conds)) + for _, cond := range conds { + exprs = append(exprs, cond.BeCond().(clause.Expression)) + } + a.db = a.db.Clauses(clause.Where{Exprs: exprs}) + return &a +} + +func (a prepTaskBelongsToTask) WithContext(ctx context.Context) *prepTaskBelongsToTask { + a.db = a.db.WithContext(ctx) + return &a +} + +func (a prepTaskBelongsToTask) Session(session *gorm.Session) *prepTaskBelongsToTask { + a.db = a.db.Session(session) + return &a +} + +func (a prepTaskBelongsToTask) Model(m *models.PrepTask) *prepTaskBelongsToTaskTx { + return &prepTaskBelongsToTaskTx{a.db.Model(m).Association(a.Name())} +} + +type prepTaskBelongsToTaskTx struct{ tx *gorm.Association } + +func (a prepTaskBelongsToTaskTx) Find() (result *models.Task, err error) { + return result, a.tx.Find(&result) +} + +func (a prepTaskBelongsToTaskTx) Append(values ...*models.Task) (err error) { + targetValues := make([]interface{}, len(values)) + for i, v := range values { + targetValues[i] = v + } + return a.tx.Append(targetValues...) +} + +func (a prepTaskBelongsToTaskTx) Replace(values ...*models.Task) (err error) { + targetValues := make([]interface{}, len(values)) + for i, v := range values { + targetValues[i] = v + } + return a.tx.Replace(targetValues...) +} + +func (a prepTaskBelongsToTaskTx) Delete(values ...*models.Task) (err error) { + targetValues := make([]interface{}, len(values)) + for i, v := range values { + targetValues[i] = v + } + return a.tx.Delete(targetValues...) +} + +func (a prepTaskBelongsToTaskTx) Clear() error { + return a.tx.Clear() +} + +func (a prepTaskBelongsToTaskTx) Count() int64 { + return a.tx.Count() +} + +type prepTaskBelongsToWorkArea struct { + db *gorm.DB + + field.RelationField +} + +func (a prepTaskBelongsToWorkArea) Where(conds ...field.Expr) *prepTaskBelongsToWorkArea { + if len(conds) == 0 { + return &a + } + + exprs := make([]clause.Expression, 0, len(conds)) + for _, cond := range conds { + exprs = append(exprs, cond.BeCond().(clause.Expression)) + } + a.db = a.db.Clauses(clause.Where{Exprs: exprs}) + return &a +} + +func (a prepTaskBelongsToWorkArea) WithContext(ctx context.Context) *prepTaskBelongsToWorkArea { + a.db = a.db.WithContext(ctx) + return &a +} + +func (a prepTaskBelongsToWorkArea) Session(session *gorm.Session) *prepTaskBelongsToWorkArea { + a.db = a.db.Session(session) + return &a +} + +func (a prepTaskBelongsToWorkArea) Model(m *models.PrepTask) *prepTaskBelongsToWorkAreaTx { + return &prepTaskBelongsToWorkAreaTx{a.db.Model(m).Association(a.Name())} +} + +type prepTaskBelongsToWorkAreaTx struct{ tx *gorm.Association } + +func (a prepTaskBelongsToWorkAreaTx) Find() (result *models.WorkArea, err error) { + return result, a.tx.Find(&result) +} + +func (a prepTaskBelongsToWorkAreaTx) Append(values ...*models.WorkArea) (err error) { + targetValues := make([]interface{}, len(values)) + for i, v := range values { + targetValues[i] = v + } + return a.tx.Append(targetValues...) +} + +func (a prepTaskBelongsToWorkAreaTx) Replace(values ...*models.WorkArea) (err error) { + targetValues := make([]interface{}, len(values)) + for i, v := range values { + targetValues[i] = v + } + return a.tx.Replace(targetValues...) +} + +func (a prepTaskBelongsToWorkAreaTx) Delete(values ...*models.WorkArea) (err error) { + targetValues := make([]interface{}, len(values)) + for i, v := range values { + targetValues[i] = v + } + return a.tx.Delete(targetValues...) +} + +func (a prepTaskBelongsToWorkAreaTx) Clear() error { + return a.tx.Clear() +} + +func (a prepTaskBelongsToWorkAreaTx) Count() int64 { + return a.tx.Count() +} + +type prepTaskDo struct{ gen.DO } + +type IPrepTaskDo interface { + gen.SubQuery + Debug() IPrepTaskDo + WithContext(ctx context.Context) IPrepTaskDo + WithResult(fc func(tx gen.Dao)) gen.ResultInfo + ReplaceDB(db *gorm.DB) + ReadDB() IPrepTaskDo + WriteDB() IPrepTaskDo + As(alias string) gen.Dao + Session(config *gorm.Session) IPrepTaskDo + Columns(cols ...field.Expr) gen.Columns + Clauses(conds ...clause.Expression) IPrepTaskDo + Not(conds ...gen.Condition) IPrepTaskDo + Or(conds ...gen.Condition) IPrepTaskDo + Select(conds ...field.Expr) IPrepTaskDo + Where(conds ...gen.Condition) IPrepTaskDo + Order(conds ...field.Expr) IPrepTaskDo + Distinct(cols ...field.Expr) IPrepTaskDo + Omit(cols ...field.Expr) IPrepTaskDo + Join(table schema.Tabler, on ...field.Expr) IPrepTaskDo + LeftJoin(table schema.Tabler, on ...field.Expr) IPrepTaskDo + RightJoin(table schema.Tabler, on ...field.Expr) IPrepTaskDo + Group(cols ...field.Expr) IPrepTaskDo + Having(conds ...gen.Condition) IPrepTaskDo + Limit(limit int) IPrepTaskDo + Offset(offset int) IPrepTaskDo + Count() (count int64, err error) + Scopes(funcs ...func(gen.Dao) gen.Dao) IPrepTaskDo + Unscoped() IPrepTaskDo + Create(values ...*models.PrepTask) error + CreateInBatches(values []*models.PrepTask, batchSize int) error + Save(values ...*models.PrepTask) error + First() (*models.PrepTask, error) + Take() (*models.PrepTask, error) + Last() (*models.PrepTask, error) + Find() ([]*models.PrepTask, error) + FindInBatch(batchSize int, fc func(tx gen.Dao, batch int) error) (results []*models.PrepTask, err error) + FindInBatches(result *[]*models.PrepTask, batchSize int, fc func(tx gen.Dao, batch int) error) error + Pluck(column field.Expr, dest interface{}) error + Delete(...*models.PrepTask) (info gen.ResultInfo, err error) + Update(column field.Expr, value interface{}) (info gen.ResultInfo, err error) + UpdateSimple(columns ...field.AssignExpr) (info gen.ResultInfo, err error) + Updates(value interface{}) (info gen.ResultInfo, err error) + UpdateColumn(column field.Expr, value interface{}) (info gen.ResultInfo, err error) + UpdateColumnSimple(columns ...field.AssignExpr) (info gen.ResultInfo, err error) + UpdateColumns(value interface{}) (info gen.ResultInfo, err error) + UpdateFrom(q gen.SubQuery) gen.Dao + Attrs(attrs ...field.AssignExpr) IPrepTaskDo + Assign(attrs ...field.AssignExpr) IPrepTaskDo + Joins(fields ...field.RelationField) IPrepTaskDo + Preload(fields ...field.RelationField) IPrepTaskDo + FirstOrInit() (*models.PrepTask, error) + FirstOrCreate() (*models.PrepTask, error) + FindByPage(offset int, limit int) (result []*models.PrepTask, count int64, err error) + ScanByPage(result interface{}, offset int, limit int) (count int64, err error) + Scan(result interface{}) (err error) + Returning(value interface{}, columns ...string) IPrepTaskDo + UnderlyingDB() *gorm.DB + schema.Tabler +} + +func (p prepTaskDo) Debug() IPrepTaskDo { + return p.withDO(p.DO.Debug()) +} + +func (p prepTaskDo) WithContext(ctx context.Context) IPrepTaskDo { + return p.withDO(p.DO.WithContext(ctx)) +} + +func (p prepTaskDo) ReadDB() IPrepTaskDo { + return p.Clauses(dbresolver.Read) +} + +func (p prepTaskDo) WriteDB() IPrepTaskDo { + return p.Clauses(dbresolver.Write) +} + +func (p prepTaskDo) Session(config *gorm.Session) IPrepTaskDo { + return p.withDO(p.DO.Session(config)) +} + +func (p prepTaskDo) Clauses(conds ...clause.Expression) IPrepTaskDo { + return p.withDO(p.DO.Clauses(conds...)) +} + +func (p prepTaskDo) Returning(value interface{}, columns ...string) IPrepTaskDo { + return p.withDO(p.DO.Returning(value, columns...)) +} + +func (p prepTaskDo) Not(conds ...gen.Condition) IPrepTaskDo { + return p.withDO(p.DO.Not(conds...)) +} + +func (p prepTaskDo) Or(conds ...gen.Condition) IPrepTaskDo { + return p.withDO(p.DO.Or(conds...)) +} + +func (p prepTaskDo) Select(conds ...field.Expr) IPrepTaskDo { + return p.withDO(p.DO.Select(conds...)) +} + +func (p prepTaskDo) Where(conds ...gen.Condition) IPrepTaskDo { + return p.withDO(p.DO.Where(conds...)) +} + +func (p prepTaskDo) Order(conds ...field.Expr) IPrepTaskDo { + return p.withDO(p.DO.Order(conds...)) +} + +func (p prepTaskDo) Distinct(cols ...field.Expr) IPrepTaskDo { + return p.withDO(p.DO.Distinct(cols...)) +} + +func (p prepTaskDo) Omit(cols ...field.Expr) IPrepTaskDo { + return p.withDO(p.DO.Omit(cols...)) +} + +func (p prepTaskDo) Join(table schema.Tabler, on ...field.Expr) IPrepTaskDo { + return p.withDO(p.DO.Join(table, on...)) +} + +func (p prepTaskDo) LeftJoin(table schema.Tabler, on ...field.Expr) IPrepTaskDo { + return p.withDO(p.DO.LeftJoin(table, on...)) +} + +func (p prepTaskDo) RightJoin(table schema.Tabler, on ...field.Expr) IPrepTaskDo { + return p.withDO(p.DO.RightJoin(table, on...)) +} + +func (p prepTaskDo) Group(cols ...field.Expr) IPrepTaskDo { + return p.withDO(p.DO.Group(cols...)) +} + +func (p prepTaskDo) Having(conds ...gen.Condition) IPrepTaskDo { + return p.withDO(p.DO.Having(conds...)) +} + +func (p prepTaskDo) Limit(limit int) IPrepTaskDo { + return p.withDO(p.DO.Limit(limit)) +} + +func (p prepTaskDo) Offset(offset int) IPrepTaskDo { + return p.withDO(p.DO.Offset(offset)) +} + +func (p prepTaskDo) Scopes(funcs ...func(gen.Dao) gen.Dao) IPrepTaskDo { + return p.withDO(p.DO.Scopes(funcs...)) +} + +func (p prepTaskDo) Unscoped() IPrepTaskDo { + return p.withDO(p.DO.Unscoped()) +} + +func (p prepTaskDo) Create(values ...*models.PrepTask) error { + if len(values) == 0 { + return nil + } + return p.DO.Create(values) +} + +func (p prepTaskDo) CreateInBatches(values []*models.PrepTask, batchSize int) error { + return p.DO.CreateInBatches(values, batchSize) +} + +// Save : !!! underlying implementation is different with GORM +// The method is equivalent to executing the statement: db.Clauses(clause.OnConflict{UpdateAll: true}).Create(values) +func (p prepTaskDo) Save(values ...*models.PrepTask) error { + if len(values) == 0 { + return nil + } + return p.DO.Save(values) +} + +func (p prepTaskDo) First() (*models.PrepTask, error) { + if result, err := p.DO.First(); err != nil { + return nil, err + } else { + return result.(*models.PrepTask), nil + } +} + +func (p prepTaskDo) Take() (*models.PrepTask, error) { + if result, err := p.DO.Take(); err != nil { + return nil, err + } else { + return result.(*models.PrepTask), nil + } +} + +func (p prepTaskDo) Last() (*models.PrepTask, error) { + if result, err := p.DO.Last(); err != nil { + return nil, err + } else { + return result.(*models.PrepTask), nil + } +} + +func (p prepTaskDo) Find() ([]*models.PrepTask, error) { + result, err := p.DO.Find() + return result.([]*models.PrepTask), err +} + +func (p prepTaskDo) FindInBatch(batchSize int, fc func(tx gen.Dao, batch int) error) (results []*models.PrepTask, err error) { + buf := make([]*models.PrepTask, 0, batchSize) + err = p.DO.FindInBatches(&buf, batchSize, func(tx gen.Dao, batch int) error { + defer func() { results = append(results, buf...) }() + return fc(tx, batch) + }) + return results, err +} + +func (p prepTaskDo) FindInBatches(result *[]*models.PrepTask, batchSize int, fc func(tx gen.Dao, batch int) error) error { + return p.DO.FindInBatches(result, batchSize, fc) +} + +func (p prepTaskDo) Attrs(attrs ...field.AssignExpr) IPrepTaskDo { + return p.withDO(p.DO.Attrs(attrs...)) +} + +func (p prepTaskDo) Assign(attrs ...field.AssignExpr) IPrepTaskDo { + return p.withDO(p.DO.Assign(attrs...)) +} + +func (p prepTaskDo) Joins(fields ...field.RelationField) IPrepTaskDo { + for _, _f := range fields { + p = *p.withDO(p.DO.Joins(_f)) + } + return &p +} + +func (p prepTaskDo) Preload(fields ...field.RelationField) IPrepTaskDo { + for _, _f := range fields { + p = *p.withDO(p.DO.Preload(_f)) + } + return &p +} + +func (p prepTaskDo) FirstOrInit() (*models.PrepTask, error) { + if result, err := p.DO.FirstOrInit(); err != nil { + return nil, err + } else { + return result.(*models.PrepTask), nil + } +} + +func (p prepTaskDo) FirstOrCreate() (*models.PrepTask, error) { + if result, err := p.DO.FirstOrCreate(); err != nil { + return nil, err + } else { + return result.(*models.PrepTask), nil + } +} + +func (p prepTaskDo) FindByPage(offset int, limit int) (result []*models.PrepTask, count int64, err error) { + result, err = p.Offset(offset).Limit(limit).Find() + if err != nil { + return + } + + if size := len(result); 0 < limit && 0 < size && size < limit { + count = int64(size + offset) + return + } + + count, err = p.Offset(-1).Limit(-1).Count() + return +} + +func (p prepTaskDo) ScanByPage(result interface{}, offset int, limit int) (count int64, err error) { + count, err = p.Count() + if err != nil { + return + } + + err = p.Offset(offset).Limit(limit).Scan(result) + return +} + +func (p prepTaskDo) Scan(result interface{}) (err error) { + return p.DO.Scan(result) +} + +func (p prepTaskDo) Delete(models ...*models.PrepTask) (result gen.ResultInfo, err error) { + return p.DO.Delete(models) +} + +func (p *prepTaskDo) withDO(do gen.Dao) *prepTaskDo { + p.DO = *do.(*gen.DO) + return p +} diff --git a/internal/dal/prep_tasks.gen_test.go b/internal/dal/prep_tasks.gen_test.go new file mode 100644 index 0000000..bf3cb4b --- /dev/null +++ b/internal/dal/prep_tasks.gen_test.go @@ -0,0 +1,145 @@ +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. + +package dal + +import ( + "app/internal/models" + "context" + "fmt" + "testing" + + "gorm.io/gen" + "gorm.io/gen/field" + "gorm.io/gorm/clause" +) + +func init() { + InitializeDB() + err := _gen_test_db.AutoMigrate(&models.PrepTask{}) + if err != nil { + fmt.Printf("Error: AutoMigrate(&models.PrepTask{}) fail: %s", err) + } +} + +func Test_prepTaskQuery(t *testing.T) { + prepTask := newPrepTask(_gen_test_db) + prepTask = *prepTask.As(prepTask.TableName()) + _do := prepTask.WithContext(context.Background()).Debug() + + primaryKey := field.NewString(prepTask.TableName(), clause.PrimaryKey) + _, err := _do.Unscoped().Where(primaryKey.IsNotNull()).Delete() + if err != nil { + t.Error("clean table fail:", err) + return + } + + _, ok := prepTask.GetFieldByName("") + if ok { + t.Error("GetFieldByName(\"\") from prepTask success") + } + + err = _do.Create(&models.PrepTask{}) + if err != nil { + t.Error("create item in table fail:", err) + } + + err = _do.Save(&models.PrepTask{}) + if err != nil { + t.Error("create item in table fail:", err) + } + + err = _do.CreateInBatches([]*models.PrepTask{{}, {}}, 10) + if err != nil { + t.Error("create item in table fail:", err) + } + + _, err = _do.Select(prepTask.ALL).Take() + if err != nil { + t.Error("Take() on table fail:", err) + } + + _, err = _do.First() + if err != nil { + t.Error("First() on table fail:", err) + } + + _, err = _do.Last() + if err != nil { + t.Error("First() on table fail:", err) + } + + _, err = _do.Where(primaryKey.IsNotNull()).FindInBatch(10, func(tx gen.Dao, batch int) error { return nil }) + if err != nil { + t.Error("FindInBatch() on table fail:", err) + } + + err = _do.Where(primaryKey.IsNotNull()).FindInBatches(&[]*models.PrepTask{}, 10, func(tx gen.Dao, batch int) error { return nil }) + if err != nil { + t.Error("FindInBatches() on table fail:", err) + } + + _, err = _do.Select(prepTask.ALL).Where(primaryKey.IsNotNull()).Order(primaryKey.Desc()).Find() + if err != nil { + t.Error("Find() on table fail:", err) + } + + _, err = _do.Distinct(primaryKey).Take() + if err != nil { + t.Error("select Distinct() on table fail:", err) + } + + _, err = _do.Select(prepTask.ALL).Omit(primaryKey).Take() + if err != nil { + t.Error("Omit() on table fail:", err) + } + + _, err = _do.Group(primaryKey).Find() + if err != nil { + t.Error("Group() on table fail:", err) + } + + _, err = _do.Scopes(func(dao gen.Dao) gen.Dao { return dao.Where(primaryKey.IsNotNull()) }).Find() + if err != nil { + t.Error("Scopes() on table fail:", err) + } + + _, _, err = _do.FindByPage(0, 1) + if err != nil { + t.Error("FindByPage() on table fail:", err) + } + + _, err = _do.ScanByPage(&models.PrepTask{}, 0, 1) + if err != nil { + t.Error("ScanByPage() on table fail:", err) + } + + _, err = _do.Attrs(primaryKey).Assign(primaryKey).FirstOrInit() + if err != nil { + t.Error("FirstOrInit() on table fail:", err) + } + + _, err = _do.Attrs(primaryKey).Assign(primaryKey).FirstOrCreate() + if err != nil { + t.Error("FirstOrCreate() on table fail:", err) + } + + var _a _another + var _aPK = field.NewString(_a.TableName(), "id") + + err = _do.Join(&_a, primaryKey.EqCol(_aPK)).Scan(map[string]interface{}{}) + if err != nil { + t.Error("Join() on table fail:", err) + } + + err = _do.LeftJoin(&_a, primaryKey.EqCol(_aPK)).Scan(map[string]interface{}{}) + if err != nil { + t.Error("LeftJoin() on table fail:", err) + } + + _, err = _do.Not().Or().Clauses().Take() + if err != nil { + t.Error("Not/Or/Clauses on table fail:", err) + } +} diff --git a/internal/dal/product_types.gen.go b/internal/dal/product_types.gen.go new file mode 100644 index 0000000..1ed4b28 --- /dev/null +++ b/internal/dal/product_types.gen.go @@ -0,0 +1,383 @@ +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. + +package dal + +import ( + "app/internal/models" + "context" + + "gorm.io/gorm" + "gorm.io/gorm/clause" + "gorm.io/gorm/schema" + + "gorm.io/gen" + "gorm.io/gen/field" + + "gorm.io/plugin/dbresolver" +) + +func newProductType(db *gorm.DB, opts ...gen.DOOption) productType { + _productType := productType{} + + _productType.productTypeDo.UseDB(db, opts...) + _productType.productTypeDo.UseModel(&models.ProductType{}) + + tableName := _productType.productTypeDo.TableName() + _productType.ALL = field.NewAsterisk(tableName) + _productType.Id = field.NewUint(tableName, "id") + _productType.Name = field.NewString(tableName, "name") + + _productType.fillFieldMap() + + return _productType +} + +type productType struct { + productTypeDo + + ALL field.Asterisk + Id field.Uint + Name field.String + + fieldMap map[string]field.Expr +} + +func (p productType) Table(newTableName string) *productType { + p.productTypeDo.UseTable(newTableName) + return p.updateTableName(newTableName) +} + +func (p productType) As(alias string) *productType { + p.productTypeDo.DO = *(p.productTypeDo.As(alias).(*gen.DO)) + return p.updateTableName(alias) +} + +func (p *productType) updateTableName(table string) *productType { + p.ALL = field.NewAsterisk(table) + p.Id = field.NewUint(table, "id") + p.Name = field.NewString(table, "name") + + p.fillFieldMap() + + return p +} + +func (p *productType) GetFieldByName(fieldName string) (field.OrderExpr, bool) { + _f, ok := p.fieldMap[fieldName] + if !ok || _f == nil { + return nil, false + } + _oe, ok := _f.(field.OrderExpr) + return _oe, ok +} + +func (p *productType) fillFieldMap() { + p.fieldMap = make(map[string]field.Expr, 2) + p.fieldMap["id"] = p.Id + p.fieldMap["name"] = p.Name +} + +func (p productType) clone(db *gorm.DB) productType { + p.productTypeDo.ReplaceConnPool(db.Statement.ConnPool) + return p +} + +func (p productType) replaceDB(db *gorm.DB) productType { + p.productTypeDo.ReplaceDB(db) + return p +} + +type productTypeDo struct{ gen.DO } + +type IProductTypeDo interface { + gen.SubQuery + Debug() IProductTypeDo + WithContext(ctx context.Context) IProductTypeDo + WithResult(fc func(tx gen.Dao)) gen.ResultInfo + ReplaceDB(db *gorm.DB) + ReadDB() IProductTypeDo + WriteDB() IProductTypeDo + As(alias string) gen.Dao + Session(config *gorm.Session) IProductTypeDo + Columns(cols ...field.Expr) gen.Columns + Clauses(conds ...clause.Expression) IProductTypeDo + Not(conds ...gen.Condition) IProductTypeDo + Or(conds ...gen.Condition) IProductTypeDo + Select(conds ...field.Expr) IProductTypeDo + Where(conds ...gen.Condition) IProductTypeDo + Order(conds ...field.Expr) IProductTypeDo + Distinct(cols ...field.Expr) IProductTypeDo + Omit(cols ...field.Expr) IProductTypeDo + Join(table schema.Tabler, on ...field.Expr) IProductTypeDo + LeftJoin(table schema.Tabler, on ...field.Expr) IProductTypeDo + RightJoin(table schema.Tabler, on ...field.Expr) IProductTypeDo + Group(cols ...field.Expr) IProductTypeDo + Having(conds ...gen.Condition) IProductTypeDo + Limit(limit int) IProductTypeDo + Offset(offset int) IProductTypeDo + Count() (count int64, err error) + Scopes(funcs ...func(gen.Dao) gen.Dao) IProductTypeDo + Unscoped() IProductTypeDo + Create(values ...*models.ProductType) error + CreateInBatches(values []*models.ProductType, batchSize int) error + Save(values ...*models.ProductType) error + First() (*models.ProductType, error) + Take() (*models.ProductType, error) + Last() (*models.ProductType, error) + Find() ([]*models.ProductType, error) + FindInBatch(batchSize int, fc func(tx gen.Dao, batch int) error) (results []*models.ProductType, err error) + FindInBatches(result *[]*models.ProductType, batchSize int, fc func(tx gen.Dao, batch int) error) error + Pluck(column field.Expr, dest interface{}) error + Delete(...*models.ProductType) (info gen.ResultInfo, err error) + Update(column field.Expr, value interface{}) (info gen.ResultInfo, err error) + UpdateSimple(columns ...field.AssignExpr) (info gen.ResultInfo, err error) + Updates(value interface{}) (info gen.ResultInfo, err error) + UpdateColumn(column field.Expr, value interface{}) (info gen.ResultInfo, err error) + UpdateColumnSimple(columns ...field.AssignExpr) (info gen.ResultInfo, err error) + UpdateColumns(value interface{}) (info gen.ResultInfo, err error) + UpdateFrom(q gen.SubQuery) gen.Dao + Attrs(attrs ...field.AssignExpr) IProductTypeDo + Assign(attrs ...field.AssignExpr) IProductTypeDo + Joins(fields ...field.RelationField) IProductTypeDo + Preload(fields ...field.RelationField) IProductTypeDo + FirstOrInit() (*models.ProductType, error) + FirstOrCreate() (*models.ProductType, error) + FindByPage(offset int, limit int) (result []*models.ProductType, count int64, err error) + ScanByPage(result interface{}, offset int, limit int) (count int64, err error) + Scan(result interface{}) (err error) + Returning(value interface{}, columns ...string) IProductTypeDo + UnderlyingDB() *gorm.DB + schema.Tabler +} + +func (p productTypeDo) Debug() IProductTypeDo { + return p.withDO(p.DO.Debug()) +} + +func (p productTypeDo) WithContext(ctx context.Context) IProductTypeDo { + return p.withDO(p.DO.WithContext(ctx)) +} + +func (p productTypeDo) ReadDB() IProductTypeDo { + return p.Clauses(dbresolver.Read) +} + +func (p productTypeDo) WriteDB() IProductTypeDo { + return p.Clauses(dbresolver.Write) +} + +func (p productTypeDo) Session(config *gorm.Session) IProductTypeDo { + return p.withDO(p.DO.Session(config)) +} + +func (p productTypeDo) Clauses(conds ...clause.Expression) IProductTypeDo { + return p.withDO(p.DO.Clauses(conds...)) +} + +func (p productTypeDo) Returning(value interface{}, columns ...string) IProductTypeDo { + return p.withDO(p.DO.Returning(value, columns...)) +} + +func (p productTypeDo) Not(conds ...gen.Condition) IProductTypeDo { + return p.withDO(p.DO.Not(conds...)) +} + +func (p productTypeDo) Or(conds ...gen.Condition) IProductTypeDo { + return p.withDO(p.DO.Or(conds...)) +} + +func (p productTypeDo) Select(conds ...field.Expr) IProductTypeDo { + return p.withDO(p.DO.Select(conds...)) +} + +func (p productTypeDo) Where(conds ...gen.Condition) IProductTypeDo { + return p.withDO(p.DO.Where(conds...)) +} + +func (p productTypeDo) Order(conds ...field.Expr) IProductTypeDo { + return p.withDO(p.DO.Order(conds...)) +} + +func (p productTypeDo) Distinct(cols ...field.Expr) IProductTypeDo { + return p.withDO(p.DO.Distinct(cols...)) +} + +func (p productTypeDo) Omit(cols ...field.Expr) IProductTypeDo { + return p.withDO(p.DO.Omit(cols...)) +} + +func (p productTypeDo) Join(table schema.Tabler, on ...field.Expr) IProductTypeDo { + return p.withDO(p.DO.Join(table, on...)) +} + +func (p productTypeDo) LeftJoin(table schema.Tabler, on ...field.Expr) IProductTypeDo { + return p.withDO(p.DO.LeftJoin(table, on...)) +} + +func (p productTypeDo) RightJoin(table schema.Tabler, on ...field.Expr) IProductTypeDo { + return p.withDO(p.DO.RightJoin(table, on...)) +} + +func (p productTypeDo) Group(cols ...field.Expr) IProductTypeDo { + return p.withDO(p.DO.Group(cols...)) +} + +func (p productTypeDo) Having(conds ...gen.Condition) IProductTypeDo { + return p.withDO(p.DO.Having(conds...)) +} + +func (p productTypeDo) Limit(limit int) IProductTypeDo { + return p.withDO(p.DO.Limit(limit)) +} + +func (p productTypeDo) Offset(offset int) IProductTypeDo { + return p.withDO(p.DO.Offset(offset)) +} + +func (p productTypeDo) Scopes(funcs ...func(gen.Dao) gen.Dao) IProductTypeDo { + return p.withDO(p.DO.Scopes(funcs...)) +} + +func (p productTypeDo) Unscoped() IProductTypeDo { + return p.withDO(p.DO.Unscoped()) +} + +func (p productTypeDo) Create(values ...*models.ProductType) error { + if len(values) == 0 { + return nil + } + return p.DO.Create(values) +} + +func (p productTypeDo) CreateInBatches(values []*models.ProductType, batchSize int) error { + return p.DO.CreateInBatches(values, batchSize) +} + +// Save : !!! underlying implementation is different with GORM +// The method is equivalent to executing the statement: db.Clauses(clause.OnConflict{UpdateAll: true}).Create(values) +func (p productTypeDo) Save(values ...*models.ProductType) error { + if len(values) == 0 { + return nil + } + return p.DO.Save(values) +} + +func (p productTypeDo) First() (*models.ProductType, error) { + if result, err := p.DO.First(); err != nil { + return nil, err + } else { + return result.(*models.ProductType), nil + } +} + +func (p productTypeDo) Take() (*models.ProductType, error) { + if result, err := p.DO.Take(); err != nil { + return nil, err + } else { + return result.(*models.ProductType), nil + } +} + +func (p productTypeDo) Last() (*models.ProductType, error) { + if result, err := p.DO.Last(); err != nil { + return nil, err + } else { + return result.(*models.ProductType), nil + } +} + +func (p productTypeDo) Find() ([]*models.ProductType, error) { + result, err := p.DO.Find() + return result.([]*models.ProductType), err +} + +func (p productTypeDo) FindInBatch(batchSize int, fc func(tx gen.Dao, batch int) error) (results []*models.ProductType, err error) { + buf := make([]*models.ProductType, 0, batchSize) + err = p.DO.FindInBatches(&buf, batchSize, func(tx gen.Dao, batch int) error { + defer func() { results = append(results, buf...) }() + return fc(tx, batch) + }) + return results, err +} + +func (p productTypeDo) FindInBatches(result *[]*models.ProductType, batchSize int, fc func(tx gen.Dao, batch int) error) error { + return p.DO.FindInBatches(result, batchSize, fc) +} + +func (p productTypeDo) Attrs(attrs ...field.AssignExpr) IProductTypeDo { + return p.withDO(p.DO.Attrs(attrs...)) +} + +func (p productTypeDo) Assign(attrs ...field.AssignExpr) IProductTypeDo { + return p.withDO(p.DO.Assign(attrs...)) +} + +func (p productTypeDo) Joins(fields ...field.RelationField) IProductTypeDo { + for _, _f := range fields { + p = *p.withDO(p.DO.Joins(_f)) + } + return &p +} + +func (p productTypeDo) Preload(fields ...field.RelationField) IProductTypeDo { + for _, _f := range fields { + p = *p.withDO(p.DO.Preload(_f)) + } + return &p +} + +func (p productTypeDo) FirstOrInit() (*models.ProductType, error) { + if result, err := p.DO.FirstOrInit(); err != nil { + return nil, err + } else { + return result.(*models.ProductType), nil + } +} + +func (p productTypeDo) FirstOrCreate() (*models.ProductType, error) { + if result, err := p.DO.FirstOrCreate(); err != nil { + return nil, err + } else { + return result.(*models.ProductType), nil + } +} + +func (p productTypeDo) FindByPage(offset int, limit int) (result []*models.ProductType, count int64, err error) { + result, err = p.Offset(offset).Limit(limit).Find() + if err != nil { + return + } + + if size := len(result); 0 < limit && 0 < size && size < limit { + count = int64(size + offset) + return + } + + count, err = p.Offset(-1).Limit(-1).Count() + return +} + +func (p productTypeDo) ScanByPage(result interface{}, offset int, limit int) (count int64, err error) { + count, err = p.Count() + if err != nil { + return + } + + err = p.Offset(offset).Limit(limit).Scan(result) + return +} + +func (p productTypeDo) Scan(result interface{}) (err error) { + return p.DO.Scan(result) +} + +func (p productTypeDo) Delete(models ...*models.ProductType) (result gen.ResultInfo, err error) { + return p.DO.Delete(models) +} + +func (p *productTypeDo) withDO(do gen.Dao) *productTypeDo { + p.DO = *do.(*gen.DO) + return p +} diff --git a/internal/dal/product_types.gen_test.go b/internal/dal/product_types.gen_test.go new file mode 100644 index 0000000..3815cd3 --- /dev/null +++ b/internal/dal/product_types.gen_test.go @@ -0,0 +1,145 @@ +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. + +package dal + +import ( + "app/internal/models" + "context" + "fmt" + "testing" + + "gorm.io/gen" + "gorm.io/gen/field" + "gorm.io/gorm/clause" +) + +func init() { + InitializeDB() + err := _gen_test_db.AutoMigrate(&models.ProductType{}) + if err != nil { + fmt.Printf("Error: AutoMigrate(&models.ProductType{}) fail: %s", err) + } +} + +func Test_productTypeQuery(t *testing.T) { + productType := newProductType(_gen_test_db) + productType = *productType.As(productType.TableName()) + _do := productType.WithContext(context.Background()).Debug() + + primaryKey := field.NewString(productType.TableName(), clause.PrimaryKey) + _, err := _do.Unscoped().Where(primaryKey.IsNotNull()).Delete() + if err != nil { + t.Error("clean table fail:", err) + return + } + + _, ok := productType.GetFieldByName("") + if ok { + t.Error("GetFieldByName(\"\") from productType success") + } + + err = _do.Create(&models.ProductType{}) + if err != nil { + t.Error("create item in table fail:", err) + } + + err = _do.Save(&models.ProductType{}) + if err != nil { + t.Error("create item in table fail:", err) + } + + err = _do.CreateInBatches([]*models.ProductType{{}, {}}, 10) + if err != nil { + t.Error("create item in table fail:", err) + } + + _, err = _do.Select(productType.ALL).Take() + if err != nil { + t.Error("Take() on table fail:", err) + } + + _, err = _do.First() + if err != nil { + t.Error("First() on table fail:", err) + } + + _, err = _do.Last() + if err != nil { + t.Error("First() on table fail:", err) + } + + _, err = _do.Where(primaryKey.IsNotNull()).FindInBatch(10, func(tx gen.Dao, batch int) error { return nil }) + if err != nil { + t.Error("FindInBatch() on table fail:", err) + } + + err = _do.Where(primaryKey.IsNotNull()).FindInBatches(&[]*models.ProductType{}, 10, func(tx gen.Dao, batch int) error { return nil }) + if err != nil { + t.Error("FindInBatches() on table fail:", err) + } + + _, err = _do.Select(productType.ALL).Where(primaryKey.IsNotNull()).Order(primaryKey.Desc()).Find() + if err != nil { + t.Error("Find() on table fail:", err) + } + + _, err = _do.Distinct(primaryKey).Take() + if err != nil { + t.Error("select Distinct() on table fail:", err) + } + + _, err = _do.Select(productType.ALL).Omit(primaryKey).Take() + if err != nil { + t.Error("Omit() on table fail:", err) + } + + _, err = _do.Group(primaryKey).Find() + if err != nil { + t.Error("Group() on table fail:", err) + } + + _, err = _do.Scopes(func(dao gen.Dao) gen.Dao { return dao.Where(primaryKey.IsNotNull()) }).Find() + if err != nil { + t.Error("Scopes() on table fail:", err) + } + + _, _, err = _do.FindByPage(0, 1) + if err != nil { + t.Error("FindByPage() on table fail:", err) + } + + _, err = _do.ScanByPage(&models.ProductType{}, 0, 1) + if err != nil { + t.Error("ScanByPage() on table fail:", err) + } + + _, err = _do.Attrs(primaryKey).Assign(primaryKey).FirstOrInit() + if err != nil { + t.Error("FirstOrInit() on table fail:", err) + } + + _, err = _do.Attrs(primaryKey).Assign(primaryKey).FirstOrCreate() + if err != nil { + t.Error("FirstOrCreate() on table fail:", err) + } + + var _a _another + var _aPK = field.NewString(_a.TableName(), "id") + + err = _do.Join(&_a, primaryKey.EqCol(_aPK)).Scan(map[string]interface{}{}) + if err != nil { + t.Error("Join() on table fail:", err) + } + + err = _do.LeftJoin(&_a, primaryKey.EqCol(_aPK)).Scan(map[string]interface{}{}) + if err != nil { + t.Error("LeftJoin() on table fail:", err) + } + + _, err = _do.Not().Or().Clauses().Take() + if err != nil { + t.Error("Not/Or/Clauses on table fail:", err) + } +} diff --git a/internal/dal/shifts.gen.go b/internal/dal/shifts.gen.go new file mode 100644 index 0000000..0b7939f --- /dev/null +++ b/internal/dal/shifts.gen.go @@ -0,0 +1,905 @@ +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. + +package dal + +import ( + "app/internal/models" + "context" + + "gorm.io/gorm" + "gorm.io/gorm/clause" + "gorm.io/gorm/schema" + + "gorm.io/gen" + "gorm.io/gen/field" + + "gorm.io/plugin/dbresolver" +) + +func newShift(db *gorm.DB, opts ...gen.DOOption) shift { + _shift := shift{} + + _shift.shiftDo.UseDB(db, opts...) + _shift.shiftDo.UseModel(&models.Shift{}) + + tableName := _shift.shiftDo.TableName() + _shift.ALL = field.NewAsterisk(tableName) + _shift.Id = field.NewUint(tableName, "id") + _shift.Description = field.NewString(tableName, "description") + _shift.ProductTypeId = field.NewUint(tableName, "product_type_id") + _shift.ProductAmount = field.NewUint(tableName, "product_amount") + _shift.ShiftDate = field.NewInt64(tableName, "shift_date") + _shift.WorkAreaId = field.NewUint(tableName, "work_area_id") + _shift.CreatedAt = field.NewInt64(tableName, "created_at") + _shift.ProductType = shiftBelongsToProductType{ + db: db.Session(&gorm.Session{}), + + RelationField: field.NewRelation("ProductType", "models.ProductType"), + } + + _shift.WorkArea = shiftBelongsToWorkArea{ + db: db.Session(&gorm.Session{}), + + RelationField: field.NewRelation("WorkArea", "models.WorkArea"), + Workshop: struct { + field.RelationField + WorkAreas struct { + field.RelationField + } + Workers struct { + field.RelationField + Workshop struct { + field.RelationField + } + TeamTasks struct { + field.RelationField + TeamType struct { + field.RelationField + } + TeamLeader struct { + field.RelationField + } + WorkArea struct { + field.RelationField + } + TeamMembers struct { + field.RelationField + } + } + } + Tasks struct { + field.RelationField + ProductType struct { + field.RelationField + } + Order struct { + field.RelationField + ProductType struct { + field.RelationField + } + Customer struct { + field.RelationField + Orders struct { + field.RelationField + } + } + Tasks struct { + field.RelationField + } + } + PrepTasks struct { + field.RelationField + Task struct { + field.RelationField + } + WorkArea struct { + field.RelationField + } + } + Workshops struct { + field.RelationField + } + } + }{ + RelationField: field.NewRelation("WorkArea.Workshop", "models.Workshop"), + WorkAreas: struct { + field.RelationField + }{ + RelationField: field.NewRelation("WorkArea.Workshop.WorkAreas", "models.WorkArea"), + }, + Workers: struct { + field.RelationField + Workshop struct { + field.RelationField + } + TeamTasks struct { + field.RelationField + TeamType struct { + field.RelationField + } + TeamLeader struct { + field.RelationField + } + WorkArea struct { + field.RelationField + } + TeamMembers struct { + field.RelationField + } + } + }{ + RelationField: field.NewRelation("WorkArea.Workshop.Workers", "models.Worker"), + Workshop: struct { + field.RelationField + }{ + RelationField: field.NewRelation("WorkArea.Workshop.Workers.Workshop", "models.Workshop"), + }, + TeamTasks: struct { + field.RelationField + TeamType struct { + field.RelationField + } + TeamLeader struct { + field.RelationField + } + WorkArea struct { + field.RelationField + } + TeamMembers struct { + field.RelationField + } + }{ + RelationField: field.NewRelation("WorkArea.Workshop.Workers.TeamTasks", "models.TeamTask"), + TeamType: struct { + field.RelationField + }{ + RelationField: field.NewRelation("WorkArea.Workshop.Workers.TeamTasks.TeamType", "models.TeamType"), + }, + TeamLeader: struct { + field.RelationField + }{ + RelationField: field.NewRelation("WorkArea.Workshop.Workers.TeamTasks.TeamLeader", "models.Worker"), + }, + WorkArea: struct { + field.RelationField + }{ + RelationField: field.NewRelation("WorkArea.Workshop.Workers.TeamTasks.WorkArea", "models.WorkArea"), + }, + TeamMembers: struct { + field.RelationField + }{ + RelationField: field.NewRelation("WorkArea.Workshop.Workers.TeamTasks.TeamMembers", "models.Worker"), + }, + }, + }, + Tasks: struct { + field.RelationField + ProductType struct { + field.RelationField + } + Order struct { + field.RelationField + ProductType struct { + field.RelationField + } + Customer struct { + field.RelationField + Orders struct { + field.RelationField + } + } + Tasks struct { + field.RelationField + } + } + PrepTasks struct { + field.RelationField + Task struct { + field.RelationField + } + WorkArea struct { + field.RelationField + } + } + Workshops struct { + field.RelationField + } + }{ + RelationField: field.NewRelation("WorkArea.Workshop.Tasks", "models.Task"), + ProductType: struct { + field.RelationField + }{ + RelationField: field.NewRelation("WorkArea.Workshop.Tasks.ProductType", "models.ProductType"), + }, + Order: struct { + field.RelationField + ProductType struct { + field.RelationField + } + Customer struct { + field.RelationField + Orders struct { + field.RelationField + } + } + Tasks struct { + field.RelationField + } + }{ + RelationField: field.NewRelation("WorkArea.Workshop.Tasks.Order", "models.Order"), + ProductType: struct { + field.RelationField + }{ + RelationField: field.NewRelation("WorkArea.Workshop.Tasks.Order.ProductType", "models.ProductType"), + }, + Customer: struct { + field.RelationField + Orders struct { + field.RelationField + } + }{ + RelationField: field.NewRelation("WorkArea.Workshop.Tasks.Order.Customer", "models.Customer"), + Orders: struct { + field.RelationField + }{ + RelationField: field.NewRelation("WorkArea.Workshop.Tasks.Order.Customer.Orders", "models.Order"), + }, + }, + Tasks: struct { + field.RelationField + }{ + RelationField: field.NewRelation("WorkArea.Workshop.Tasks.Order.Tasks", "models.Task"), + }, + }, + PrepTasks: struct { + field.RelationField + Task struct { + field.RelationField + } + WorkArea struct { + field.RelationField + } + }{ + RelationField: field.NewRelation("WorkArea.Workshop.Tasks.PrepTasks", "models.PrepTask"), + Task: struct { + field.RelationField + }{ + RelationField: field.NewRelation("WorkArea.Workshop.Tasks.PrepTasks.Task", "models.Task"), + }, + WorkArea: struct { + field.RelationField + }{ + RelationField: field.NewRelation("WorkArea.Workshop.Tasks.PrepTasks.WorkArea", "models.WorkArea"), + }, + }, + Workshops: struct { + field.RelationField + }{ + RelationField: field.NewRelation("WorkArea.Workshop.Tasks.Workshops", "models.Workshop"), + }, + }, + }, + PrepTasks: struct { + field.RelationField + }{ + RelationField: field.NewRelation("WorkArea.PrepTasks", "models.PrepTask"), + }, + Shifts: struct { + field.RelationField + ProductType struct { + field.RelationField + } + WorkArea struct { + field.RelationField + } + }{ + RelationField: field.NewRelation("WorkArea.Shifts", "models.Shift"), + ProductType: struct { + field.RelationField + }{ + RelationField: field.NewRelation("WorkArea.Shifts.ProductType", "models.ProductType"), + }, + WorkArea: struct { + field.RelationField + }{ + RelationField: field.NewRelation("WorkArea.Shifts.WorkArea", "models.WorkArea"), + }, + }, + TeamTasks: struct { + field.RelationField + }{ + RelationField: field.NewRelation("WorkArea.TeamTasks", "models.TeamTask"), + }, + } + + _shift.fillFieldMap() + + return _shift +} + +type shift struct { + shiftDo + + ALL field.Asterisk + Id field.Uint + Description field.String + ProductTypeId field.Uint + ProductAmount field.Uint + ShiftDate field.Int64 + WorkAreaId field.Uint + CreatedAt field.Int64 + ProductType shiftBelongsToProductType + + WorkArea shiftBelongsToWorkArea + + fieldMap map[string]field.Expr +} + +func (s shift) Table(newTableName string) *shift { + s.shiftDo.UseTable(newTableName) + return s.updateTableName(newTableName) +} + +func (s shift) As(alias string) *shift { + s.shiftDo.DO = *(s.shiftDo.As(alias).(*gen.DO)) + return s.updateTableName(alias) +} + +func (s *shift) updateTableName(table string) *shift { + s.ALL = field.NewAsterisk(table) + s.Id = field.NewUint(table, "id") + s.Description = field.NewString(table, "description") + s.ProductTypeId = field.NewUint(table, "product_type_id") + s.ProductAmount = field.NewUint(table, "product_amount") + s.ShiftDate = field.NewInt64(table, "shift_date") + s.WorkAreaId = field.NewUint(table, "work_area_id") + s.CreatedAt = field.NewInt64(table, "created_at") + + s.fillFieldMap() + + return s +} + +func (s *shift) GetFieldByName(fieldName string) (field.OrderExpr, bool) { + _f, ok := s.fieldMap[fieldName] + if !ok || _f == nil { + return nil, false + } + _oe, ok := _f.(field.OrderExpr) + return _oe, ok +} + +func (s *shift) fillFieldMap() { + s.fieldMap = make(map[string]field.Expr, 9) + s.fieldMap["id"] = s.Id + s.fieldMap["description"] = s.Description + s.fieldMap["product_type_id"] = s.ProductTypeId + s.fieldMap["product_amount"] = s.ProductAmount + s.fieldMap["shift_date"] = s.ShiftDate + s.fieldMap["work_area_id"] = s.WorkAreaId + s.fieldMap["created_at"] = s.CreatedAt + +} + +func (s shift) clone(db *gorm.DB) shift { + s.shiftDo.ReplaceConnPool(db.Statement.ConnPool) + return s +} + +func (s shift) replaceDB(db *gorm.DB) shift { + s.shiftDo.ReplaceDB(db) + return s +} + +type shiftBelongsToProductType struct { + db *gorm.DB + + field.RelationField +} + +func (a shiftBelongsToProductType) Where(conds ...field.Expr) *shiftBelongsToProductType { + if len(conds) == 0 { + return &a + } + + exprs := make([]clause.Expression, 0, len(conds)) + for _, cond := range conds { + exprs = append(exprs, cond.BeCond().(clause.Expression)) + } + a.db = a.db.Clauses(clause.Where{Exprs: exprs}) + return &a +} + +func (a shiftBelongsToProductType) WithContext(ctx context.Context) *shiftBelongsToProductType { + a.db = a.db.WithContext(ctx) + return &a +} + +func (a shiftBelongsToProductType) Session(session *gorm.Session) *shiftBelongsToProductType { + a.db = a.db.Session(session) + return &a +} + +func (a shiftBelongsToProductType) Model(m *models.Shift) *shiftBelongsToProductTypeTx { + return &shiftBelongsToProductTypeTx{a.db.Model(m).Association(a.Name())} +} + +type shiftBelongsToProductTypeTx struct{ tx *gorm.Association } + +func (a shiftBelongsToProductTypeTx) Find() (result *models.ProductType, err error) { + return result, a.tx.Find(&result) +} + +func (a shiftBelongsToProductTypeTx) Append(values ...*models.ProductType) (err error) { + targetValues := make([]interface{}, len(values)) + for i, v := range values { + targetValues[i] = v + } + return a.tx.Append(targetValues...) +} + +func (a shiftBelongsToProductTypeTx) Replace(values ...*models.ProductType) (err error) { + targetValues := make([]interface{}, len(values)) + for i, v := range values { + targetValues[i] = v + } + return a.tx.Replace(targetValues...) +} + +func (a shiftBelongsToProductTypeTx) Delete(values ...*models.ProductType) (err error) { + targetValues := make([]interface{}, len(values)) + for i, v := range values { + targetValues[i] = v + } + return a.tx.Delete(targetValues...) +} + +func (a shiftBelongsToProductTypeTx) Clear() error { + return a.tx.Clear() +} + +func (a shiftBelongsToProductTypeTx) Count() int64 { + return a.tx.Count() +} + +type shiftBelongsToWorkArea struct { + db *gorm.DB + + field.RelationField + + Workshop struct { + field.RelationField + WorkAreas struct { + field.RelationField + } + Workers struct { + field.RelationField + Workshop struct { + field.RelationField + } + TeamTasks struct { + field.RelationField + TeamType struct { + field.RelationField + } + TeamLeader struct { + field.RelationField + } + WorkArea struct { + field.RelationField + } + TeamMembers struct { + field.RelationField + } + } + } + Tasks struct { + field.RelationField + ProductType struct { + field.RelationField + } + Order struct { + field.RelationField + ProductType struct { + field.RelationField + } + Customer struct { + field.RelationField + Orders struct { + field.RelationField + } + } + Tasks struct { + field.RelationField + } + } + PrepTasks struct { + field.RelationField + Task struct { + field.RelationField + } + WorkArea struct { + field.RelationField + } + } + Workshops struct { + field.RelationField + } + } + } + PrepTasks struct { + field.RelationField + } + Shifts struct { + field.RelationField + ProductType struct { + field.RelationField + } + WorkArea struct { + field.RelationField + } + } + TeamTasks struct { + field.RelationField + } +} + +func (a shiftBelongsToWorkArea) Where(conds ...field.Expr) *shiftBelongsToWorkArea { + if len(conds) == 0 { + return &a + } + + exprs := make([]clause.Expression, 0, len(conds)) + for _, cond := range conds { + exprs = append(exprs, cond.BeCond().(clause.Expression)) + } + a.db = a.db.Clauses(clause.Where{Exprs: exprs}) + return &a +} + +func (a shiftBelongsToWorkArea) WithContext(ctx context.Context) *shiftBelongsToWorkArea { + a.db = a.db.WithContext(ctx) + return &a +} + +func (a shiftBelongsToWorkArea) Session(session *gorm.Session) *shiftBelongsToWorkArea { + a.db = a.db.Session(session) + return &a +} + +func (a shiftBelongsToWorkArea) Model(m *models.Shift) *shiftBelongsToWorkAreaTx { + return &shiftBelongsToWorkAreaTx{a.db.Model(m).Association(a.Name())} +} + +type shiftBelongsToWorkAreaTx struct{ tx *gorm.Association } + +func (a shiftBelongsToWorkAreaTx) Find() (result *models.WorkArea, err error) { + return result, a.tx.Find(&result) +} + +func (a shiftBelongsToWorkAreaTx) Append(values ...*models.WorkArea) (err error) { + targetValues := make([]interface{}, len(values)) + for i, v := range values { + targetValues[i] = v + } + return a.tx.Append(targetValues...) +} + +func (a shiftBelongsToWorkAreaTx) Replace(values ...*models.WorkArea) (err error) { + targetValues := make([]interface{}, len(values)) + for i, v := range values { + targetValues[i] = v + } + return a.tx.Replace(targetValues...) +} + +func (a shiftBelongsToWorkAreaTx) Delete(values ...*models.WorkArea) (err error) { + targetValues := make([]interface{}, len(values)) + for i, v := range values { + targetValues[i] = v + } + return a.tx.Delete(targetValues...) +} + +func (a shiftBelongsToWorkAreaTx) Clear() error { + return a.tx.Clear() +} + +func (a shiftBelongsToWorkAreaTx) Count() int64 { + return a.tx.Count() +} + +type shiftDo struct{ gen.DO } + +type IShiftDo interface { + gen.SubQuery + Debug() IShiftDo + WithContext(ctx context.Context) IShiftDo + WithResult(fc func(tx gen.Dao)) gen.ResultInfo + ReplaceDB(db *gorm.DB) + ReadDB() IShiftDo + WriteDB() IShiftDo + As(alias string) gen.Dao + Session(config *gorm.Session) IShiftDo + Columns(cols ...field.Expr) gen.Columns + Clauses(conds ...clause.Expression) IShiftDo + Not(conds ...gen.Condition) IShiftDo + Or(conds ...gen.Condition) IShiftDo + Select(conds ...field.Expr) IShiftDo + Where(conds ...gen.Condition) IShiftDo + Order(conds ...field.Expr) IShiftDo + Distinct(cols ...field.Expr) IShiftDo + Omit(cols ...field.Expr) IShiftDo + Join(table schema.Tabler, on ...field.Expr) IShiftDo + LeftJoin(table schema.Tabler, on ...field.Expr) IShiftDo + RightJoin(table schema.Tabler, on ...field.Expr) IShiftDo + Group(cols ...field.Expr) IShiftDo + Having(conds ...gen.Condition) IShiftDo + Limit(limit int) IShiftDo + Offset(offset int) IShiftDo + Count() (count int64, err error) + Scopes(funcs ...func(gen.Dao) gen.Dao) IShiftDo + Unscoped() IShiftDo + Create(values ...*models.Shift) error + CreateInBatches(values []*models.Shift, batchSize int) error + Save(values ...*models.Shift) error + First() (*models.Shift, error) + Take() (*models.Shift, error) + Last() (*models.Shift, error) + Find() ([]*models.Shift, error) + FindInBatch(batchSize int, fc func(tx gen.Dao, batch int) error) (results []*models.Shift, err error) + FindInBatches(result *[]*models.Shift, batchSize int, fc func(tx gen.Dao, batch int) error) error + Pluck(column field.Expr, dest interface{}) error + Delete(...*models.Shift) (info gen.ResultInfo, err error) + Update(column field.Expr, value interface{}) (info gen.ResultInfo, err error) + UpdateSimple(columns ...field.AssignExpr) (info gen.ResultInfo, err error) + Updates(value interface{}) (info gen.ResultInfo, err error) + UpdateColumn(column field.Expr, value interface{}) (info gen.ResultInfo, err error) + UpdateColumnSimple(columns ...field.AssignExpr) (info gen.ResultInfo, err error) + UpdateColumns(value interface{}) (info gen.ResultInfo, err error) + UpdateFrom(q gen.SubQuery) gen.Dao + Attrs(attrs ...field.AssignExpr) IShiftDo + Assign(attrs ...field.AssignExpr) IShiftDo + Joins(fields ...field.RelationField) IShiftDo + Preload(fields ...field.RelationField) IShiftDo + FirstOrInit() (*models.Shift, error) + FirstOrCreate() (*models.Shift, error) + FindByPage(offset int, limit int) (result []*models.Shift, count int64, err error) + ScanByPage(result interface{}, offset int, limit int) (count int64, err error) + Scan(result interface{}) (err error) + Returning(value interface{}, columns ...string) IShiftDo + UnderlyingDB() *gorm.DB + schema.Tabler +} + +func (s shiftDo) Debug() IShiftDo { + return s.withDO(s.DO.Debug()) +} + +func (s shiftDo) WithContext(ctx context.Context) IShiftDo { + return s.withDO(s.DO.WithContext(ctx)) +} + +func (s shiftDo) ReadDB() IShiftDo { + return s.Clauses(dbresolver.Read) +} + +func (s shiftDo) WriteDB() IShiftDo { + return s.Clauses(dbresolver.Write) +} + +func (s shiftDo) Session(config *gorm.Session) IShiftDo { + return s.withDO(s.DO.Session(config)) +} + +func (s shiftDo) Clauses(conds ...clause.Expression) IShiftDo { + return s.withDO(s.DO.Clauses(conds...)) +} + +func (s shiftDo) Returning(value interface{}, columns ...string) IShiftDo { + return s.withDO(s.DO.Returning(value, columns...)) +} + +func (s shiftDo) Not(conds ...gen.Condition) IShiftDo { + return s.withDO(s.DO.Not(conds...)) +} + +func (s shiftDo) Or(conds ...gen.Condition) IShiftDo { + return s.withDO(s.DO.Or(conds...)) +} + +func (s shiftDo) Select(conds ...field.Expr) IShiftDo { + return s.withDO(s.DO.Select(conds...)) +} + +func (s shiftDo) Where(conds ...gen.Condition) IShiftDo { + return s.withDO(s.DO.Where(conds...)) +} + +func (s shiftDo) Order(conds ...field.Expr) IShiftDo { + return s.withDO(s.DO.Order(conds...)) +} + +func (s shiftDo) Distinct(cols ...field.Expr) IShiftDo { + return s.withDO(s.DO.Distinct(cols...)) +} + +func (s shiftDo) Omit(cols ...field.Expr) IShiftDo { + return s.withDO(s.DO.Omit(cols...)) +} + +func (s shiftDo) Join(table schema.Tabler, on ...field.Expr) IShiftDo { + return s.withDO(s.DO.Join(table, on...)) +} + +func (s shiftDo) LeftJoin(table schema.Tabler, on ...field.Expr) IShiftDo { + return s.withDO(s.DO.LeftJoin(table, on...)) +} + +func (s shiftDo) RightJoin(table schema.Tabler, on ...field.Expr) IShiftDo { + return s.withDO(s.DO.RightJoin(table, on...)) +} + +func (s shiftDo) Group(cols ...field.Expr) IShiftDo { + return s.withDO(s.DO.Group(cols...)) +} + +func (s shiftDo) Having(conds ...gen.Condition) IShiftDo { + return s.withDO(s.DO.Having(conds...)) +} + +func (s shiftDo) Limit(limit int) IShiftDo { + return s.withDO(s.DO.Limit(limit)) +} + +func (s shiftDo) Offset(offset int) IShiftDo { + return s.withDO(s.DO.Offset(offset)) +} + +func (s shiftDo) Scopes(funcs ...func(gen.Dao) gen.Dao) IShiftDo { + return s.withDO(s.DO.Scopes(funcs...)) +} + +func (s shiftDo) Unscoped() IShiftDo { + return s.withDO(s.DO.Unscoped()) +} + +func (s shiftDo) Create(values ...*models.Shift) error { + if len(values) == 0 { + return nil + } + return s.DO.Create(values) +} + +func (s shiftDo) CreateInBatches(values []*models.Shift, batchSize int) error { + return s.DO.CreateInBatches(values, batchSize) +} + +// Save : !!! underlying implementation is different with GORM +// The method is equivalent to executing the statement: db.Clauses(clause.OnConflict{UpdateAll: true}).Create(values) +func (s shiftDo) Save(values ...*models.Shift) error { + if len(values) == 0 { + return nil + } + return s.DO.Save(values) +} + +func (s shiftDo) First() (*models.Shift, error) { + if result, err := s.DO.First(); err != nil { + return nil, err + } else { + return result.(*models.Shift), nil + } +} + +func (s shiftDo) Take() (*models.Shift, error) { + if result, err := s.DO.Take(); err != nil { + return nil, err + } else { + return result.(*models.Shift), nil + } +} + +func (s shiftDo) Last() (*models.Shift, error) { + if result, err := s.DO.Last(); err != nil { + return nil, err + } else { + return result.(*models.Shift), nil + } +} + +func (s shiftDo) Find() ([]*models.Shift, error) { + result, err := s.DO.Find() + return result.([]*models.Shift), err +} + +func (s shiftDo) FindInBatch(batchSize int, fc func(tx gen.Dao, batch int) error) (results []*models.Shift, err error) { + buf := make([]*models.Shift, 0, batchSize) + err = s.DO.FindInBatches(&buf, batchSize, func(tx gen.Dao, batch int) error { + defer func() { results = append(results, buf...) }() + return fc(tx, batch) + }) + return results, err +} + +func (s shiftDo) FindInBatches(result *[]*models.Shift, batchSize int, fc func(tx gen.Dao, batch int) error) error { + return s.DO.FindInBatches(result, batchSize, fc) +} + +func (s shiftDo) Attrs(attrs ...field.AssignExpr) IShiftDo { + return s.withDO(s.DO.Attrs(attrs...)) +} + +func (s shiftDo) Assign(attrs ...field.AssignExpr) IShiftDo { + return s.withDO(s.DO.Assign(attrs...)) +} + +func (s shiftDo) Joins(fields ...field.RelationField) IShiftDo { + for _, _f := range fields { + s = *s.withDO(s.DO.Joins(_f)) + } + return &s +} + +func (s shiftDo) Preload(fields ...field.RelationField) IShiftDo { + for _, _f := range fields { + s = *s.withDO(s.DO.Preload(_f)) + } + return &s +} + +func (s shiftDo) FirstOrInit() (*models.Shift, error) { + if result, err := s.DO.FirstOrInit(); err != nil { + return nil, err + } else { + return result.(*models.Shift), nil + } +} + +func (s shiftDo) FirstOrCreate() (*models.Shift, error) { + if result, err := s.DO.FirstOrCreate(); err != nil { + return nil, err + } else { + return result.(*models.Shift), nil + } +} + +func (s shiftDo) FindByPage(offset int, limit int) (result []*models.Shift, count int64, err error) { + result, err = s.Offset(offset).Limit(limit).Find() + if err != nil { + return + } + + if size := len(result); 0 < limit && 0 < size && size < limit { + count = int64(size + offset) + return + } + + count, err = s.Offset(-1).Limit(-1).Count() + return +} + +func (s shiftDo) ScanByPage(result interface{}, offset int, limit int) (count int64, err error) { + count, err = s.Count() + if err != nil { + return + } + + err = s.Offset(offset).Limit(limit).Scan(result) + return +} + +func (s shiftDo) Scan(result interface{}) (err error) { + return s.DO.Scan(result) +} + +func (s shiftDo) Delete(models ...*models.Shift) (result gen.ResultInfo, err error) { + return s.DO.Delete(models) +} + +func (s *shiftDo) withDO(do gen.Dao) *shiftDo { + s.DO = *do.(*gen.DO) + return s +} diff --git a/internal/dal/shifts.gen_test.go b/internal/dal/shifts.gen_test.go new file mode 100644 index 0000000..d65570c --- /dev/null +++ b/internal/dal/shifts.gen_test.go @@ -0,0 +1,145 @@ +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. + +package dal + +import ( + "app/internal/models" + "context" + "fmt" + "testing" + + "gorm.io/gen" + "gorm.io/gen/field" + "gorm.io/gorm/clause" +) + +func init() { + InitializeDB() + err := _gen_test_db.AutoMigrate(&models.Shift{}) + if err != nil { + fmt.Printf("Error: AutoMigrate(&models.Shift{}) fail: %s", err) + } +} + +func Test_shiftQuery(t *testing.T) { + shift := newShift(_gen_test_db) + shift = *shift.As(shift.TableName()) + _do := shift.WithContext(context.Background()).Debug() + + primaryKey := field.NewString(shift.TableName(), clause.PrimaryKey) + _, err := _do.Unscoped().Where(primaryKey.IsNotNull()).Delete() + if err != nil { + t.Error("clean table fail:", err) + return + } + + _, ok := shift.GetFieldByName("") + if ok { + t.Error("GetFieldByName(\"\") from shift success") + } + + err = _do.Create(&models.Shift{}) + if err != nil { + t.Error("create item in table fail:", err) + } + + err = _do.Save(&models.Shift{}) + if err != nil { + t.Error("create item in table fail:", err) + } + + err = _do.CreateInBatches([]*models.Shift{{}, {}}, 10) + if err != nil { + t.Error("create item in table fail:", err) + } + + _, err = _do.Select(shift.ALL).Take() + if err != nil { + t.Error("Take() on table fail:", err) + } + + _, err = _do.First() + if err != nil { + t.Error("First() on table fail:", err) + } + + _, err = _do.Last() + if err != nil { + t.Error("First() on table fail:", err) + } + + _, err = _do.Where(primaryKey.IsNotNull()).FindInBatch(10, func(tx gen.Dao, batch int) error { return nil }) + if err != nil { + t.Error("FindInBatch() on table fail:", err) + } + + err = _do.Where(primaryKey.IsNotNull()).FindInBatches(&[]*models.Shift{}, 10, func(tx gen.Dao, batch int) error { return nil }) + if err != nil { + t.Error("FindInBatches() on table fail:", err) + } + + _, err = _do.Select(shift.ALL).Where(primaryKey.IsNotNull()).Order(primaryKey.Desc()).Find() + if err != nil { + t.Error("Find() on table fail:", err) + } + + _, err = _do.Distinct(primaryKey).Take() + if err != nil { + t.Error("select Distinct() on table fail:", err) + } + + _, err = _do.Select(shift.ALL).Omit(primaryKey).Take() + if err != nil { + t.Error("Omit() on table fail:", err) + } + + _, err = _do.Group(primaryKey).Find() + if err != nil { + t.Error("Group() on table fail:", err) + } + + _, err = _do.Scopes(func(dao gen.Dao) gen.Dao { return dao.Where(primaryKey.IsNotNull()) }).Find() + if err != nil { + t.Error("Scopes() on table fail:", err) + } + + _, _, err = _do.FindByPage(0, 1) + if err != nil { + t.Error("FindByPage() on table fail:", err) + } + + _, err = _do.ScanByPage(&models.Shift{}, 0, 1) + if err != nil { + t.Error("ScanByPage() on table fail:", err) + } + + _, err = _do.Attrs(primaryKey).Assign(primaryKey).FirstOrInit() + if err != nil { + t.Error("FirstOrInit() on table fail:", err) + } + + _, err = _do.Attrs(primaryKey).Assign(primaryKey).FirstOrCreate() + if err != nil { + t.Error("FirstOrCreate() on table fail:", err) + } + + var _a _another + var _aPK = field.NewString(_a.TableName(), "id") + + err = _do.Join(&_a, primaryKey.EqCol(_aPK)).Scan(map[string]interface{}{}) + if err != nil { + t.Error("Join() on table fail:", err) + } + + err = _do.LeftJoin(&_a, primaryKey.EqCol(_aPK)).Scan(map[string]interface{}{}) + if err != nil { + t.Error("LeftJoin() on table fail:", err) + } + + _, err = _do.Not().Or().Clauses().Take() + if err != nil { + t.Error("Not/Or/Clauses on table fail:", err) + } +} diff --git a/internal/dal/tasks.gen.go b/internal/dal/tasks.gen.go new file mode 100644 index 0000000..163f167 --- /dev/null +++ b/internal/dal/tasks.gen.go @@ -0,0 +1,1114 @@ +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. + +package dal + +import ( + "app/internal/models" + "context" + + "gorm.io/gorm" + "gorm.io/gorm/clause" + "gorm.io/gorm/schema" + + "gorm.io/gen" + "gorm.io/gen/field" + + "gorm.io/plugin/dbresolver" +) + +func newTask(db *gorm.DB, opts ...gen.DOOption) task { + _task := task{} + + _task.taskDo.UseDB(db, opts...) + _task.taskDo.UseModel(&models.Task{}) + + tableName := _task.taskDo.TableName() + _task.ALL = field.NewAsterisk(tableName) + _task.Id = field.NewUint(tableName, "id") + _task.Description = field.NewString(tableName, "description") + _task.ProductTypeId = field.NewUint(tableName, "product_type_id") + _task.OrderId = field.NewUint(tableName, "order_id") + _task.ProductionStart = field.NewInt64(tableName, "production_start") + _task.CreatedAt = field.NewInt64(tableName, "created_at") + _task.Amount = field.NewUint(tableName, "amount") + _task.PrepTasks = taskHasManyPrepTasks{ + db: db.Session(&gorm.Session{}), + + RelationField: field.NewRelation("PrepTasks", "models.PrepTask"), + Task: struct { + field.RelationField + ProductType struct { + field.RelationField + } + Order struct { + field.RelationField + ProductType struct { + field.RelationField + } + Customer struct { + field.RelationField + Orders struct { + field.RelationField + } + } + Tasks struct { + field.RelationField + } + } + PrepTasks struct { + field.RelationField + } + Workshops struct { + field.RelationField + WorkAreas struct { + field.RelationField + Workshop struct { + field.RelationField + } + PrepTasks struct { + field.RelationField + } + Shifts struct { + field.RelationField + ProductType struct { + field.RelationField + } + WorkArea struct { + field.RelationField + } + } + TeamTasks struct { + field.RelationField + TeamType struct { + field.RelationField + } + TeamLeader struct { + field.RelationField + Workshop struct { + field.RelationField + } + TeamTasks struct { + field.RelationField + } + } + WorkArea struct { + field.RelationField + } + TeamMembers struct { + field.RelationField + } + } + } + Workers struct { + field.RelationField + } + Tasks struct { + field.RelationField + } + } + }{ + RelationField: field.NewRelation("PrepTasks.Task", "models.Task"), + ProductType: struct { + field.RelationField + }{ + RelationField: field.NewRelation("PrepTasks.Task.ProductType", "models.ProductType"), + }, + Order: struct { + field.RelationField + ProductType struct { + field.RelationField + } + Customer struct { + field.RelationField + Orders struct { + field.RelationField + } + } + Tasks struct { + field.RelationField + } + }{ + RelationField: field.NewRelation("PrepTasks.Task.Order", "models.Order"), + ProductType: struct { + field.RelationField + }{ + RelationField: field.NewRelation("PrepTasks.Task.Order.ProductType", "models.ProductType"), + }, + Customer: struct { + field.RelationField + Orders struct { + field.RelationField + } + }{ + RelationField: field.NewRelation("PrepTasks.Task.Order.Customer", "models.Customer"), + Orders: struct { + field.RelationField + }{ + RelationField: field.NewRelation("PrepTasks.Task.Order.Customer.Orders", "models.Order"), + }, + }, + Tasks: struct { + field.RelationField + }{ + RelationField: field.NewRelation("PrepTasks.Task.Order.Tasks", "models.Task"), + }, + }, + PrepTasks: struct { + field.RelationField + }{ + RelationField: field.NewRelation("PrepTasks.Task.PrepTasks", "models.PrepTask"), + }, + Workshops: struct { + field.RelationField + WorkAreas struct { + field.RelationField + Workshop struct { + field.RelationField + } + PrepTasks struct { + field.RelationField + } + Shifts struct { + field.RelationField + ProductType struct { + field.RelationField + } + WorkArea struct { + field.RelationField + } + } + TeamTasks struct { + field.RelationField + TeamType struct { + field.RelationField + } + TeamLeader struct { + field.RelationField + Workshop struct { + field.RelationField + } + TeamTasks struct { + field.RelationField + } + } + WorkArea struct { + field.RelationField + } + TeamMembers struct { + field.RelationField + } + } + } + Workers struct { + field.RelationField + } + Tasks struct { + field.RelationField + } + }{ + RelationField: field.NewRelation("PrepTasks.Task.Workshops", "models.Workshop"), + WorkAreas: struct { + field.RelationField + Workshop struct { + field.RelationField + } + PrepTasks struct { + field.RelationField + } + Shifts struct { + field.RelationField + ProductType struct { + field.RelationField + } + WorkArea struct { + field.RelationField + } + } + TeamTasks struct { + field.RelationField + TeamType struct { + field.RelationField + } + TeamLeader struct { + field.RelationField + Workshop struct { + field.RelationField + } + TeamTasks struct { + field.RelationField + } + } + WorkArea struct { + field.RelationField + } + TeamMembers struct { + field.RelationField + } + } + }{ + RelationField: field.NewRelation("PrepTasks.Task.Workshops.WorkAreas", "models.WorkArea"), + Workshop: struct { + field.RelationField + }{ + RelationField: field.NewRelation("PrepTasks.Task.Workshops.WorkAreas.Workshop", "models.Workshop"), + }, + PrepTasks: struct { + field.RelationField + }{ + RelationField: field.NewRelation("PrepTasks.Task.Workshops.WorkAreas.PrepTasks", "models.PrepTask"), + }, + Shifts: struct { + field.RelationField + ProductType struct { + field.RelationField + } + WorkArea struct { + field.RelationField + } + }{ + RelationField: field.NewRelation("PrepTasks.Task.Workshops.WorkAreas.Shifts", "models.Shift"), + ProductType: struct { + field.RelationField + }{ + RelationField: field.NewRelation("PrepTasks.Task.Workshops.WorkAreas.Shifts.ProductType", "models.ProductType"), + }, + WorkArea: struct { + field.RelationField + }{ + RelationField: field.NewRelation("PrepTasks.Task.Workshops.WorkAreas.Shifts.WorkArea", "models.WorkArea"), + }, + }, + TeamTasks: struct { + field.RelationField + TeamType struct { + field.RelationField + } + TeamLeader struct { + field.RelationField + Workshop struct { + field.RelationField + } + TeamTasks struct { + field.RelationField + } + } + WorkArea struct { + field.RelationField + } + TeamMembers struct { + field.RelationField + } + }{ + RelationField: field.NewRelation("PrepTasks.Task.Workshops.WorkAreas.TeamTasks", "models.TeamTask"), + TeamType: struct { + field.RelationField + }{ + RelationField: field.NewRelation("PrepTasks.Task.Workshops.WorkAreas.TeamTasks.TeamType", "models.TeamType"), + }, + TeamLeader: struct { + field.RelationField + Workshop struct { + field.RelationField + } + TeamTasks struct { + field.RelationField + } + }{ + RelationField: field.NewRelation("PrepTasks.Task.Workshops.WorkAreas.TeamTasks.TeamLeader", "models.Worker"), + Workshop: struct { + field.RelationField + }{ + RelationField: field.NewRelation("PrepTasks.Task.Workshops.WorkAreas.TeamTasks.TeamLeader.Workshop", "models.Workshop"), + }, + TeamTasks: struct { + field.RelationField + }{ + RelationField: field.NewRelation("PrepTasks.Task.Workshops.WorkAreas.TeamTasks.TeamLeader.TeamTasks", "models.TeamTask"), + }, + }, + WorkArea: struct { + field.RelationField + }{ + RelationField: field.NewRelation("PrepTasks.Task.Workshops.WorkAreas.TeamTasks.WorkArea", "models.WorkArea"), + }, + TeamMembers: struct { + field.RelationField + }{ + RelationField: field.NewRelation("PrepTasks.Task.Workshops.WorkAreas.TeamTasks.TeamMembers", "models.Worker"), + }, + }, + }, + Workers: struct { + field.RelationField + }{ + RelationField: field.NewRelation("PrepTasks.Task.Workshops.Workers", "models.Worker"), + }, + Tasks: struct { + field.RelationField + }{ + RelationField: field.NewRelation("PrepTasks.Task.Workshops.Tasks", "models.Task"), + }, + }, + }, + WorkArea: struct { + field.RelationField + }{ + RelationField: field.NewRelation("PrepTasks.WorkArea", "models.WorkArea"), + }, + } + + _task.ProductType = taskBelongsToProductType{ + db: db.Session(&gorm.Session{}), + + RelationField: field.NewRelation("ProductType", "models.ProductType"), + } + + _task.Order = taskBelongsToOrder{ + db: db.Session(&gorm.Session{}), + + RelationField: field.NewRelation("Order", "models.Order"), + } + + _task.Workshops = taskManyToManyWorkshops{ + db: db.Session(&gorm.Session{}), + + RelationField: field.NewRelation("Workshops", "models.Workshop"), + } + + _task.fillFieldMap() + + return _task +} + +type task struct { + taskDo + + ALL field.Asterisk + Id field.Uint + Description field.String + ProductTypeId field.Uint + OrderId field.Uint + ProductionStart field.Int64 + CreatedAt field.Int64 + Amount field.Uint + PrepTasks taskHasManyPrepTasks + + ProductType taskBelongsToProductType + + Order taskBelongsToOrder + + Workshops taskManyToManyWorkshops + + fieldMap map[string]field.Expr +} + +func (t task) Table(newTableName string) *task { + t.taskDo.UseTable(newTableName) + return t.updateTableName(newTableName) +} + +func (t task) As(alias string) *task { + t.taskDo.DO = *(t.taskDo.As(alias).(*gen.DO)) + return t.updateTableName(alias) +} + +func (t *task) updateTableName(table string) *task { + t.ALL = field.NewAsterisk(table) + t.Id = field.NewUint(table, "id") + t.Description = field.NewString(table, "description") + t.ProductTypeId = field.NewUint(table, "product_type_id") + t.OrderId = field.NewUint(table, "order_id") + t.ProductionStart = field.NewInt64(table, "production_start") + t.CreatedAt = field.NewInt64(table, "created_at") + t.Amount = field.NewUint(table, "amount") + + t.fillFieldMap() + + return t +} + +func (t *task) GetFieldByName(fieldName string) (field.OrderExpr, bool) { + _f, ok := t.fieldMap[fieldName] + if !ok || _f == nil { + return nil, false + } + _oe, ok := _f.(field.OrderExpr) + return _oe, ok +} + +func (t *task) fillFieldMap() { + t.fieldMap = make(map[string]field.Expr, 11) + t.fieldMap["id"] = t.Id + t.fieldMap["description"] = t.Description + t.fieldMap["product_type_id"] = t.ProductTypeId + t.fieldMap["order_id"] = t.OrderId + t.fieldMap["production_start"] = t.ProductionStart + t.fieldMap["created_at"] = t.CreatedAt + t.fieldMap["amount"] = t.Amount + +} + +func (t task) clone(db *gorm.DB) task { + t.taskDo.ReplaceConnPool(db.Statement.ConnPool) + return t +} + +func (t task) replaceDB(db *gorm.DB) task { + t.taskDo.ReplaceDB(db) + return t +} + +type taskHasManyPrepTasks struct { + db *gorm.DB + + field.RelationField + + Task struct { + field.RelationField + ProductType struct { + field.RelationField + } + Order struct { + field.RelationField + ProductType struct { + field.RelationField + } + Customer struct { + field.RelationField + Orders struct { + field.RelationField + } + } + Tasks struct { + field.RelationField + } + } + PrepTasks struct { + field.RelationField + } + Workshops struct { + field.RelationField + WorkAreas struct { + field.RelationField + Workshop struct { + field.RelationField + } + PrepTasks struct { + field.RelationField + } + Shifts struct { + field.RelationField + ProductType struct { + field.RelationField + } + WorkArea struct { + field.RelationField + } + } + TeamTasks struct { + field.RelationField + TeamType struct { + field.RelationField + } + TeamLeader struct { + field.RelationField + Workshop struct { + field.RelationField + } + TeamTasks struct { + field.RelationField + } + } + WorkArea struct { + field.RelationField + } + TeamMembers struct { + field.RelationField + } + } + } + Workers struct { + field.RelationField + } + Tasks struct { + field.RelationField + } + } + } + WorkArea struct { + field.RelationField + } +} + +func (a taskHasManyPrepTasks) Where(conds ...field.Expr) *taskHasManyPrepTasks { + if len(conds) == 0 { + return &a + } + + exprs := make([]clause.Expression, 0, len(conds)) + for _, cond := range conds { + exprs = append(exprs, cond.BeCond().(clause.Expression)) + } + a.db = a.db.Clauses(clause.Where{Exprs: exprs}) + return &a +} + +func (a taskHasManyPrepTasks) WithContext(ctx context.Context) *taskHasManyPrepTasks { + a.db = a.db.WithContext(ctx) + return &a +} + +func (a taskHasManyPrepTasks) Session(session *gorm.Session) *taskHasManyPrepTasks { + a.db = a.db.Session(session) + return &a +} + +func (a taskHasManyPrepTasks) Model(m *models.Task) *taskHasManyPrepTasksTx { + return &taskHasManyPrepTasksTx{a.db.Model(m).Association(a.Name())} +} + +type taskHasManyPrepTasksTx struct{ tx *gorm.Association } + +func (a taskHasManyPrepTasksTx) Find() (result []*models.PrepTask, err error) { + return result, a.tx.Find(&result) +} + +func (a taskHasManyPrepTasksTx) Append(values ...*models.PrepTask) (err error) { + targetValues := make([]interface{}, len(values)) + for i, v := range values { + targetValues[i] = v + } + return a.tx.Append(targetValues...) +} + +func (a taskHasManyPrepTasksTx) Replace(values ...*models.PrepTask) (err error) { + targetValues := make([]interface{}, len(values)) + for i, v := range values { + targetValues[i] = v + } + return a.tx.Replace(targetValues...) +} + +func (a taskHasManyPrepTasksTx) Delete(values ...*models.PrepTask) (err error) { + targetValues := make([]interface{}, len(values)) + for i, v := range values { + targetValues[i] = v + } + return a.tx.Delete(targetValues...) +} + +func (a taskHasManyPrepTasksTx) Clear() error { + return a.tx.Clear() +} + +func (a taskHasManyPrepTasksTx) Count() int64 { + return a.tx.Count() +} + +type taskBelongsToProductType struct { + db *gorm.DB + + field.RelationField +} + +func (a taskBelongsToProductType) Where(conds ...field.Expr) *taskBelongsToProductType { + if len(conds) == 0 { + return &a + } + + exprs := make([]clause.Expression, 0, len(conds)) + for _, cond := range conds { + exprs = append(exprs, cond.BeCond().(clause.Expression)) + } + a.db = a.db.Clauses(clause.Where{Exprs: exprs}) + return &a +} + +func (a taskBelongsToProductType) WithContext(ctx context.Context) *taskBelongsToProductType { + a.db = a.db.WithContext(ctx) + return &a +} + +func (a taskBelongsToProductType) Session(session *gorm.Session) *taskBelongsToProductType { + a.db = a.db.Session(session) + return &a +} + +func (a taskBelongsToProductType) Model(m *models.Task) *taskBelongsToProductTypeTx { + return &taskBelongsToProductTypeTx{a.db.Model(m).Association(a.Name())} +} + +type taskBelongsToProductTypeTx struct{ tx *gorm.Association } + +func (a taskBelongsToProductTypeTx) Find() (result *models.ProductType, err error) { + return result, a.tx.Find(&result) +} + +func (a taskBelongsToProductTypeTx) Append(values ...*models.ProductType) (err error) { + targetValues := make([]interface{}, len(values)) + for i, v := range values { + targetValues[i] = v + } + return a.tx.Append(targetValues...) +} + +func (a taskBelongsToProductTypeTx) Replace(values ...*models.ProductType) (err error) { + targetValues := make([]interface{}, len(values)) + for i, v := range values { + targetValues[i] = v + } + return a.tx.Replace(targetValues...) +} + +func (a taskBelongsToProductTypeTx) Delete(values ...*models.ProductType) (err error) { + targetValues := make([]interface{}, len(values)) + for i, v := range values { + targetValues[i] = v + } + return a.tx.Delete(targetValues...) +} + +func (a taskBelongsToProductTypeTx) Clear() error { + return a.tx.Clear() +} + +func (a taskBelongsToProductTypeTx) Count() int64 { + return a.tx.Count() +} + +type taskBelongsToOrder struct { + db *gorm.DB + + field.RelationField +} + +func (a taskBelongsToOrder) Where(conds ...field.Expr) *taskBelongsToOrder { + if len(conds) == 0 { + return &a + } + + exprs := make([]clause.Expression, 0, len(conds)) + for _, cond := range conds { + exprs = append(exprs, cond.BeCond().(clause.Expression)) + } + a.db = a.db.Clauses(clause.Where{Exprs: exprs}) + return &a +} + +func (a taskBelongsToOrder) WithContext(ctx context.Context) *taskBelongsToOrder { + a.db = a.db.WithContext(ctx) + return &a +} + +func (a taskBelongsToOrder) Session(session *gorm.Session) *taskBelongsToOrder { + a.db = a.db.Session(session) + return &a +} + +func (a taskBelongsToOrder) Model(m *models.Task) *taskBelongsToOrderTx { + return &taskBelongsToOrderTx{a.db.Model(m).Association(a.Name())} +} + +type taskBelongsToOrderTx struct{ tx *gorm.Association } + +func (a taskBelongsToOrderTx) Find() (result *models.Order, err error) { + return result, a.tx.Find(&result) +} + +func (a taskBelongsToOrderTx) Append(values ...*models.Order) (err error) { + targetValues := make([]interface{}, len(values)) + for i, v := range values { + targetValues[i] = v + } + return a.tx.Append(targetValues...) +} + +func (a taskBelongsToOrderTx) Replace(values ...*models.Order) (err error) { + targetValues := make([]interface{}, len(values)) + for i, v := range values { + targetValues[i] = v + } + return a.tx.Replace(targetValues...) +} + +func (a taskBelongsToOrderTx) Delete(values ...*models.Order) (err error) { + targetValues := make([]interface{}, len(values)) + for i, v := range values { + targetValues[i] = v + } + return a.tx.Delete(targetValues...) +} + +func (a taskBelongsToOrderTx) Clear() error { + return a.tx.Clear() +} + +func (a taskBelongsToOrderTx) Count() int64 { + return a.tx.Count() +} + +type taskManyToManyWorkshops struct { + db *gorm.DB + + field.RelationField +} + +func (a taskManyToManyWorkshops) Where(conds ...field.Expr) *taskManyToManyWorkshops { + if len(conds) == 0 { + return &a + } + + exprs := make([]clause.Expression, 0, len(conds)) + for _, cond := range conds { + exprs = append(exprs, cond.BeCond().(clause.Expression)) + } + a.db = a.db.Clauses(clause.Where{Exprs: exprs}) + return &a +} + +func (a taskManyToManyWorkshops) WithContext(ctx context.Context) *taskManyToManyWorkshops { + a.db = a.db.WithContext(ctx) + return &a +} + +func (a taskManyToManyWorkshops) Session(session *gorm.Session) *taskManyToManyWorkshops { + a.db = a.db.Session(session) + return &a +} + +func (a taskManyToManyWorkshops) Model(m *models.Task) *taskManyToManyWorkshopsTx { + return &taskManyToManyWorkshopsTx{a.db.Model(m).Association(a.Name())} +} + +type taskManyToManyWorkshopsTx struct{ tx *gorm.Association } + +func (a taskManyToManyWorkshopsTx) Find() (result []*models.Workshop, err error) { + return result, a.tx.Find(&result) +} + +func (a taskManyToManyWorkshopsTx) Append(values ...*models.Workshop) (err error) { + targetValues := make([]interface{}, len(values)) + for i, v := range values { + targetValues[i] = v + } + return a.tx.Append(targetValues...) +} + +func (a taskManyToManyWorkshopsTx) Replace(values ...*models.Workshop) (err error) { + targetValues := make([]interface{}, len(values)) + for i, v := range values { + targetValues[i] = v + } + return a.tx.Replace(targetValues...) +} + +func (a taskManyToManyWorkshopsTx) Delete(values ...*models.Workshop) (err error) { + targetValues := make([]interface{}, len(values)) + for i, v := range values { + targetValues[i] = v + } + return a.tx.Delete(targetValues...) +} + +func (a taskManyToManyWorkshopsTx) Clear() error { + return a.tx.Clear() +} + +func (a taskManyToManyWorkshopsTx) Count() int64 { + return a.tx.Count() +} + +type taskDo struct{ gen.DO } + +type ITaskDo interface { + gen.SubQuery + Debug() ITaskDo + WithContext(ctx context.Context) ITaskDo + WithResult(fc func(tx gen.Dao)) gen.ResultInfo + ReplaceDB(db *gorm.DB) + ReadDB() ITaskDo + WriteDB() ITaskDo + As(alias string) gen.Dao + Session(config *gorm.Session) ITaskDo + Columns(cols ...field.Expr) gen.Columns + Clauses(conds ...clause.Expression) ITaskDo + Not(conds ...gen.Condition) ITaskDo + Or(conds ...gen.Condition) ITaskDo + Select(conds ...field.Expr) ITaskDo + Where(conds ...gen.Condition) ITaskDo + Order(conds ...field.Expr) ITaskDo + Distinct(cols ...field.Expr) ITaskDo + Omit(cols ...field.Expr) ITaskDo + Join(table schema.Tabler, on ...field.Expr) ITaskDo + LeftJoin(table schema.Tabler, on ...field.Expr) ITaskDo + RightJoin(table schema.Tabler, on ...field.Expr) ITaskDo + Group(cols ...field.Expr) ITaskDo + Having(conds ...gen.Condition) ITaskDo + Limit(limit int) ITaskDo + Offset(offset int) ITaskDo + Count() (count int64, err error) + Scopes(funcs ...func(gen.Dao) gen.Dao) ITaskDo + Unscoped() ITaskDo + Create(values ...*models.Task) error + CreateInBatches(values []*models.Task, batchSize int) error + Save(values ...*models.Task) error + First() (*models.Task, error) + Take() (*models.Task, error) + Last() (*models.Task, error) + Find() ([]*models.Task, error) + FindInBatch(batchSize int, fc func(tx gen.Dao, batch int) error) (results []*models.Task, err error) + FindInBatches(result *[]*models.Task, batchSize int, fc func(tx gen.Dao, batch int) error) error + Pluck(column field.Expr, dest interface{}) error + Delete(...*models.Task) (info gen.ResultInfo, err error) + Update(column field.Expr, value interface{}) (info gen.ResultInfo, err error) + UpdateSimple(columns ...field.AssignExpr) (info gen.ResultInfo, err error) + Updates(value interface{}) (info gen.ResultInfo, err error) + UpdateColumn(column field.Expr, value interface{}) (info gen.ResultInfo, err error) + UpdateColumnSimple(columns ...field.AssignExpr) (info gen.ResultInfo, err error) + UpdateColumns(value interface{}) (info gen.ResultInfo, err error) + UpdateFrom(q gen.SubQuery) gen.Dao + Attrs(attrs ...field.AssignExpr) ITaskDo + Assign(attrs ...field.AssignExpr) ITaskDo + Joins(fields ...field.RelationField) ITaskDo + Preload(fields ...field.RelationField) ITaskDo + FirstOrInit() (*models.Task, error) + FirstOrCreate() (*models.Task, error) + FindByPage(offset int, limit int) (result []*models.Task, count int64, err error) + ScanByPage(result interface{}, offset int, limit int) (count int64, err error) + Scan(result interface{}) (err error) + Returning(value interface{}, columns ...string) ITaskDo + UnderlyingDB() *gorm.DB + schema.Tabler +} + +func (t taskDo) Debug() ITaskDo { + return t.withDO(t.DO.Debug()) +} + +func (t taskDo) WithContext(ctx context.Context) ITaskDo { + return t.withDO(t.DO.WithContext(ctx)) +} + +func (t taskDo) ReadDB() ITaskDo { + return t.Clauses(dbresolver.Read) +} + +func (t taskDo) WriteDB() ITaskDo { + return t.Clauses(dbresolver.Write) +} + +func (t taskDo) Session(config *gorm.Session) ITaskDo { + return t.withDO(t.DO.Session(config)) +} + +func (t taskDo) Clauses(conds ...clause.Expression) ITaskDo { + return t.withDO(t.DO.Clauses(conds...)) +} + +func (t taskDo) Returning(value interface{}, columns ...string) ITaskDo { + return t.withDO(t.DO.Returning(value, columns...)) +} + +func (t taskDo) Not(conds ...gen.Condition) ITaskDo { + return t.withDO(t.DO.Not(conds...)) +} + +func (t taskDo) Or(conds ...gen.Condition) ITaskDo { + return t.withDO(t.DO.Or(conds...)) +} + +func (t taskDo) Select(conds ...field.Expr) ITaskDo { + return t.withDO(t.DO.Select(conds...)) +} + +func (t taskDo) Where(conds ...gen.Condition) ITaskDo { + return t.withDO(t.DO.Where(conds...)) +} + +func (t taskDo) Order(conds ...field.Expr) ITaskDo { + return t.withDO(t.DO.Order(conds...)) +} + +func (t taskDo) Distinct(cols ...field.Expr) ITaskDo { + return t.withDO(t.DO.Distinct(cols...)) +} + +func (t taskDo) Omit(cols ...field.Expr) ITaskDo { + return t.withDO(t.DO.Omit(cols...)) +} + +func (t taskDo) Join(table schema.Tabler, on ...field.Expr) ITaskDo { + return t.withDO(t.DO.Join(table, on...)) +} + +func (t taskDo) LeftJoin(table schema.Tabler, on ...field.Expr) ITaskDo { + return t.withDO(t.DO.LeftJoin(table, on...)) +} + +func (t taskDo) RightJoin(table schema.Tabler, on ...field.Expr) ITaskDo { + return t.withDO(t.DO.RightJoin(table, on...)) +} + +func (t taskDo) Group(cols ...field.Expr) ITaskDo { + return t.withDO(t.DO.Group(cols...)) +} + +func (t taskDo) Having(conds ...gen.Condition) ITaskDo { + return t.withDO(t.DO.Having(conds...)) +} + +func (t taskDo) Limit(limit int) ITaskDo { + return t.withDO(t.DO.Limit(limit)) +} + +func (t taskDo) Offset(offset int) ITaskDo { + return t.withDO(t.DO.Offset(offset)) +} + +func (t taskDo) Scopes(funcs ...func(gen.Dao) gen.Dao) ITaskDo { + return t.withDO(t.DO.Scopes(funcs...)) +} + +func (t taskDo) Unscoped() ITaskDo { + return t.withDO(t.DO.Unscoped()) +} + +func (t taskDo) Create(values ...*models.Task) error { + if len(values) == 0 { + return nil + } + return t.DO.Create(values) +} + +func (t taskDo) CreateInBatches(values []*models.Task, batchSize int) error { + return t.DO.CreateInBatches(values, batchSize) +} + +// Save : !!! underlying implementation is different with GORM +// The method is equivalent to executing the statement: db.Clauses(clause.OnConflict{UpdateAll: true}).Create(values) +func (t taskDo) Save(values ...*models.Task) error { + if len(values) == 0 { + return nil + } + return t.DO.Save(values) +} + +func (t taskDo) First() (*models.Task, error) { + if result, err := t.DO.First(); err != nil { + return nil, err + } else { + return result.(*models.Task), nil + } +} + +func (t taskDo) Take() (*models.Task, error) { + if result, err := t.DO.Take(); err != nil { + return nil, err + } else { + return result.(*models.Task), nil + } +} + +func (t taskDo) Last() (*models.Task, error) { + if result, err := t.DO.Last(); err != nil { + return nil, err + } else { + return result.(*models.Task), nil + } +} + +func (t taskDo) Find() ([]*models.Task, error) { + result, err := t.DO.Find() + return result.([]*models.Task), err +} + +func (t taskDo) FindInBatch(batchSize int, fc func(tx gen.Dao, batch int) error) (results []*models.Task, err error) { + buf := make([]*models.Task, 0, batchSize) + err = t.DO.FindInBatches(&buf, batchSize, func(tx gen.Dao, batch int) error { + defer func() { results = append(results, buf...) }() + return fc(tx, batch) + }) + return results, err +} + +func (t taskDo) FindInBatches(result *[]*models.Task, batchSize int, fc func(tx gen.Dao, batch int) error) error { + return t.DO.FindInBatches(result, batchSize, fc) +} + +func (t taskDo) Attrs(attrs ...field.AssignExpr) ITaskDo { + return t.withDO(t.DO.Attrs(attrs...)) +} + +func (t taskDo) Assign(attrs ...field.AssignExpr) ITaskDo { + return t.withDO(t.DO.Assign(attrs...)) +} + +func (t taskDo) Joins(fields ...field.RelationField) ITaskDo { + for _, _f := range fields { + t = *t.withDO(t.DO.Joins(_f)) + } + return &t +} + +func (t taskDo) Preload(fields ...field.RelationField) ITaskDo { + for _, _f := range fields { + t = *t.withDO(t.DO.Preload(_f)) + } + return &t +} + +func (t taskDo) FirstOrInit() (*models.Task, error) { + if result, err := t.DO.FirstOrInit(); err != nil { + return nil, err + } else { + return result.(*models.Task), nil + } +} + +func (t taskDo) FirstOrCreate() (*models.Task, error) { + if result, err := t.DO.FirstOrCreate(); err != nil { + return nil, err + } else { + return result.(*models.Task), nil + } +} + +func (t taskDo) FindByPage(offset int, limit int) (result []*models.Task, count int64, err error) { + result, err = t.Offset(offset).Limit(limit).Find() + if err != nil { + return + } + + if size := len(result); 0 < limit && 0 < size && size < limit { + count = int64(size + offset) + return + } + + count, err = t.Offset(-1).Limit(-1).Count() + return +} + +func (t taskDo) ScanByPage(result interface{}, offset int, limit int) (count int64, err error) { + count, err = t.Count() + if err != nil { + return + } + + err = t.Offset(offset).Limit(limit).Scan(result) + return +} + +func (t taskDo) Scan(result interface{}) (err error) { + return t.DO.Scan(result) +} + +func (t taskDo) Delete(models ...*models.Task) (result gen.ResultInfo, err error) { + return t.DO.Delete(models) +} + +func (t *taskDo) withDO(do gen.Dao) *taskDo { + t.DO = *do.(*gen.DO) + return t +} diff --git a/internal/dal/tasks.gen_test.go b/internal/dal/tasks.gen_test.go new file mode 100644 index 0000000..f3a9072 --- /dev/null +++ b/internal/dal/tasks.gen_test.go @@ -0,0 +1,145 @@ +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. + +package dal + +import ( + "app/internal/models" + "context" + "fmt" + "testing" + + "gorm.io/gen" + "gorm.io/gen/field" + "gorm.io/gorm/clause" +) + +func init() { + InitializeDB() + err := _gen_test_db.AutoMigrate(&models.Task{}) + if err != nil { + fmt.Printf("Error: AutoMigrate(&models.Task{}) fail: %s", err) + } +} + +func Test_taskQuery(t *testing.T) { + task := newTask(_gen_test_db) + task = *task.As(task.TableName()) + _do := task.WithContext(context.Background()).Debug() + + primaryKey := field.NewString(task.TableName(), clause.PrimaryKey) + _, err := _do.Unscoped().Where(primaryKey.IsNotNull()).Delete() + if err != nil { + t.Error("clean table fail:", err) + return + } + + _, ok := task.GetFieldByName("") + if ok { + t.Error("GetFieldByName(\"\") from task success") + } + + err = _do.Create(&models.Task{}) + if err != nil { + t.Error("create item in table fail:", err) + } + + err = _do.Save(&models.Task{}) + if err != nil { + t.Error("create item in table fail:", err) + } + + err = _do.CreateInBatches([]*models.Task{{}, {}}, 10) + if err != nil { + t.Error("create item in table fail:", err) + } + + _, err = _do.Select(task.ALL).Take() + if err != nil { + t.Error("Take() on table fail:", err) + } + + _, err = _do.First() + if err != nil { + t.Error("First() on table fail:", err) + } + + _, err = _do.Last() + if err != nil { + t.Error("First() on table fail:", err) + } + + _, err = _do.Where(primaryKey.IsNotNull()).FindInBatch(10, func(tx gen.Dao, batch int) error { return nil }) + if err != nil { + t.Error("FindInBatch() on table fail:", err) + } + + err = _do.Where(primaryKey.IsNotNull()).FindInBatches(&[]*models.Task{}, 10, func(tx gen.Dao, batch int) error { return nil }) + if err != nil { + t.Error("FindInBatches() on table fail:", err) + } + + _, err = _do.Select(task.ALL).Where(primaryKey.IsNotNull()).Order(primaryKey.Desc()).Find() + if err != nil { + t.Error("Find() on table fail:", err) + } + + _, err = _do.Distinct(primaryKey).Take() + if err != nil { + t.Error("select Distinct() on table fail:", err) + } + + _, err = _do.Select(task.ALL).Omit(primaryKey).Take() + if err != nil { + t.Error("Omit() on table fail:", err) + } + + _, err = _do.Group(primaryKey).Find() + if err != nil { + t.Error("Group() on table fail:", err) + } + + _, err = _do.Scopes(func(dao gen.Dao) gen.Dao { return dao.Where(primaryKey.IsNotNull()) }).Find() + if err != nil { + t.Error("Scopes() on table fail:", err) + } + + _, _, err = _do.FindByPage(0, 1) + if err != nil { + t.Error("FindByPage() on table fail:", err) + } + + _, err = _do.ScanByPage(&models.Task{}, 0, 1) + if err != nil { + t.Error("ScanByPage() on table fail:", err) + } + + _, err = _do.Attrs(primaryKey).Assign(primaryKey).FirstOrInit() + if err != nil { + t.Error("FirstOrInit() on table fail:", err) + } + + _, err = _do.Attrs(primaryKey).Assign(primaryKey).FirstOrCreate() + if err != nil { + t.Error("FirstOrCreate() on table fail:", err) + } + + var _a _another + var _aPK = field.NewString(_a.TableName(), "id") + + err = _do.Join(&_a, primaryKey.EqCol(_aPK)).Scan(map[string]interface{}{}) + if err != nil { + t.Error("Join() on table fail:", err) + } + + err = _do.LeftJoin(&_a, primaryKey.EqCol(_aPK)).Scan(map[string]interface{}{}) + if err != nil { + t.Error("LeftJoin() on table fail:", err) + } + + _, err = _do.Not().Or().Clauses().Take() + if err != nil { + t.Error("Not/Or/Clauses on table fail:", err) + } +} diff --git a/internal/dal/team_tasks.gen.go b/internal/dal/team_tasks.gen.go new file mode 100644 index 0000000..cea66c1 --- /dev/null +++ b/internal/dal/team_tasks.gen.go @@ -0,0 +1,1131 @@ +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. + +package dal + +import ( + "app/internal/models" + "context" + + "gorm.io/gorm" + "gorm.io/gorm/clause" + "gorm.io/gorm/schema" + + "gorm.io/gen" + "gorm.io/gen/field" + + "gorm.io/plugin/dbresolver" +) + +func newTeamTask(db *gorm.DB, opts ...gen.DOOption) teamTask { + _teamTask := teamTask{} + + _teamTask.teamTaskDo.UseDB(db, opts...) + _teamTask.teamTaskDo.UseModel(&models.TeamTask{}) + + tableName := _teamTask.teamTaskDo.TableName() + _teamTask.ALL = field.NewAsterisk(tableName) + _teamTask.Id = field.NewUint(tableName, "id") + _teamTask.TeamTypeId = field.NewUint(tableName, "team_type_id") + _teamTask.TeamLeaderId = field.NewUint(tableName, "team_leader_id") + _teamTask.WorkStartDate = field.NewInt64(tableName, "work_start_date") + _teamTask.WorkAreaId = field.NewUint(tableName, "work_area_id") + _teamTask.ShiftDuties = field.NewString(tableName, "shift_duties") + _teamTask.TeamType = teamTaskBelongsToTeamType{ + db: db.Session(&gorm.Session{}), + + RelationField: field.NewRelation("TeamType", "models.TeamType"), + } + + _teamTask.TeamLeader = teamTaskBelongsToTeamLeader{ + db: db.Session(&gorm.Session{}), + + RelationField: field.NewRelation("TeamLeader", "models.Worker"), + Workshop: struct { + field.RelationField + WorkAreas struct { + field.RelationField + Workshop struct { + field.RelationField + } + PrepTasks struct { + field.RelationField + Task struct { + field.RelationField + ProductType struct { + field.RelationField + } + Order struct { + field.RelationField + ProductType struct { + field.RelationField + } + Customer struct { + field.RelationField + Orders struct { + field.RelationField + } + } + Tasks struct { + field.RelationField + } + } + PrepTasks struct { + field.RelationField + } + Workshops struct { + field.RelationField + } + } + WorkArea struct { + field.RelationField + } + } + Shifts struct { + field.RelationField + ProductType struct { + field.RelationField + } + WorkArea struct { + field.RelationField + } + } + TeamTasks struct { + field.RelationField + TeamType struct { + field.RelationField + } + TeamLeader struct { + field.RelationField + } + WorkArea struct { + field.RelationField + } + TeamMembers struct { + field.RelationField + } + } + } + Workers struct { + field.RelationField + } + Tasks struct { + field.RelationField + } + }{ + RelationField: field.NewRelation("TeamLeader.Workshop", "models.Workshop"), + WorkAreas: struct { + field.RelationField + Workshop struct { + field.RelationField + } + PrepTasks struct { + field.RelationField + Task struct { + field.RelationField + ProductType struct { + field.RelationField + } + Order struct { + field.RelationField + ProductType struct { + field.RelationField + } + Customer struct { + field.RelationField + Orders struct { + field.RelationField + } + } + Tasks struct { + field.RelationField + } + } + PrepTasks struct { + field.RelationField + } + Workshops struct { + field.RelationField + } + } + WorkArea struct { + field.RelationField + } + } + Shifts struct { + field.RelationField + ProductType struct { + field.RelationField + } + WorkArea struct { + field.RelationField + } + } + TeamTasks struct { + field.RelationField + TeamType struct { + field.RelationField + } + TeamLeader struct { + field.RelationField + } + WorkArea struct { + field.RelationField + } + TeamMembers struct { + field.RelationField + } + } + }{ + RelationField: field.NewRelation("TeamLeader.Workshop.WorkAreas", "models.WorkArea"), + Workshop: struct { + field.RelationField + }{ + RelationField: field.NewRelation("TeamLeader.Workshop.WorkAreas.Workshop", "models.Workshop"), + }, + PrepTasks: struct { + field.RelationField + Task struct { + field.RelationField + ProductType struct { + field.RelationField + } + Order struct { + field.RelationField + ProductType struct { + field.RelationField + } + Customer struct { + field.RelationField + Orders struct { + field.RelationField + } + } + Tasks struct { + field.RelationField + } + } + PrepTasks struct { + field.RelationField + } + Workshops struct { + field.RelationField + } + } + WorkArea struct { + field.RelationField + } + }{ + RelationField: field.NewRelation("TeamLeader.Workshop.WorkAreas.PrepTasks", "models.PrepTask"), + Task: struct { + field.RelationField + ProductType struct { + field.RelationField + } + Order struct { + field.RelationField + ProductType struct { + field.RelationField + } + Customer struct { + field.RelationField + Orders struct { + field.RelationField + } + } + Tasks struct { + field.RelationField + } + } + PrepTasks struct { + field.RelationField + } + Workshops struct { + field.RelationField + } + }{ + RelationField: field.NewRelation("TeamLeader.Workshop.WorkAreas.PrepTasks.Task", "models.Task"), + ProductType: struct { + field.RelationField + }{ + RelationField: field.NewRelation("TeamLeader.Workshop.WorkAreas.PrepTasks.Task.ProductType", "models.ProductType"), + }, + Order: struct { + field.RelationField + ProductType struct { + field.RelationField + } + Customer struct { + field.RelationField + Orders struct { + field.RelationField + } + } + Tasks struct { + field.RelationField + } + }{ + RelationField: field.NewRelation("TeamLeader.Workshop.WorkAreas.PrepTasks.Task.Order", "models.Order"), + ProductType: struct { + field.RelationField + }{ + RelationField: field.NewRelation("TeamLeader.Workshop.WorkAreas.PrepTasks.Task.Order.ProductType", "models.ProductType"), + }, + Customer: struct { + field.RelationField + Orders struct { + field.RelationField + } + }{ + RelationField: field.NewRelation("TeamLeader.Workshop.WorkAreas.PrepTasks.Task.Order.Customer", "models.Customer"), + Orders: struct { + field.RelationField + }{ + RelationField: field.NewRelation("TeamLeader.Workshop.WorkAreas.PrepTasks.Task.Order.Customer.Orders", "models.Order"), + }, + }, + Tasks: struct { + field.RelationField + }{ + RelationField: field.NewRelation("TeamLeader.Workshop.WorkAreas.PrepTasks.Task.Order.Tasks", "models.Task"), + }, + }, + PrepTasks: struct { + field.RelationField + }{ + RelationField: field.NewRelation("TeamLeader.Workshop.WorkAreas.PrepTasks.Task.PrepTasks", "models.PrepTask"), + }, + Workshops: struct { + field.RelationField + }{ + RelationField: field.NewRelation("TeamLeader.Workshop.WorkAreas.PrepTasks.Task.Workshops", "models.Workshop"), + }, + }, + WorkArea: struct { + field.RelationField + }{ + RelationField: field.NewRelation("TeamLeader.Workshop.WorkAreas.PrepTasks.WorkArea", "models.WorkArea"), + }, + }, + Shifts: struct { + field.RelationField + ProductType struct { + field.RelationField + } + WorkArea struct { + field.RelationField + } + }{ + RelationField: field.NewRelation("TeamLeader.Workshop.WorkAreas.Shifts", "models.Shift"), + ProductType: struct { + field.RelationField + }{ + RelationField: field.NewRelation("TeamLeader.Workshop.WorkAreas.Shifts.ProductType", "models.ProductType"), + }, + WorkArea: struct { + field.RelationField + }{ + RelationField: field.NewRelation("TeamLeader.Workshop.WorkAreas.Shifts.WorkArea", "models.WorkArea"), + }, + }, + TeamTasks: struct { + field.RelationField + TeamType struct { + field.RelationField + } + TeamLeader struct { + field.RelationField + } + WorkArea struct { + field.RelationField + } + TeamMembers struct { + field.RelationField + } + }{ + RelationField: field.NewRelation("TeamLeader.Workshop.WorkAreas.TeamTasks", "models.TeamTask"), + TeamType: struct { + field.RelationField + }{ + RelationField: field.NewRelation("TeamLeader.Workshop.WorkAreas.TeamTasks.TeamType", "models.TeamType"), + }, + TeamLeader: struct { + field.RelationField + }{ + RelationField: field.NewRelation("TeamLeader.Workshop.WorkAreas.TeamTasks.TeamLeader", "models.Worker"), + }, + WorkArea: struct { + field.RelationField + }{ + RelationField: field.NewRelation("TeamLeader.Workshop.WorkAreas.TeamTasks.WorkArea", "models.WorkArea"), + }, + TeamMembers: struct { + field.RelationField + }{ + RelationField: field.NewRelation("TeamLeader.Workshop.WorkAreas.TeamTasks.TeamMembers", "models.Worker"), + }, + }, + }, + Workers: struct { + field.RelationField + }{ + RelationField: field.NewRelation("TeamLeader.Workshop.Workers", "models.Worker"), + }, + Tasks: struct { + field.RelationField + }{ + RelationField: field.NewRelation("TeamLeader.Workshop.Tasks", "models.Task"), + }, + }, + TeamTasks: struct { + field.RelationField + }{ + RelationField: field.NewRelation("TeamLeader.TeamTasks", "models.TeamTask"), + }, + } + + _teamTask.WorkArea = teamTaskBelongsToWorkArea{ + db: db.Session(&gorm.Session{}), + + RelationField: field.NewRelation("WorkArea", "models.WorkArea"), + } + + _teamTask.TeamMembers = teamTaskManyToManyTeamMembers{ + db: db.Session(&gorm.Session{}), + + RelationField: field.NewRelation("TeamMembers", "models.Worker"), + } + + _teamTask.fillFieldMap() + + return _teamTask +} + +type teamTask struct { + teamTaskDo + + ALL field.Asterisk + Id field.Uint + TeamTypeId field.Uint + TeamLeaderId field.Uint + WorkStartDate field.Int64 + WorkAreaId field.Uint + ShiftDuties field.String + TeamType teamTaskBelongsToTeamType + + TeamLeader teamTaskBelongsToTeamLeader + + WorkArea teamTaskBelongsToWorkArea + + TeamMembers teamTaskManyToManyTeamMembers + + fieldMap map[string]field.Expr +} + +func (t teamTask) Table(newTableName string) *teamTask { + t.teamTaskDo.UseTable(newTableName) + return t.updateTableName(newTableName) +} + +func (t teamTask) As(alias string) *teamTask { + t.teamTaskDo.DO = *(t.teamTaskDo.As(alias).(*gen.DO)) + return t.updateTableName(alias) +} + +func (t *teamTask) updateTableName(table string) *teamTask { + t.ALL = field.NewAsterisk(table) + t.Id = field.NewUint(table, "id") + t.TeamTypeId = field.NewUint(table, "team_type_id") + t.TeamLeaderId = field.NewUint(table, "team_leader_id") + t.WorkStartDate = field.NewInt64(table, "work_start_date") + t.WorkAreaId = field.NewUint(table, "work_area_id") + t.ShiftDuties = field.NewString(table, "shift_duties") + + t.fillFieldMap() + + return t +} + +func (t *teamTask) GetFieldByName(fieldName string) (field.OrderExpr, bool) { + _f, ok := t.fieldMap[fieldName] + if !ok || _f == nil { + return nil, false + } + _oe, ok := _f.(field.OrderExpr) + return _oe, ok +} + +func (t *teamTask) fillFieldMap() { + t.fieldMap = make(map[string]field.Expr, 10) + t.fieldMap["id"] = t.Id + t.fieldMap["team_type_id"] = t.TeamTypeId + t.fieldMap["team_leader_id"] = t.TeamLeaderId + t.fieldMap["work_start_date"] = t.WorkStartDate + t.fieldMap["work_area_id"] = t.WorkAreaId + t.fieldMap["shift_duties"] = t.ShiftDuties + +} + +func (t teamTask) clone(db *gorm.DB) teamTask { + t.teamTaskDo.ReplaceConnPool(db.Statement.ConnPool) + return t +} + +func (t teamTask) replaceDB(db *gorm.DB) teamTask { + t.teamTaskDo.ReplaceDB(db) + return t +} + +type teamTaskBelongsToTeamType struct { + db *gorm.DB + + field.RelationField +} + +func (a teamTaskBelongsToTeamType) Where(conds ...field.Expr) *teamTaskBelongsToTeamType { + if len(conds) == 0 { + return &a + } + + exprs := make([]clause.Expression, 0, len(conds)) + for _, cond := range conds { + exprs = append(exprs, cond.BeCond().(clause.Expression)) + } + a.db = a.db.Clauses(clause.Where{Exprs: exprs}) + return &a +} + +func (a teamTaskBelongsToTeamType) WithContext(ctx context.Context) *teamTaskBelongsToTeamType { + a.db = a.db.WithContext(ctx) + return &a +} + +func (a teamTaskBelongsToTeamType) Session(session *gorm.Session) *teamTaskBelongsToTeamType { + a.db = a.db.Session(session) + return &a +} + +func (a teamTaskBelongsToTeamType) Model(m *models.TeamTask) *teamTaskBelongsToTeamTypeTx { + return &teamTaskBelongsToTeamTypeTx{a.db.Model(m).Association(a.Name())} +} + +type teamTaskBelongsToTeamTypeTx struct{ tx *gorm.Association } + +func (a teamTaskBelongsToTeamTypeTx) Find() (result *models.TeamType, err error) { + return result, a.tx.Find(&result) +} + +func (a teamTaskBelongsToTeamTypeTx) Append(values ...*models.TeamType) (err error) { + targetValues := make([]interface{}, len(values)) + for i, v := range values { + targetValues[i] = v + } + return a.tx.Append(targetValues...) +} + +func (a teamTaskBelongsToTeamTypeTx) Replace(values ...*models.TeamType) (err error) { + targetValues := make([]interface{}, len(values)) + for i, v := range values { + targetValues[i] = v + } + return a.tx.Replace(targetValues...) +} + +func (a teamTaskBelongsToTeamTypeTx) Delete(values ...*models.TeamType) (err error) { + targetValues := make([]interface{}, len(values)) + for i, v := range values { + targetValues[i] = v + } + return a.tx.Delete(targetValues...) +} + +func (a teamTaskBelongsToTeamTypeTx) Clear() error { + return a.tx.Clear() +} + +func (a teamTaskBelongsToTeamTypeTx) Count() int64 { + return a.tx.Count() +} + +type teamTaskBelongsToTeamLeader struct { + db *gorm.DB + + field.RelationField + + Workshop struct { + field.RelationField + WorkAreas struct { + field.RelationField + Workshop struct { + field.RelationField + } + PrepTasks struct { + field.RelationField + Task struct { + field.RelationField + ProductType struct { + field.RelationField + } + Order struct { + field.RelationField + ProductType struct { + field.RelationField + } + Customer struct { + field.RelationField + Orders struct { + field.RelationField + } + } + Tasks struct { + field.RelationField + } + } + PrepTasks struct { + field.RelationField + } + Workshops struct { + field.RelationField + } + } + WorkArea struct { + field.RelationField + } + } + Shifts struct { + field.RelationField + ProductType struct { + field.RelationField + } + WorkArea struct { + field.RelationField + } + } + TeamTasks struct { + field.RelationField + TeamType struct { + field.RelationField + } + TeamLeader struct { + field.RelationField + } + WorkArea struct { + field.RelationField + } + TeamMembers struct { + field.RelationField + } + } + } + Workers struct { + field.RelationField + } + Tasks struct { + field.RelationField + } + } + TeamTasks struct { + field.RelationField + } +} + +func (a teamTaskBelongsToTeamLeader) Where(conds ...field.Expr) *teamTaskBelongsToTeamLeader { + if len(conds) == 0 { + return &a + } + + exprs := make([]clause.Expression, 0, len(conds)) + for _, cond := range conds { + exprs = append(exprs, cond.BeCond().(clause.Expression)) + } + a.db = a.db.Clauses(clause.Where{Exprs: exprs}) + return &a +} + +func (a teamTaskBelongsToTeamLeader) WithContext(ctx context.Context) *teamTaskBelongsToTeamLeader { + a.db = a.db.WithContext(ctx) + return &a +} + +func (a teamTaskBelongsToTeamLeader) Session(session *gorm.Session) *teamTaskBelongsToTeamLeader { + a.db = a.db.Session(session) + return &a +} + +func (a teamTaskBelongsToTeamLeader) Model(m *models.TeamTask) *teamTaskBelongsToTeamLeaderTx { + return &teamTaskBelongsToTeamLeaderTx{a.db.Model(m).Association(a.Name())} +} + +type teamTaskBelongsToTeamLeaderTx struct{ tx *gorm.Association } + +func (a teamTaskBelongsToTeamLeaderTx) Find() (result *models.Worker, err error) { + return result, a.tx.Find(&result) +} + +func (a teamTaskBelongsToTeamLeaderTx) Append(values ...*models.Worker) (err error) { + targetValues := make([]interface{}, len(values)) + for i, v := range values { + targetValues[i] = v + } + return a.tx.Append(targetValues...) +} + +func (a teamTaskBelongsToTeamLeaderTx) Replace(values ...*models.Worker) (err error) { + targetValues := make([]interface{}, len(values)) + for i, v := range values { + targetValues[i] = v + } + return a.tx.Replace(targetValues...) +} + +func (a teamTaskBelongsToTeamLeaderTx) Delete(values ...*models.Worker) (err error) { + targetValues := make([]interface{}, len(values)) + for i, v := range values { + targetValues[i] = v + } + return a.tx.Delete(targetValues...) +} + +func (a teamTaskBelongsToTeamLeaderTx) Clear() error { + return a.tx.Clear() +} + +func (a teamTaskBelongsToTeamLeaderTx) Count() int64 { + return a.tx.Count() +} + +type teamTaskBelongsToWorkArea struct { + db *gorm.DB + + field.RelationField +} + +func (a teamTaskBelongsToWorkArea) Where(conds ...field.Expr) *teamTaskBelongsToWorkArea { + if len(conds) == 0 { + return &a + } + + exprs := make([]clause.Expression, 0, len(conds)) + for _, cond := range conds { + exprs = append(exprs, cond.BeCond().(clause.Expression)) + } + a.db = a.db.Clauses(clause.Where{Exprs: exprs}) + return &a +} + +func (a teamTaskBelongsToWorkArea) WithContext(ctx context.Context) *teamTaskBelongsToWorkArea { + a.db = a.db.WithContext(ctx) + return &a +} + +func (a teamTaskBelongsToWorkArea) Session(session *gorm.Session) *teamTaskBelongsToWorkArea { + a.db = a.db.Session(session) + return &a +} + +func (a teamTaskBelongsToWorkArea) Model(m *models.TeamTask) *teamTaskBelongsToWorkAreaTx { + return &teamTaskBelongsToWorkAreaTx{a.db.Model(m).Association(a.Name())} +} + +type teamTaskBelongsToWorkAreaTx struct{ tx *gorm.Association } + +func (a teamTaskBelongsToWorkAreaTx) Find() (result *models.WorkArea, err error) { + return result, a.tx.Find(&result) +} + +func (a teamTaskBelongsToWorkAreaTx) Append(values ...*models.WorkArea) (err error) { + targetValues := make([]interface{}, len(values)) + for i, v := range values { + targetValues[i] = v + } + return a.tx.Append(targetValues...) +} + +func (a teamTaskBelongsToWorkAreaTx) Replace(values ...*models.WorkArea) (err error) { + targetValues := make([]interface{}, len(values)) + for i, v := range values { + targetValues[i] = v + } + return a.tx.Replace(targetValues...) +} + +func (a teamTaskBelongsToWorkAreaTx) Delete(values ...*models.WorkArea) (err error) { + targetValues := make([]interface{}, len(values)) + for i, v := range values { + targetValues[i] = v + } + return a.tx.Delete(targetValues...) +} + +func (a teamTaskBelongsToWorkAreaTx) Clear() error { + return a.tx.Clear() +} + +func (a teamTaskBelongsToWorkAreaTx) Count() int64 { + return a.tx.Count() +} + +type teamTaskManyToManyTeamMembers struct { + db *gorm.DB + + field.RelationField +} + +func (a teamTaskManyToManyTeamMembers) Where(conds ...field.Expr) *teamTaskManyToManyTeamMembers { + if len(conds) == 0 { + return &a + } + + exprs := make([]clause.Expression, 0, len(conds)) + for _, cond := range conds { + exprs = append(exprs, cond.BeCond().(clause.Expression)) + } + a.db = a.db.Clauses(clause.Where{Exprs: exprs}) + return &a +} + +func (a teamTaskManyToManyTeamMembers) WithContext(ctx context.Context) *teamTaskManyToManyTeamMembers { + a.db = a.db.WithContext(ctx) + return &a +} + +func (a teamTaskManyToManyTeamMembers) Session(session *gorm.Session) *teamTaskManyToManyTeamMembers { + a.db = a.db.Session(session) + return &a +} + +func (a teamTaskManyToManyTeamMembers) Model(m *models.TeamTask) *teamTaskManyToManyTeamMembersTx { + return &teamTaskManyToManyTeamMembersTx{a.db.Model(m).Association(a.Name())} +} + +type teamTaskManyToManyTeamMembersTx struct{ tx *gorm.Association } + +func (a teamTaskManyToManyTeamMembersTx) Find() (result []*models.Worker, err error) { + return result, a.tx.Find(&result) +} + +func (a teamTaskManyToManyTeamMembersTx) Append(values ...*models.Worker) (err error) { + targetValues := make([]interface{}, len(values)) + for i, v := range values { + targetValues[i] = v + } + return a.tx.Append(targetValues...) +} + +func (a teamTaskManyToManyTeamMembersTx) Replace(values ...*models.Worker) (err error) { + targetValues := make([]interface{}, len(values)) + for i, v := range values { + targetValues[i] = v + } + return a.tx.Replace(targetValues...) +} + +func (a teamTaskManyToManyTeamMembersTx) Delete(values ...*models.Worker) (err error) { + targetValues := make([]interface{}, len(values)) + for i, v := range values { + targetValues[i] = v + } + return a.tx.Delete(targetValues...) +} + +func (a teamTaskManyToManyTeamMembersTx) Clear() error { + return a.tx.Clear() +} + +func (a teamTaskManyToManyTeamMembersTx) Count() int64 { + return a.tx.Count() +} + +type teamTaskDo struct{ gen.DO } + +type ITeamTaskDo interface { + gen.SubQuery + Debug() ITeamTaskDo + WithContext(ctx context.Context) ITeamTaskDo + WithResult(fc func(tx gen.Dao)) gen.ResultInfo + ReplaceDB(db *gorm.DB) + ReadDB() ITeamTaskDo + WriteDB() ITeamTaskDo + As(alias string) gen.Dao + Session(config *gorm.Session) ITeamTaskDo + Columns(cols ...field.Expr) gen.Columns + Clauses(conds ...clause.Expression) ITeamTaskDo + Not(conds ...gen.Condition) ITeamTaskDo + Or(conds ...gen.Condition) ITeamTaskDo + Select(conds ...field.Expr) ITeamTaskDo + Where(conds ...gen.Condition) ITeamTaskDo + Order(conds ...field.Expr) ITeamTaskDo + Distinct(cols ...field.Expr) ITeamTaskDo + Omit(cols ...field.Expr) ITeamTaskDo + Join(table schema.Tabler, on ...field.Expr) ITeamTaskDo + LeftJoin(table schema.Tabler, on ...field.Expr) ITeamTaskDo + RightJoin(table schema.Tabler, on ...field.Expr) ITeamTaskDo + Group(cols ...field.Expr) ITeamTaskDo + Having(conds ...gen.Condition) ITeamTaskDo + Limit(limit int) ITeamTaskDo + Offset(offset int) ITeamTaskDo + Count() (count int64, err error) + Scopes(funcs ...func(gen.Dao) gen.Dao) ITeamTaskDo + Unscoped() ITeamTaskDo + Create(values ...*models.TeamTask) error + CreateInBatches(values []*models.TeamTask, batchSize int) error + Save(values ...*models.TeamTask) error + First() (*models.TeamTask, error) + Take() (*models.TeamTask, error) + Last() (*models.TeamTask, error) + Find() ([]*models.TeamTask, error) + FindInBatch(batchSize int, fc func(tx gen.Dao, batch int) error) (results []*models.TeamTask, err error) + FindInBatches(result *[]*models.TeamTask, batchSize int, fc func(tx gen.Dao, batch int) error) error + Pluck(column field.Expr, dest interface{}) error + Delete(...*models.TeamTask) (info gen.ResultInfo, err error) + Update(column field.Expr, value interface{}) (info gen.ResultInfo, err error) + UpdateSimple(columns ...field.AssignExpr) (info gen.ResultInfo, err error) + Updates(value interface{}) (info gen.ResultInfo, err error) + UpdateColumn(column field.Expr, value interface{}) (info gen.ResultInfo, err error) + UpdateColumnSimple(columns ...field.AssignExpr) (info gen.ResultInfo, err error) + UpdateColumns(value interface{}) (info gen.ResultInfo, err error) + UpdateFrom(q gen.SubQuery) gen.Dao + Attrs(attrs ...field.AssignExpr) ITeamTaskDo + Assign(attrs ...field.AssignExpr) ITeamTaskDo + Joins(fields ...field.RelationField) ITeamTaskDo + Preload(fields ...field.RelationField) ITeamTaskDo + FirstOrInit() (*models.TeamTask, error) + FirstOrCreate() (*models.TeamTask, error) + FindByPage(offset int, limit int) (result []*models.TeamTask, count int64, err error) + ScanByPage(result interface{}, offset int, limit int) (count int64, err error) + Scan(result interface{}) (err error) + Returning(value interface{}, columns ...string) ITeamTaskDo + UnderlyingDB() *gorm.DB + schema.Tabler +} + +func (t teamTaskDo) Debug() ITeamTaskDo { + return t.withDO(t.DO.Debug()) +} + +func (t teamTaskDo) WithContext(ctx context.Context) ITeamTaskDo { + return t.withDO(t.DO.WithContext(ctx)) +} + +func (t teamTaskDo) ReadDB() ITeamTaskDo { + return t.Clauses(dbresolver.Read) +} + +func (t teamTaskDo) WriteDB() ITeamTaskDo { + return t.Clauses(dbresolver.Write) +} + +func (t teamTaskDo) Session(config *gorm.Session) ITeamTaskDo { + return t.withDO(t.DO.Session(config)) +} + +func (t teamTaskDo) Clauses(conds ...clause.Expression) ITeamTaskDo { + return t.withDO(t.DO.Clauses(conds...)) +} + +func (t teamTaskDo) Returning(value interface{}, columns ...string) ITeamTaskDo { + return t.withDO(t.DO.Returning(value, columns...)) +} + +func (t teamTaskDo) Not(conds ...gen.Condition) ITeamTaskDo { + return t.withDO(t.DO.Not(conds...)) +} + +func (t teamTaskDo) Or(conds ...gen.Condition) ITeamTaskDo { + return t.withDO(t.DO.Or(conds...)) +} + +func (t teamTaskDo) Select(conds ...field.Expr) ITeamTaskDo { + return t.withDO(t.DO.Select(conds...)) +} + +func (t teamTaskDo) Where(conds ...gen.Condition) ITeamTaskDo { + return t.withDO(t.DO.Where(conds...)) +} + +func (t teamTaskDo) Order(conds ...field.Expr) ITeamTaskDo { + return t.withDO(t.DO.Order(conds...)) +} + +func (t teamTaskDo) Distinct(cols ...field.Expr) ITeamTaskDo { + return t.withDO(t.DO.Distinct(cols...)) +} + +func (t teamTaskDo) Omit(cols ...field.Expr) ITeamTaskDo { + return t.withDO(t.DO.Omit(cols...)) +} + +func (t teamTaskDo) Join(table schema.Tabler, on ...field.Expr) ITeamTaskDo { + return t.withDO(t.DO.Join(table, on...)) +} + +func (t teamTaskDo) LeftJoin(table schema.Tabler, on ...field.Expr) ITeamTaskDo { + return t.withDO(t.DO.LeftJoin(table, on...)) +} + +func (t teamTaskDo) RightJoin(table schema.Tabler, on ...field.Expr) ITeamTaskDo { + return t.withDO(t.DO.RightJoin(table, on...)) +} + +func (t teamTaskDo) Group(cols ...field.Expr) ITeamTaskDo { + return t.withDO(t.DO.Group(cols...)) +} + +func (t teamTaskDo) Having(conds ...gen.Condition) ITeamTaskDo { + return t.withDO(t.DO.Having(conds...)) +} + +func (t teamTaskDo) Limit(limit int) ITeamTaskDo { + return t.withDO(t.DO.Limit(limit)) +} + +func (t teamTaskDo) Offset(offset int) ITeamTaskDo { + return t.withDO(t.DO.Offset(offset)) +} + +func (t teamTaskDo) Scopes(funcs ...func(gen.Dao) gen.Dao) ITeamTaskDo { + return t.withDO(t.DO.Scopes(funcs...)) +} + +func (t teamTaskDo) Unscoped() ITeamTaskDo { + return t.withDO(t.DO.Unscoped()) +} + +func (t teamTaskDo) Create(values ...*models.TeamTask) error { + if len(values) == 0 { + return nil + } + return t.DO.Create(values) +} + +func (t teamTaskDo) CreateInBatches(values []*models.TeamTask, batchSize int) error { + return t.DO.CreateInBatches(values, batchSize) +} + +// Save : !!! underlying implementation is different with GORM +// The method is equivalent to executing the statement: db.Clauses(clause.OnConflict{UpdateAll: true}).Create(values) +func (t teamTaskDo) Save(values ...*models.TeamTask) error { + if len(values) == 0 { + return nil + } + return t.DO.Save(values) +} + +func (t teamTaskDo) First() (*models.TeamTask, error) { + if result, err := t.DO.First(); err != nil { + return nil, err + } else { + return result.(*models.TeamTask), nil + } +} + +func (t teamTaskDo) Take() (*models.TeamTask, error) { + if result, err := t.DO.Take(); err != nil { + return nil, err + } else { + return result.(*models.TeamTask), nil + } +} + +func (t teamTaskDo) Last() (*models.TeamTask, error) { + if result, err := t.DO.Last(); err != nil { + return nil, err + } else { + return result.(*models.TeamTask), nil + } +} + +func (t teamTaskDo) Find() ([]*models.TeamTask, error) { + result, err := t.DO.Find() + return result.([]*models.TeamTask), err +} + +func (t teamTaskDo) FindInBatch(batchSize int, fc func(tx gen.Dao, batch int) error) (results []*models.TeamTask, err error) { + buf := make([]*models.TeamTask, 0, batchSize) + err = t.DO.FindInBatches(&buf, batchSize, func(tx gen.Dao, batch int) error { + defer func() { results = append(results, buf...) }() + return fc(tx, batch) + }) + return results, err +} + +func (t teamTaskDo) FindInBatches(result *[]*models.TeamTask, batchSize int, fc func(tx gen.Dao, batch int) error) error { + return t.DO.FindInBatches(result, batchSize, fc) +} + +func (t teamTaskDo) Attrs(attrs ...field.AssignExpr) ITeamTaskDo { + return t.withDO(t.DO.Attrs(attrs...)) +} + +func (t teamTaskDo) Assign(attrs ...field.AssignExpr) ITeamTaskDo { + return t.withDO(t.DO.Assign(attrs...)) +} + +func (t teamTaskDo) Joins(fields ...field.RelationField) ITeamTaskDo { + for _, _f := range fields { + t = *t.withDO(t.DO.Joins(_f)) + } + return &t +} + +func (t teamTaskDo) Preload(fields ...field.RelationField) ITeamTaskDo { + for _, _f := range fields { + t = *t.withDO(t.DO.Preload(_f)) + } + return &t +} + +func (t teamTaskDo) FirstOrInit() (*models.TeamTask, error) { + if result, err := t.DO.FirstOrInit(); err != nil { + return nil, err + } else { + return result.(*models.TeamTask), nil + } +} + +func (t teamTaskDo) FirstOrCreate() (*models.TeamTask, error) { + if result, err := t.DO.FirstOrCreate(); err != nil { + return nil, err + } else { + return result.(*models.TeamTask), nil + } +} + +func (t teamTaskDo) FindByPage(offset int, limit int) (result []*models.TeamTask, count int64, err error) { + result, err = t.Offset(offset).Limit(limit).Find() + if err != nil { + return + } + + if size := len(result); 0 < limit && 0 < size && size < limit { + count = int64(size + offset) + return + } + + count, err = t.Offset(-1).Limit(-1).Count() + return +} + +func (t teamTaskDo) ScanByPage(result interface{}, offset int, limit int) (count int64, err error) { + count, err = t.Count() + if err != nil { + return + } + + err = t.Offset(offset).Limit(limit).Scan(result) + return +} + +func (t teamTaskDo) Scan(result interface{}) (err error) { + return t.DO.Scan(result) +} + +func (t teamTaskDo) Delete(models ...*models.TeamTask) (result gen.ResultInfo, err error) { + return t.DO.Delete(models) +} + +func (t *teamTaskDo) withDO(do gen.Dao) *teamTaskDo { + t.DO = *do.(*gen.DO) + return t +} diff --git a/internal/dal/team_tasks.gen_test.go b/internal/dal/team_tasks.gen_test.go new file mode 100644 index 0000000..e72fe34 --- /dev/null +++ b/internal/dal/team_tasks.gen_test.go @@ -0,0 +1,145 @@ +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. + +package dal + +import ( + "app/internal/models" + "context" + "fmt" + "testing" + + "gorm.io/gen" + "gorm.io/gen/field" + "gorm.io/gorm/clause" +) + +func init() { + InitializeDB() + err := _gen_test_db.AutoMigrate(&models.TeamTask{}) + if err != nil { + fmt.Printf("Error: AutoMigrate(&models.TeamTask{}) fail: %s", err) + } +} + +func Test_teamTaskQuery(t *testing.T) { + teamTask := newTeamTask(_gen_test_db) + teamTask = *teamTask.As(teamTask.TableName()) + _do := teamTask.WithContext(context.Background()).Debug() + + primaryKey := field.NewString(teamTask.TableName(), clause.PrimaryKey) + _, err := _do.Unscoped().Where(primaryKey.IsNotNull()).Delete() + if err != nil { + t.Error("clean table fail:", err) + return + } + + _, ok := teamTask.GetFieldByName("") + if ok { + t.Error("GetFieldByName(\"\") from teamTask success") + } + + err = _do.Create(&models.TeamTask{}) + if err != nil { + t.Error("create item in table fail:", err) + } + + err = _do.Save(&models.TeamTask{}) + if err != nil { + t.Error("create item in table fail:", err) + } + + err = _do.CreateInBatches([]*models.TeamTask{{}, {}}, 10) + if err != nil { + t.Error("create item in table fail:", err) + } + + _, err = _do.Select(teamTask.ALL).Take() + if err != nil { + t.Error("Take() on table fail:", err) + } + + _, err = _do.First() + if err != nil { + t.Error("First() on table fail:", err) + } + + _, err = _do.Last() + if err != nil { + t.Error("First() on table fail:", err) + } + + _, err = _do.Where(primaryKey.IsNotNull()).FindInBatch(10, func(tx gen.Dao, batch int) error { return nil }) + if err != nil { + t.Error("FindInBatch() on table fail:", err) + } + + err = _do.Where(primaryKey.IsNotNull()).FindInBatches(&[]*models.TeamTask{}, 10, func(tx gen.Dao, batch int) error { return nil }) + if err != nil { + t.Error("FindInBatches() on table fail:", err) + } + + _, err = _do.Select(teamTask.ALL).Where(primaryKey.IsNotNull()).Order(primaryKey.Desc()).Find() + if err != nil { + t.Error("Find() on table fail:", err) + } + + _, err = _do.Distinct(primaryKey).Take() + if err != nil { + t.Error("select Distinct() on table fail:", err) + } + + _, err = _do.Select(teamTask.ALL).Omit(primaryKey).Take() + if err != nil { + t.Error("Omit() on table fail:", err) + } + + _, err = _do.Group(primaryKey).Find() + if err != nil { + t.Error("Group() on table fail:", err) + } + + _, err = _do.Scopes(func(dao gen.Dao) gen.Dao { return dao.Where(primaryKey.IsNotNull()) }).Find() + if err != nil { + t.Error("Scopes() on table fail:", err) + } + + _, _, err = _do.FindByPage(0, 1) + if err != nil { + t.Error("FindByPage() on table fail:", err) + } + + _, err = _do.ScanByPage(&models.TeamTask{}, 0, 1) + if err != nil { + t.Error("ScanByPage() on table fail:", err) + } + + _, err = _do.Attrs(primaryKey).Assign(primaryKey).FirstOrInit() + if err != nil { + t.Error("FirstOrInit() on table fail:", err) + } + + _, err = _do.Attrs(primaryKey).Assign(primaryKey).FirstOrCreate() + if err != nil { + t.Error("FirstOrCreate() on table fail:", err) + } + + var _a _another + var _aPK = field.NewString(_a.TableName(), "id") + + err = _do.Join(&_a, primaryKey.EqCol(_aPK)).Scan(map[string]interface{}{}) + if err != nil { + t.Error("Join() on table fail:", err) + } + + err = _do.LeftJoin(&_a, primaryKey.EqCol(_aPK)).Scan(map[string]interface{}{}) + if err != nil { + t.Error("LeftJoin() on table fail:", err) + } + + _, err = _do.Not().Or().Clauses().Take() + if err != nil { + t.Error("Not/Or/Clauses on table fail:", err) + } +} diff --git a/internal/dal/team_types.gen.go b/internal/dal/team_types.gen.go new file mode 100644 index 0000000..26ef79c --- /dev/null +++ b/internal/dal/team_types.gen.go @@ -0,0 +1,383 @@ +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. + +package dal + +import ( + "app/internal/models" + "context" + + "gorm.io/gorm" + "gorm.io/gorm/clause" + "gorm.io/gorm/schema" + + "gorm.io/gen" + "gorm.io/gen/field" + + "gorm.io/plugin/dbresolver" +) + +func newTeamType(db *gorm.DB, opts ...gen.DOOption) teamType { + _teamType := teamType{} + + _teamType.teamTypeDo.UseDB(db, opts...) + _teamType.teamTypeDo.UseModel(&models.TeamType{}) + + tableName := _teamType.teamTypeDo.TableName() + _teamType.ALL = field.NewAsterisk(tableName) + _teamType.Id = field.NewUint(tableName, "id") + _teamType.Name = field.NewString(tableName, "name") + + _teamType.fillFieldMap() + + return _teamType +} + +type teamType struct { + teamTypeDo + + ALL field.Asterisk + Id field.Uint + Name field.String + + fieldMap map[string]field.Expr +} + +func (t teamType) Table(newTableName string) *teamType { + t.teamTypeDo.UseTable(newTableName) + return t.updateTableName(newTableName) +} + +func (t teamType) As(alias string) *teamType { + t.teamTypeDo.DO = *(t.teamTypeDo.As(alias).(*gen.DO)) + return t.updateTableName(alias) +} + +func (t *teamType) updateTableName(table string) *teamType { + t.ALL = field.NewAsterisk(table) + t.Id = field.NewUint(table, "id") + t.Name = field.NewString(table, "name") + + t.fillFieldMap() + + return t +} + +func (t *teamType) GetFieldByName(fieldName string) (field.OrderExpr, bool) { + _f, ok := t.fieldMap[fieldName] + if !ok || _f == nil { + return nil, false + } + _oe, ok := _f.(field.OrderExpr) + return _oe, ok +} + +func (t *teamType) fillFieldMap() { + t.fieldMap = make(map[string]field.Expr, 2) + t.fieldMap["id"] = t.Id + t.fieldMap["name"] = t.Name +} + +func (t teamType) clone(db *gorm.DB) teamType { + t.teamTypeDo.ReplaceConnPool(db.Statement.ConnPool) + return t +} + +func (t teamType) replaceDB(db *gorm.DB) teamType { + t.teamTypeDo.ReplaceDB(db) + return t +} + +type teamTypeDo struct{ gen.DO } + +type ITeamTypeDo interface { + gen.SubQuery + Debug() ITeamTypeDo + WithContext(ctx context.Context) ITeamTypeDo + WithResult(fc func(tx gen.Dao)) gen.ResultInfo + ReplaceDB(db *gorm.DB) + ReadDB() ITeamTypeDo + WriteDB() ITeamTypeDo + As(alias string) gen.Dao + Session(config *gorm.Session) ITeamTypeDo + Columns(cols ...field.Expr) gen.Columns + Clauses(conds ...clause.Expression) ITeamTypeDo + Not(conds ...gen.Condition) ITeamTypeDo + Or(conds ...gen.Condition) ITeamTypeDo + Select(conds ...field.Expr) ITeamTypeDo + Where(conds ...gen.Condition) ITeamTypeDo + Order(conds ...field.Expr) ITeamTypeDo + Distinct(cols ...field.Expr) ITeamTypeDo + Omit(cols ...field.Expr) ITeamTypeDo + Join(table schema.Tabler, on ...field.Expr) ITeamTypeDo + LeftJoin(table schema.Tabler, on ...field.Expr) ITeamTypeDo + RightJoin(table schema.Tabler, on ...field.Expr) ITeamTypeDo + Group(cols ...field.Expr) ITeamTypeDo + Having(conds ...gen.Condition) ITeamTypeDo + Limit(limit int) ITeamTypeDo + Offset(offset int) ITeamTypeDo + Count() (count int64, err error) + Scopes(funcs ...func(gen.Dao) gen.Dao) ITeamTypeDo + Unscoped() ITeamTypeDo + Create(values ...*models.TeamType) error + CreateInBatches(values []*models.TeamType, batchSize int) error + Save(values ...*models.TeamType) error + First() (*models.TeamType, error) + Take() (*models.TeamType, error) + Last() (*models.TeamType, error) + Find() ([]*models.TeamType, error) + FindInBatch(batchSize int, fc func(tx gen.Dao, batch int) error) (results []*models.TeamType, err error) + FindInBatches(result *[]*models.TeamType, batchSize int, fc func(tx gen.Dao, batch int) error) error + Pluck(column field.Expr, dest interface{}) error + Delete(...*models.TeamType) (info gen.ResultInfo, err error) + Update(column field.Expr, value interface{}) (info gen.ResultInfo, err error) + UpdateSimple(columns ...field.AssignExpr) (info gen.ResultInfo, err error) + Updates(value interface{}) (info gen.ResultInfo, err error) + UpdateColumn(column field.Expr, value interface{}) (info gen.ResultInfo, err error) + UpdateColumnSimple(columns ...field.AssignExpr) (info gen.ResultInfo, err error) + UpdateColumns(value interface{}) (info gen.ResultInfo, err error) + UpdateFrom(q gen.SubQuery) gen.Dao + Attrs(attrs ...field.AssignExpr) ITeamTypeDo + Assign(attrs ...field.AssignExpr) ITeamTypeDo + Joins(fields ...field.RelationField) ITeamTypeDo + Preload(fields ...field.RelationField) ITeamTypeDo + FirstOrInit() (*models.TeamType, error) + FirstOrCreate() (*models.TeamType, error) + FindByPage(offset int, limit int) (result []*models.TeamType, count int64, err error) + ScanByPage(result interface{}, offset int, limit int) (count int64, err error) + Scan(result interface{}) (err error) + Returning(value interface{}, columns ...string) ITeamTypeDo + UnderlyingDB() *gorm.DB + schema.Tabler +} + +func (t teamTypeDo) Debug() ITeamTypeDo { + return t.withDO(t.DO.Debug()) +} + +func (t teamTypeDo) WithContext(ctx context.Context) ITeamTypeDo { + return t.withDO(t.DO.WithContext(ctx)) +} + +func (t teamTypeDo) ReadDB() ITeamTypeDo { + return t.Clauses(dbresolver.Read) +} + +func (t teamTypeDo) WriteDB() ITeamTypeDo { + return t.Clauses(dbresolver.Write) +} + +func (t teamTypeDo) Session(config *gorm.Session) ITeamTypeDo { + return t.withDO(t.DO.Session(config)) +} + +func (t teamTypeDo) Clauses(conds ...clause.Expression) ITeamTypeDo { + return t.withDO(t.DO.Clauses(conds...)) +} + +func (t teamTypeDo) Returning(value interface{}, columns ...string) ITeamTypeDo { + return t.withDO(t.DO.Returning(value, columns...)) +} + +func (t teamTypeDo) Not(conds ...gen.Condition) ITeamTypeDo { + return t.withDO(t.DO.Not(conds...)) +} + +func (t teamTypeDo) Or(conds ...gen.Condition) ITeamTypeDo { + return t.withDO(t.DO.Or(conds...)) +} + +func (t teamTypeDo) Select(conds ...field.Expr) ITeamTypeDo { + return t.withDO(t.DO.Select(conds...)) +} + +func (t teamTypeDo) Where(conds ...gen.Condition) ITeamTypeDo { + return t.withDO(t.DO.Where(conds...)) +} + +func (t teamTypeDo) Order(conds ...field.Expr) ITeamTypeDo { + return t.withDO(t.DO.Order(conds...)) +} + +func (t teamTypeDo) Distinct(cols ...field.Expr) ITeamTypeDo { + return t.withDO(t.DO.Distinct(cols...)) +} + +func (t teamTypeDo) Omit(cols ...field.Expr) ITeamTypeDo { + return t.withDO(t.DO.Omit(cols...)) +} + +func (t teamTypeDo) Join(table schema.Tabler, on ...field.Expr) ITeamTypeDo { + return t.withDO(t.DO.Join(table, on...)) +} + +func (t teamTypeDo) LeftJoin(table schema.Tabler, on ...field.Expr) ITeamTypeDo { + return t.withDO(t.DO.LeftJoin(table, on...)) +} + +func (t teamTypeDo) RightJoin(table schema.Tabler, on ...field.Expr) ITeamTypeDo { + return t.withDO(t.DO.RightJoin(table, on...)) +} + +func (t teamTypeDo) Group(cols ...field.Expr) ITeamTypeDo { + return t.withDO(t.DO.Group(cols...)) +} + +func (t teamTypeDo) Having(conds ...gen.Condition) ITeamTypeDo { + return t.withDO(t.DO.Having(conds...)) +} + +func (t teamTypeDo) Limit(limit int) ITeamTypeDo { + return t.withDO(t.DO.Limit(limit)) +} + +func (t teamTypeDo) Offset(offset int) ITeamTypeDo { + return t.withDO(t.DO.Offset(offset)) +} + +func (t teamTypeDo) Scopes(funcs ...func(gen.Dao) gen.Dao) ITeamTypeDo { + return t.withDO(t.DO.Scopes(funcs...)) +} + +func (t teamTypeDo) Unscoped() ITeamTypeDo { + return t.withDO(t.DO.Unscoped()) +} + +func (t teamTypeDo) Create(values ...*models.TeamType) error { + if len(values) == 0 { + return nil + } + return t.DO.Create(values) +} + +func (t teamTypeDo) CreateInBatches(values []*models.TeamType, batchSize int) error { + return t.DO.CreateInBatches(values, batchSize) +} + +// Save : !!! underlying implementation is different with GORM +// The method is equivalent to executing the statement: db.Clauses(clause.OnConflict{UpdateAll: true}).Create(values) +func (t teamTypeDo) Save(values ...*models.TeamType) error { + if len(values) == 0 { + return nil + } + return t.DO.Save(values) +} + +func (t teamTypeDo) First() (*models.TeamType, error) { + if result, err := t.DO.First(); err != nil { + return nil, err + } else { + return result.(*models.TeamType), nil + } +} + +func (t teamTypeDo) Take() (*models.TeamType, error) { + if result, err := t.DO.Take(); err != nil { + return nil, err + } else { + return result.(*models.TeamType), nil + } +} + +func (t teamTypeDo) Last() (*models.TeamType, error) { + if result, err := t.DO.Last(); err != nil { + return nil, err + } else { + return result.(*models.TeamType), nil + } +} + +func (t teamTypeDo) Find() ([]*models.TeamType, error) { + result, err := t.DO.Find() + return result.([]*models.TeamType), err +} + +func (t teamTypeDo) FindInBatch(batchSize int, fc func(tx gen.Dao, batch int) error) (results []*models.TeamType, err error) { + buf := make([]*models.TeamType, 0, batchSize) + err = t.DO.FindInBatches(&buf, batchSize, func(tx gen.Dao, batch int) error { + defer func() { results = append(results, buf...) }() + return fc(tx, batch) + }) + return results, err +} + +func (t teamTypeDo) FindInBatches(result *[]*models.TeamType, batchSize int, fc func(tx gen.Dao, batch int) error) error { + return t.DO.FindInBatches(result, batchSize, fc) +} + +func (t teamTypeDo) Attrs(attrs ...field.AssignExpr) ITeamTypeDo { + return t.withDO(t.DO.Attrs(attrs...)) +} + +func (t teamTypeDo) Assign(attrs ...field.AssignExpr) ITeamTypeDo { + return t.withDO(t.DO.Assign(attrs...)) +} + +func (t teamTypeDo) Joins(fields ...field.RelationField) ITeamTypeDo { + for _, _f := range fields { + t = *t.withDO(t.DO.Joins(_f)) + } + return &t +} + +func (t teamTypeDo) Preload(fields ...field.RelationField) ITeamTypeDo { + for _, _f := range fields { + t = *t.withDO(t.DO.Preload(_f)) + } + return &t +} + +func (t teamTypeDo) FirstOrInit() (*models.TeamType, error) { + if result, err := t.DO.FirstOrInit(); err != nil { + return nil, err + } else { + return result.(*models.TeamType), nil + } +} + +func (t teamTypeDo) FirstOrCreate() (*models.TeamType, error) { + if result, err := t.DO.FirstOrCreate(); err != nil { + return nil, err + } else { + return result.(*models.TeamType), nil + } +} + +func (t teamTypeDo) FindByPage(offset int, limit int) (result []*models.TeamType, count int64, err error) { + result, err = t.Offset(offset).Limit(limit).Find() + if err != nil { + return + } + + if size := len(result); 0 < limit && 0 < size && size < limit { + count = int64(size + offset) + return + } + + count, err = t.Offset(-1).Limit(-1).Count() + return +} + +func (t teamTypeDo) ScanByPage(result interface{}, offset int, limit int) (count int64, err error) { + count, err = t.Count() + if err != nil { + return + } + + err = t.Offset(offset).Limit(limit).Scan(result) + return +} + +func (t teamTypeDo) Scan(result interface{}) (err error) { + return t.DO.Scan(result) +} + +func (t teamTypeDo) Delete(models ...*models.TeamType) (result gen.ResultInfo, err error) { + return t.DO.Delete(models) +} + +func (t *teamTypeDo) withDO(do gen.Dao) *teamTypeDo { + t.DO = *do.(*gen.DO) + return t +} diff --git a/internal/dal/team_types.gen_test.go b/internal/dal/team_types.gen_test.go new file mode 100644 index 0000000..1ffcd93 --- /dev/null +++ b/internal/dal/team_types.gen_test.go @@ -0,0 +1,145 @@ +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. + +package dal + +import ( + "app/internal/models" + "context" + "fmt" + "testing" + + "gorm.io/gen" + "gorm.io/gen/field" + "gorm.io/gorm/clause" +) + +func init() { + InitializeDB() + err := _gen_test_db.AutoMigrate(&models.TeamType{}) + if err != nil { + fmt.Printf("Error: AutoMigrate(&models.TeamType{}) fail: %s", err) + } +} + +func Test_teamTypeQuery(t *testing.T) { + teamType := newTeamType(_gen_test_db) + teamType = *teamType.As(teamType.TableName()) + _do := teamType.WithContext(context.Background()).Debug() + + primaryKey := field.NewString(teamType.TableName(), clause.PrimaryKey) + _, err := _do.Unscoped().Where(primaryKey.IsNotNull()).Delete() + if err != nil { + t.Error("clean table fail:", err) + return + } + + _, ok := teamType.GetFieldByName("") + if ok { + t.Error("GetFieldByName(\"\") from teamType success") + } + + err = _do.Create(&models.TeamType{}) + if err != nil { + t.Error("create item in table fail:", err) + } + + err = _do.Save(&models.TeamType{}) + if err != nil { + t.Error("create item in table fail:", err) + } + + err = _do.CreateInBatches([]*models.TeamType{{}, {}}, 10) + if err != nil { + t.Error("create item in table fail:", err) + } + + _, err = _do.Select(teamType.ALL).Take() + if err != nil { + t.Error("Take() on table fail:", err) + } + + _, err = _do.First() + if err != nil { + t.Error("First() on table fail:", err) + } + + _, err = _do.Last() + if err != nil { + t.Error("First() on table fail:", err) + } + + _, err = _do.Where(primaryKey.IsNotNull()).FindInBatch(10, func(tx gen.Dao, batch int) error { return nil }) + if err != nil { + t.Error("FindInBatch() on table fail:", err) + } + + err = _do.Where(primaryKey.IsNotNull()).FindInBatches(&[]*models.TeamType{}, 10, func(tx gen.Dao, batch int) error { return nil }) + if err != nil { + t.Error("FindInBatches() on table fail:", err) + } + + _, err = _do.Select(teamType.ALL).Where(primaryKey.IsNotNull()).Order(primaryKey.Desc()).Find() + if err != nil { + t.Error("Find() on table fail:", err) + } + + _, err = _do.Distinct(primaryKey).Take() + if err != nil { + t.Error("select Distinct() on table fail:", err) + } + + _, err = _do.Select(teamType.ALL).Omit(primaryKey).Take() + if err != nil { + t.Error("Omit() on table fail:", err) + } + + _, err = _do.Group(primaryKey).Find() + if err != nil { + t.Error("Group() on table fail:", err) + } + + _, err = _do.Scopes(func(dao gen.Dao) gen.Dao { return dao.Where(primaryKey.IsNotNull()) }).Find() + if err != nil { + t.Error("Scopes() on table fail:", err) + } + + _, _, err = _do.FindByPage(0, 1) + if err != nil { + t.Error("FindByPage() on table fail:", err) + } + + _, err = _do.ScanByPage(&models.TeamType{}, 0, 1) + if err != nil { + t.Error("ScanByPage() on table fail:", err) + } + + _, err = _do.Attrs(primaryKey).Assign(primaryKey).FirstOrInit() + if err != nil { + t.Error("FirstOrInit() on table fail:", err) + } + + _, err = _do.Attrs(primaryKey).Assign(primaryKey).FirstOrCreate() + if err != nil { + t.Error("FirstOrCreate() on table fail:", err) + } + + var _a _another + var _aPK = field.NewString(_a.TableName(), "id") + + err = _do.Join(&_a, primaryKey.EqCol(_aPK)).Scan(map[string]interface{}{}) + if err != nil { + t.Error("Join() on table fail:", err) + } + + err = _do.LeftJoin(&_a, primaryKey.EqCol(_aPK)).Scan(map[string]interface{}{}) + if err != nil { + t.Error("LeftJoin() on table fail:", err) + } + + _, err = _do.Not().Or().Clauses().Take() + if err != nil { + t.Error("Not/Or/Clauses on table fail:", err) + } +} diff --git a/internal/dal/work_areas.gen.go b/internal/dal/work_areas.gen.go new file mode 100644 index 0000000..76886b2 --- /dev/null +++ b/internal/dal/work_areas.gen.go @@ -0,0 +1,1106 @@ +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. + +package dal + +import ( + "app/internal/models" + "context" + + "gorm.io/gorm" + "gorm.io/gorm/clause" + "gorm.io/gorm/schema" + + "gorm.io/gen" + "gorm.io/gen/field" + + "gorm.io/plugin/dbresolver" +) + +func newWorkArea(db *gorm.DB, opts ...gen.DOOption) workArea { + _workArea := workArea{} + + _workArea.workAreaDo.UseDB(db, opts...) + _workArea.workAreaDo.UseModel(&models.WorkArea{}) + + tableName := _workArea.workAreaDo.TableName() + _workArea.ALL = field.NewAsterisk(tableName) + _workArea.Id = field.NewUint(tableName, "id") + _workArea.Name = field.NewString(tableName, "name") + _workArea.Description = field.NewString(tableName, "description") + _workArea.Performance = field.NewUint(tableName, "performance") + _workArea.WorkshopId = field.NewUint(tableName, "workshop_id") + _workArea.PrepTasks = workAreaHasManyPrepTasks{ + db: db.Session(&gorm.Session{}), + + RelationField: field.NewRelation("PrepTasks", "models.PrepTask"), + Task: struct { + field.RelationField + ProductType struct { + field.RelationField + } + Order struct { + field.RelationField + ProductType struct { + field.RelationField + } + Customer struct { + field.RelationField + Orders struct { + field.RelationField + } + } + Tasks struct { + field.RelationField + } + } + PrepTasks struct { + field.RelationField + } + Workshops struct { + field.RelationField + WorkAreas struct { + field.RelationField + Workshop struct { + field.RelationField + } + PrepTasks struct { + field.RelationField + } + Shifts struct { + field.RelationField + ProductType struct { + field.RelationField + } + WorkArea struct { + field.RelationField + } + } + TeamTasks struct { + field.RelationField + TeamType struct { + field.RelationField + } + TeamLeader struct { + field.RelationField + Workshop struct { + field.RelationField + } + TeamTasks struct { + field.RelationField + } + } + WorkArea struct { + field.RelationField + } + TeamMembers struct { + field.RelationField + } + } + } + Workers struct { + field.RelationField + } + Tasks struct { + field.RelationField + } + } + }{ + RelationField: field.NewRelation("PrepTasks.Task", "models.Task"), + ProductType: struct { + field.RelationField + }{ + RelationField: field.NewRelation("PrepTasks.Task.ProductType", "models.ProductType"), + }, + Order: struct { + field.RelationField + ProductType struct { + field.RelationField + } + Customer struct { + field.RelationField + Orders struct { + field.RelationField + } + } + Tasks struct { + field.RelationField + } + }{ + RelationField: field.NewRelation("PrepTasks.Task.Order", "models.Order"), + ProductType: struct { + field.RelationField + }{ + RelationField: field.NewRelation("PrepTasks.Task.Order.ProductType", "models.ProductType"), + }, + Customer: struct { + field.RelationField + Orders struct { + field.RelationField + } + }{ + RelationField: field.NewRelation("PrepTasks.Task.Order.Customer", "models.Customer"), + Orders: struct { + field.RelationField + }{ + RelationField: field.NewRelation("PrepTasks.Task.Order.Customer.Orders", "models.Order"), + }, + }, + Tasks: struct { + field.RelationField + }{ + RelationField: field.NewRelation("PrepTasks.Task.Order.Tasks", "models.Task"), + }, + }, + PrepTasks: struct { + field.RelationField + }{ + RelationField: field.NewRelation("PrepTasks.Task.PrepTasks", "models.PrepTask"), + }, + Workshops: struct { + field.RelationField + WorkAreas struct { + field.RelationField + Workshop struct { + field.RelationField + } + PrepTasks struct { + field.RelationField + } + Shifts struct { + field.RelationField + ProductType struct { + field.RelationField + } + WorkArea struct { + field.RelationField + } + } + TeamTasks struct { + field.RelationField + TeamType struct { + field.RelationField + } + TeamLeader struct { + field.RelationField + Workshop struct { + field.RelationField + } + TeamTasks struct { + field.RelationField + } + } + WorkArea struct { + field.RelationField + } + TeamMembers struct { + field.RelationField + } + } + } + Workers struct { + field.RelationField + } + Tasks struct { + field.RelationField + } + }{ + RelationField: field.NewRelation("PrepTasks.Task.Workshops", "models.Workshop"), + WorkAreas: struct { + field.RelationField + Workshop struct { + field.RelationField + } + PrepTasks struct { + field.RelationField + } + Shifts struct { + field.RelationField + ProductType struct { + field.RelationField + } + WorkArea struct { + field.RelationField + } + } + TeamTasks struct { + field.RelationField + TeamType struct { + field.RelationField + } + TeamLeader struct { + field.RelationField + Workshop struct { + field.RelationField + } + TeamTasks struct { + field.RelationField + } + } + WorkArea struct { + field.RelationField + } + TeamMembers struct { + field.RelationField + } + } + }{ + RelationField: field.NewRelation("PrepTasks.Task.Workshops.WorkAreas", "models.WorkArea"), + Workshop: struct { + field.RelationField + }{ + RelationField: field.NewRelation("PrepTasks.Task.Workshops.WorkAreas.Workshop", "models.Workshop"), + }, + PrepTasks: struct { + field.RelationField + }{ + RelationField: field.NewRelation("PrepTasks.Task.Workshops.WorkAreas.PrepTasks", "models.PrepTask"), + }, + Shifts: struct { + field.RelationField + ProductType struct { + field.RelationField + } + WorkArea struct { + field.RelationField + } + }{ + RelationField: field.NewRelation("PrepTasks.Task.Workshops.WorkAreas.Shifts", "models.Shift"), + ProductType: struct { + field.RelationField + }{ + RelationField: field.NewRelation("PrepTasks.Task.Workshops.WorkAreas.Shifts.ProductType", "models.ProductType"), + }, + WorkArea: struct { + field.RelationField + }{ + RelationField: field.NewRelation("PrepTasks.Task.Workshops.WorkAreas.Shifts.WorkArea", "models.WorkArea"), + }, + }, + TeamTasks: struct { + field.RelationField + TeamType struct { + field.RelationField + } + TeamLeader struct { + field.RelationField + Workshop struct { + field.RelationField + } + TeamTasks struct { + field.RelationField + } + } + WorkArea struct { + field.RelationField + } + TeamMembers struct { + field.RelationField + } + }{ + RelationField: field.NewRelation("PrepTasks.Task.Workshops.WorkAreas.TeamTasks", "models.TeamTask"), + TeamType: struct { + field.RelationField + }{ + RelationField: field.NewRelation("PrepTasks.Task.Workshops.WorkAreas.TeamTasks.TeamType", "models.TeamType"), + }, + TeamLeader: struct { + field.RelationField + Workshop struct { + field.RelationField + } + TeamTasks struct { + field.RelationField + } + }{ + RelationField: field.NewRelation("PrepTasks.Task.Workshops.WorkAreas.TeamTasks.TeamLeader", "models.Worker"), + Workshop: struct { + field.RelationField + }{ + RelationField: field.NewRelation("PrepTasks.Task.Workshops.WorkAreas.TeamTasks.TeamLeader.Workshop", "models.Workshop"), + }, + TeamTasks: struct { + field.RelationField + }{ + RelationField: field.NewRelation("PrepTasks.Task.Workshops.WorkAreas.TeamTasks.TeamLeader.TeamTasks", "models.TeamTask"), + }, + }, + WorkArea: struct { + field.RelationField + }{ + RelationField: field.NewRelation("PrepTasks.Task.Workshops.WorkAreas.TeamTasks.WorkArea", "models.WorkArea"), + }, + TeamMembers: struct { + field.RelationField + }{ + RelationField: field.NewRelation("PrepTasks.Task.Workshops.WorkAreas.TeamTasks.TeamMembers", "models.Worker"), + }, + }, + }, + Workers: struct { + field.RelationField + }{ + RelationField: field.NewRelation("PrepTasks.Task.Workshops.Workers", "models.Worker"), + }, + Tasks: struct { + field.RelationField + }{ + RelationField: field.NewRelation("PrepTasks.Task.Workshops.Tasks", "models.Task"), + }, + }, + }, + WorkArea: struct { + field.RelationField + }{ + RelationField: field.NewRelation("PrepTasks.WorkArea", "models.WorkArea"), + }, + } + + _workArea.Shifts = workAreaHasManyShifts{ + db: db.Session(&gorm.Session{}), + + RelationField: field.NewRelation("Shifts", "models.Shift"), + } + + _workArea.TeamTasks = workAreaHasManyTeamTasks{ + db: db.Session(&gorm.Session{}), + + RelationField: field.NewRelation("TeamTasks", "models.TeamTask"), + } + + _workArea.Workshop = workAreaBelongsToWorkshop{ + db: db.Session(&gorm.Session{}), + + RelationField: field.NewRelation("Workshop", "models.Workshop"), + } + + _workArea.fillFieldMap() + + return _workArea +} + +type workArea struct { + workAreaDo + + ALL field.Asterisk + Id field.Uint + Name field.String + Description field.String + Performance field.Uint + WorkshopId field.Uint + PrepTasks workAreaHasManyPrepTasks + + Shifts workAreaHasManyShifts + + TeamTasks workAreaHasManyTeamTasks + + Workshop workAreaBelongsToWorkshop + + fieldMap map[string]field.Expr +} + +func (w workArea) Table(newTableName string) *workArea { + w.workAreaDo.UseTable(newTableName) + return w.updateTableName(newTableName) +} + +func (w workArea) As(alias string) *workArea { + w.workAreaDo.DO = *(w.workAreaDo.As(alias).(*gen.DO)) + return w.updateTableName(alias) +} + +func (w *workArea) updateTableName(table string) *workArea { + w.ALL = field.NewAsterisk(table) + w.Id = field.NewUint(table, "id") + w.Name = field.NewString(table, "name") + w.Description = field.NewString(table, "description") + w.Performance = field.NewUint(table, "performance") + w.WorkshopId = field.NewUint(table, "workshop_id") + + w.fillFieldMap() + + return w +} + +func (w *workArea) GetFieldByName(fieldName string) (field.OrderExpr, bool) { + _f, ok := w.fieldMap[fieldName] + if !ok || _f == nil { + return nil, false + } + _oe, ok := _f.(field.OrderExpr) + return _oe, ok +} + +func (w *workArea) fillFieldMap() { + w.fieldMap = make(map[string]field.Expr, 9) + w.fieldMap["id"] = w.Id + w.fieldMap["name"] = w.Name + w.fieldMap["description"] = w.Description + w.fieldMap["performance"] = w.Performance + w.fieldMap["workshop_id"] = w.WorkshopId + +} + +func (w workArea) clone(db *gorm.DB) workArea { + w.workAreaDo.ReplaceConnPool(db.Statement.ConnPool) + return w +} + +func (w workArea) replaceDB(db *gorm.DB) workArea { + w.workAreaDo.ReplaceDB(db) + return w +} + +type workAreaHasManyPrepTasks struct { + db *gorm.DB + + field.RelationField + + Task struct { + field.RelationField + ProductType struct { + field.RelationField + } + Order struct { + field.RelationField + ProductType struct { + field.RelationField + } + Customer struct { + field.RelationField + Orders struct { + field.RelationField + } + } + Tasks struct { + field.RelationField + } + } + PrepTasks struct { + field.RelationField + } + Workshops struct { + field.RelationField + WorkAreas struct { + field.RelationField + Workshop struct { + field.RelationField + } + PrepTasks struct { + field.RelationField + } + Shifts struct { + field.RelationField + ProductType struct { + field.RelationField + } + WorkArea struct { + field.RelationField + } + } + TeamTasks struct { + field.RelationField + TeamType struct { + field.RelationField + } + TeamLeader struct { + field.RelationField + Workshop struct { + field.RelationField + } + TeamTasks struct { + field.RelationField + } + } + WorkArea struct { + field.RelationField + } + TeamMembers struct { + field.RelationField + } + } + } + Workers struct { + field.RelationField + } + Tasks struct { + field.RelationField + } + } + } + WorkArea struct { + field.RelationField + } +} + +func (a workAreaHasManyPrepTasks) Where(conds ...field.Expr) *workAreaHasManyPrepTasks { + if len(conds) == 0 { + return &a + } + + exprs := make([]clause.Expression, 0, len(conds)) + for _, cond := range conds { + exprs = append(exprs, cond.BeCond().(clause.Expression)) + } + a.db = a.db.Clauses(clause.Where{Exprs: exprs}) + return &a +} + +func (a workAreaHasManyPrepTasks) WithContext(ctx context.Context) *workAreaHasManyPrepTasks { + a.db = a.db.WithContext(ctx) + return &a +} + +func (a workAreaHasManyPrepTasks) Session(session *gorm.Session) *workAreaHasManyPrepTasks { + a.db = a.db.Session(session) + return &a +} + +func (a workAreaHasManyPrepTasks) Model(m *models.WorkArea) *workAreaHasManyPrepTasksTx { + return &workAreaHasManyPrepTasksTx{a.db.Model(m).Association(a.Name())} +} + +type workAreaHasManyPrepTasksTx struct{ tx *gorm.Association } + +func (a workAreaHasManyPrepTasksTx) Find() (result []*models.PrepTask, err error) { + return result, a.tx.Find(&result) +} + +func (a workAreaHasManyPrepTasksTx) Append(values ...*models.PrepTask) (err error) { + targetValues := make([]interface{}, len(values)) + for i, v := range values { + targetValues[i] = v + } + return a.tx.Append(targetValues...) +} + +func (a workAreaHasManyPrepTasksTx) Replace(values ...*models.PrepTask) (err error) { + targetValues := make([]interface{}, len(values)) + for i, v := range values { + targetValues[i] = v + } + return a.tx.Replace(targetValues...) +} + +func (a workAreaHasManyPrepTasksTx) Delete(values ...*models.PrepTask) (err error) { + targetValues := make([]interface{}, len(values)) + for i, v := range values { + targetValues[i] = v + } + return a.tx.Delete(targetValues...) +} + +func (a workAreaHasManyPrepTasksTx) Clear() error { + return a.tx.Clear() +} + +func (a workAreaHasManyPrepTasksTx) Count() int64 { + return a.tx.Count() +} + +type workAreaHasManyShifts struct { + db *gorm.DB + + field.RelationField +} + +func (a workAreaHasManyShifts) Where(conds ...field.Expr) *workAreaHasManyShifts { + if len(conds) == 0 { + return &a + } + + exprs := make([]clause.Expression, 0, len(conds)) + for _, cond := range conds { + exprs = append(exprs, cond.BeCond().(clause.Expression)) + } + a.db = a.db.Clauses(clause.Where{Exprs: exprs}) + return &a +} + +func (a workAreaHasManyShifts) WithContext(ctx context.Context) *workAreaHasManyShifts { + a.db = a.db.WithContext(ctx) + return &a +} + +func (a workAreaHasManyShifts) Session(session *gorm.Session) *workAreaHasManyShifts { + a.db = a.db.Session(session) + return &a +} + +func (a workAreaHasManyShifts) Model(m *models.WorkArea) *workAreaHasManyShiftsTx { + return &workAreaHasManyShiftsTx{a.db.Model(m).Association(a.Name())} +} + +type workAreaHasManyShiftsTx struct{ tx *gorm.Association } + +func (a workAreaHasManyShiftsTx) Find() (result []*models.Shift, err error) { + return result, a.tx.Find(&result) +} + +func (a workAreaHasManyShiftsTx) Append(values ...*models.Shift) (err error) { + targetValues := make([]interface{}, len(values)) + for i, v := range values { + targetValues[i] = v + } + return a.tx.Append(targetValues...) +} + +func (a workAreaHasManyShiftsTx) Replace(values ...*models.Shift) (err error) { + targetValues := make([]interface{}, len(values)) + for i, v := range values { + targetValues[i] = v + } + return a.tx.Replace(targetValues...) +} + +func (a workAreaHasManyShiftsTx) Delete(values ...*models.Shift) (err error) { + targetValues := make([]interface{}, len(values)) + for i, v := range values { + targetValues[i] = v + } + return a.tx.Delete(targetValues...) +} + +func (a workAreaHasManyShiftsTx) Clear() error { + return a.tx.Clear() +} + +func (a workAreaHasManyShiftsTx) Count() int64 { + return a.tx.Count() +} + +type workAreaHasManyTeamTasks struct { + db *gorm.DB + + field.RelationField +} + +func (a workAreaHasManyTeamTasks) Where(conds ...field.Expr) *workAreaHasManyTeamTasks { + if len(conds) == 0 { + return &a + } + + exprs := make([]clause.Expression, 0, len(conds)) + for _, cond := range conds { + exprs = append(exprs, cond.BeCond().(clause.Expression)) + } + a.db = a.db.Clauses(clause.Where{Exprs: exprs}) + return &a +} + +func (a workAreaHasManyTeamTasks) WithContext(ctx context.Context) *workAreaHasManyTeamTasks { + a.db = a.db.WithContext(ctx) + return &a +} + +func (a workAreaHasManyTeamTasks) Session(session *gorm.Session) *workAreaHasManyTeamTasks { + a.db = a.db.Session(session) + return &a +} + +func (a workAreaHasManyTeamTasks) Model(m *models.WorkArea) *workAreaHasManyTeamTasksTx { + return &workAreaHasManyTeamTasksTx{a.db.Model(m).Association(a.Name())} +} + +type workAreaHasManyTeamTasksTx struct{ tx *gorm.Association } + +func (a workAreaHasManyTeamTasksTx) Find() (result []*models.TeamTask, err error) { + return result, a.tx.Find(&result) +} + +func (a workAreaHasManyTeamTasksTx) Append(values ...*models.TeamTask) (err error) { + targetValues := make([]interface{}, len(values)) + for i, v := range values { + targetValues[i] = v + } + return a.tx.Append(targetValues...) +} + +func (a workAreaHasManyTeamTasksTx) Replace(values ...*models.TeamTask) (err error) { + targetValues := make([]interface{}, len(values)) + for i, v := range values { + targetValues[i] = v + } + return a.tx.Replace(targetValues...) +} + +func (a workAreaHasManyTeamTasksTx) Delete(values ...*models.TeamTask) (err error) { + targetValues := make([]interface{}, len(values)) + for i, v := range values { + targetValues[i] = v + } + return a.tx.Delete(targetValues...) +} + +func (a workAreaHasManyTeamTasksTx) Clear() error { + return a.tx.Clear() +} + +func (a workAreaHasManyTeamTasksTx) Count() int64 { + return a.tx.Count() +} + +type workAreaBelongsToWorkshop struct { + db *gorm.DB + + field.RelationField +} + +func (a workAreaBelongsToWorkshop) Where(conds ...field.Expr) *workAreaBelongsToWorkshop { + if len(conds) == 0 { + return &a + } + + exprs := make([]clause.Expression, 0, len(conds)) + for _, cond := range conds { + exprs = append(exprs, cond.BeCond().(clause.Expression)) + } + a.db = a.db.Clauses(clause.Where{Exprs: exprs}) + return &a +} + +func (a workAreaBelongsToWorkshop) WithContext(ctx context.Context) *workAreaBelongsToWorkshop { + a.db = a.db.WithContext(ctx) + return &a +} + +func (a workAreaBelongsToWorkshop) Session(session *gorm.Session) *workAreaBelongsToWorkshop { + a.db = a.db.Session(session) + return &a +} + +func (a workAreaBelongsToWorkshop) Model(m *models.WorkArea) *workAreaBelongsToWorkshopTx { + return &workAreaBelongsToWorkshopTx{a.db.Model(m).Association(a.Name())} +} + +type workAreaBelongsToWorkshopTx struct{ tx *gorm.Association } + +func (a workAreaBelongsToWorkshopTx) Find() (result *models.Workshop, err error) { + return result, a.tx.Find(&result) +} + +func (a workAreaBelongsToWorkshopTx) Append(values ...*models.Workshop) (err error) { + targetValues := make([]interface{}, len(values)) + for i, v := range values { + targetValues[i] = v + } + return a.tx.Append(targetValues...) +} + +func (a workAreaBelongsToWorkshopTx) Replace(values ...*models.Workshop) (err error) { + targetValues := make([]interface{}, len(values)) + for i, v := range values { + targetValues[i] = v + } + return a.tx.Replace(targetValues...) +} + +func (a workAreaBelongsToWorkshopTx) Delete(values ...*models.Workshop) (err error) { + targetValues := make([]interface{}, len(values)) + for i, v := range values { + targetValues[i] = v + } + return a.tx.Delete(targetValues...) +} + +func (a workAreaBelongsToWorkshopTx) Clear() error { + return a.tx.Clear() +} + +func (a workAreaBelongsToWorkshopTx) Count() int64 { + return a.tx.Count() +} + +type workAreaDo struct{ gen.DO } + +type IWorkAreaDo interface { + gen.SubQuery + Debug() IWorkAreaDo + WithContext(ctx context.Context) IWorkAreaDo + WithResult(fc func(tx gen.Dao)) gen.ResultInfo + ReplaceDB(db *gorm.DB) + ReadDB() IWorkAreaDo + WriteDB() IWorkAreaDo + As(alias string) gen.Dao + Session(config *gorm.Session) IWorkAreaDo + Columns(cols ...field.Expr) gen.Columns + Clauses(conds ...clause.Expression) IWorkAreaDo + Not(conds ...gen.Condition) IWorkAreaDo + Or(conds ...gen.Condition) IWorkAreaDo + Select(conds ...field.Expr) IWorkAreaDo + Where(conds ...gen.Condition) IWorkAreaDo + Order(conds ...field.Expr) IWorkAreaDo + Distinct(cols ...field.Expr) IWorkAreaDo + Omit(cols ...field.Expr) IWorkAreaDo + Join(table schema.Tabler, on ...field.Expr) IWorkAreaDo + LeftJoin(table schema.Tabler, on ...field.Expr) IWorkAreaDo + RightJoin(table schema.Tabler, on ...field.Expr) IWorkAreaDo + Group(cols ...field.Expr) IWorkAreaDo + Having(conds ...gen.Condition) IWorkAreaDo + Limit(limit int) IWorkAreaDo + Offset(offset int) IWorkAreaDo + Count() (count int64, err error) + Scopes(funcs ...func(gen.Dao) gen.Dao) IWorkAreaDo + Unscoped() IWorkAreaDo + Create(values ...*models.WorkArea) error + CreateInBatches(values []*models.WorkArea, batchSize int) error + Save(values ...*models.WorkArea) error + First() (*models.WorkArea, error) + Take() (*models.WorkArea, error) + Last() (*models.WorkArea, error) + Find() ([]*models.WorkArea, error) + FindInBatch(batchSize int, fc func(tx gen.Dao, batch int) error) (results []*models.WorkArea, err error) + FindInBatches(result *[]*models.WorkArea, batchSize int, fc func(tx gen.Dao, batch int) error) error + Pluck(column field.Expr, dest interface{}) error + Delete(...*models.WorkArea) (info gen.ResultInfo, err error) + Update(column field.Expr, value interface{}) (info gen.ResultInfo, err error) + UpdateSimple(columns ...field.AssignExpr) (info gen.ResultInfo, err error) + Updates(value interface{}) (info gen.ResultInfo, err error) + UpdateColumn(column field.Expr, value interface{}) (info gen.ResultInfo, err error) + UpdateColumnSimple(columns ...field.AssignExpr) (info gen.ResultInfo, err error) + UpdateColumns(value interface{}) (info gen.ResultInfo, err error) + UpdateFrom(q gen.SubQuery) gen.Dao + Attrs(attrs ...field.AssignExpr) IWorkAreaDo + Assign(attrs ...field.AssignExpr) IWorkAreaDo + Joins(fields ...field.RelationField) IWorkAreaDo + Preload(fields ...field.RelationField) IWorkAreaDo + FirstOrInit() (*models.WorkArea, error) + FirstOrCreate() (*models.WorkArea, error) + FindByPage(offset int, limit int) (result []*models.WorkArea, count int64, err error) + ScanByPage(result interface{}, offset int, limit int) (count int64, err error) + Scan(result interface{}) (err error) + Returning(value interface{}, columns ...string) IWorkAreaDo + UnderlyingDB() *gorm.DB + schema.Tabler +} + +func (w workAreaDo) Debug() IWorkAreaDo { + return w.withDO(w.DO.Debug()) +} + +func (w workAreaDo) WithContext(ctx context.Context) IWorkAreaDo { + return w.withDO(w.DO.WithContext(ctx)) +} + +func (w workAreaDo) ReadDB() IWorkAreaDo { + return w.Clauses(dbresolver.Read) +} + +func (w workAreaDo) WriteDB() IWorkAreaDo { + return w.Clauses(dbresolver.Write) +} + +func (w workAreaDo) Session(config *gorm.Session) IWorkAreaDo { + return w.withDO(w.DO.Session(config)) +} + +func (w workAreaDo) Clauses(conds ...clause.Expression) IWorkAreaDo { + return w.withDO(w.DO.Clauses(conds...)) +} + +func (w workAreaDo) Returning(value interface{}, columns ...string) IWorkAreaDo { + return w.withDO(w.DO.Returning(value, columns...)) +} + +func (w workAreaDo) Not(conds ...gen.Condition) IWorkAreaDo { + return w.withDO(w.DO.Not(conds...)) +} + +func (w workAreaDo) Or(conds ...gen.Condition) IWorkAreaDo { + return w.withDO(w.DO.Or(conds...)) +} + +func (w workAreaDo) Select(conds ...field.Expr) IWorkAreaDo { + return w.withDO(w.DO.Select(conds...)) +} + +func (w workAreaDo) Where(conds ...gen.Condition) IWorkAreaDo { + return w.withDO(w.DO.Where(conds...)) +} + +func (w workAreaDo) Order(conds ...field.Expr) IWorkAreaDo { + return w.withDO(w.DO.Order(conds...)) +} + +func (w workAreaDo) Distinct(cols ...field.Expr) IWorkAreaDo { + return w.withDO(w.DO.Distinct(cols...)) +} + +func (w workAreaDo) Omit(cols ...field.Expr) IWorkAreaDo { + return w.withDO(w.DO.Omit(cols...)) +} + +func (w workAreaDo) Join(table schema.Tabler, on ...field.Expr) IWorkAreaDo { + return w.withDO(w.DO.Join(table, on...)) +} + +func (w workAreaDo) LeftJoin(table schema.Tabler, on ...field.Expr) IWorkAreaDo { + return w.withDO(w.DO.LeftJoin(table, on...)) +} + +func (w workAreaDo) RightJoin(table schema.Tabler, on ...field.Expr) IWorkAreaDo { + return w.withDO(w.DO.RightJoin(table, on...)) +} + +func (w workAreaDo) Group(cols ...field.Expr) IWorkAreaDo { + return w.withDO(w.DO.Group(cols...)) +} + +func (w workAreaDo) Having(conds ...gen.Condition) IWorkAreaDo { + return w.withDO(w.DO.Having(conds...)) +} + +func (w workAreaDo) Limit(limit int) IWorkAreaDo { + return w.withDO(w.DO.Limit(limit)) +} + +func (w workAreaDo) Offset(offset int) IWorkAreaDo { + return w.withDO(w.DO.Offset(offset)) +} + +func (w workAreaDo) Scopes(funcs ...func(gen.Dao) gen.Dao) IWorkAreaDo { + return w.withDO(w.DO.Scopes(funcs...)) +} + +func (w workAreaDo) Unscoped() IWorkAreaDo { + return w.withDO(w.DO.Unscoped()) +} + +func (w workAreaDo) Create(values ...*models.WorkArea) error { + if len(values) == 0 { + return nil + } + return w.DO.Create(values) +} + +func (w workAreaDo) CreateInBatches(values []*models.WorkArea, batchSize int) error { + return w.DO.CreateInBatches(values, batchSize) +} + +// Save : !!! underlying implementation is different with GORM +// The method is equivalent to executing the statement: db.Clauses(clause.OnConflict{UpdateAll: true}).Create(values) +func (w workAreaDo) Save(values ...*models.WorkArea) error { + if len(values) == 0 { + return nil + } + return w.DO.Save(values) +} + +func (w workAreaDo) First() (*models.WorkArea, error) { + if result, err := w.DO.First(); err != nil { + return nil, err + } else { + return result.(*models.WorkArea), nil + } +} + +func (w workAreaDo) Take() (*models.WorkArea, error) { + if result, err := w.DO.Take(); err != nil { + return nil, err + } else { + return result.(*models.WorkArea), nil + } +} + +func (w workAreaDo) Last() (*models.WorkArea, error) { + if result, err := w.DO.Last(); err != nil { + return nil, err + } else { + return result.(*models.WorkArea), nil + } +} + +func (w workAreaDo) Find() ([]*models.WorkArea, error) { + result, err := w.DO.Find() + return result.([]*models.WorkArea), err +} + +func (w workAreaDo) FindInBatch(batchSize int, fc func(tx gen.Dao, batch int) error) (results []*models.WorkArea, err error) { + buf := make([]*models.WorkArea, 0, batchSize) + err = w.DO.FindInBatches(&buf, batchSize, func(tx gen.Dao, batch int) error { + defer func() { results = append(results, buf...) }() + return fc(tx, batch) + }) + return results, err +} + +func (w workAreaDo) FindInBatches(result *[]*models.WorkArea, batchSize int, fc func(tx gen.Dao, batch int) error) error { + return w.DO.FindInBatches(result, batchSize, fc) +} + +func (w workAreaDo) Attrs(attrs ...field.AssignExpr) IWorkAreaDo { + return w.withDO(w.DO.Attrs(attrs...)) +} + +func (w workAreaDo) Assign(attrs ...field.AssignExpr) IWorkAreaDo { + return w.withDO(w.DO.Assign(attrs...)) +} + +func (w workAreaDo) Joins(fields ...field.RelationField) IWorkAreaDo { + for _, _f := range fields { + w = *w.withDO(w.DO.Joins(_f)) + } + return &w +} + +func (w workAreaDo) Preload(fields ...field.RelationField) IWorkAreaDo { + for _, _f := range fields { + w = *w.withDO(w.DO.Preload(_f)) + } + return &w +} + +func (w workAreaDo) FirstOrInit() (*models.WorkArea, error) { + if result, err := w.DO.FirstOrInit(); err != nil { + return nil, err + } else { + return result.(*models.WorkArea), nil + } +} + +func (w workAreaDo) FirstOrCreate() (*models.WorkArea, error) { + if result, err := w.DO.FirstOrCreate(); err != nil { + return nil, err + } else { + return result.(*models.WorkArea), nil + } +} + +func (w workAreaDo) FindByPage(offset int, limit int) (result []*models.WorkArea, count int64, err error) { + result, err = w.Offset(offset).Limit(limit).Find() + if err != nil { + return + } + + if size := len(result); 0 < limit && 0 < size && size < limit { + count = int64(size + offset) + return + } + + count, err = w.Offset(-1).Limit(-1).Count() + return +} + +func (w workAreaDo) ScanByPage(result interface{}, offset int, limit int) (count int64, err error) { + count, err = w.Count() + if err != nil { + return + } + + err = w.Offset(offset).Limit(limit).Scan(result) + return +} + +func (w workAreaDo) Scan(result interface{}) (err error) { + return w.DO.Scan(result) +} + +func (w workAreaDo) Delete(models ...*models.WorkArea) (result gen.ResultInfo, err error) { + return w.DO.Delete(models) +} + +func (w *workAreaDo) withDO(do gen.Dao) *workAreaDo { + w.DO = *do.(*gen.DO) + return w +} diff --git a/internal/dal/work_areas.gen_test.go b/internal/dal/work_areas.gen_test.go new file mode 100644 index 0000000..fbae1c4 --- /dev/null +++ b/internal/dal/work_areas.gen_test.go @@ -0,0 +1,145 @@ +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. + +package dal + +import ( + "app/internal/models" + "context" + "fmt" + "testing" + + "gorm.io/gen" + "gorm.io/gen/field" + "gorm.io/gorm/clause" +) + +func init() { + InitializeDB() + err := _gen_test_db.AutoMigrate(&models.WorkArea{}) + if err != nil { + fmt.Printf("Error: AutoMigrate(&models.WorkArea{}) fail: %s", err) + } +} + +func Test_workAreaQuery(t *testing.T) { + workArea := newWorkArea(_gen_test_db) + workArea = *workArea.As(workArea.TableName()) + _do := workArea.WithContext(context.Background()).Debug() + + primaryKey := field.NewString(workArea.TableName(), clause.PrimaryKey) + _, err := _do.Unscoped().Where(primaryKey.IsNotNull()).Delete() + if err != nil { + t.Error("clean table fail:", err) + return + } + + _, ok := workArea.GetFieldByName("") + if ok { + t.Error("GetFieldByName(\"\") from workArea success") + } + + err = _do.Create(&models.WorkArea{}) + if err != nil { + t.Error("create item in table fail:", err) + } + + err = _do.Save(&models.WorkArea{}) + if err != nil { + t.Error("create item in table fail:", err) + } + + err = _do.CreateInBatches([]*models.WorkArea{{}, {}}, 10) + if err != nil { + t.Error("create item in table fail:", err) + } + + _, err = _do.Select(workArea.ALL).Take() + if err != nil { + t.Error("Take() on table fail:", err) + } + + _, err = _do.First() + if err != nil { + t.Error("First() on table fail:", err) + } + + _, err = _do.Last() + if err != nil { + t.Error("First() on table fail:", err) + } + + _, err = _do.Where(primaryKey.IsNotNull()).FindInBatch(10, func(tx gen.Dao, batch int) error { return nil }) + if err != nil { + t.Error("FindInBatch() on table fail:", err) + } + + err = _do.Where(primaryKey.IsNotNull()).FindInBatches(&[]*models.WorkArea{}, 10, func(tx gen.Dao, batch int) error { return nil }) + if err != nil { + t.Error("FindInBatches() on table fail:", err) + } + + _, err = _do.Select(workArea.ALL).Where(primaryKey.IsNotNull()).Order(primaryKey.Desc()).Find() + if err != nil { + t.Error("Find() on table fail:", err) + } + + _, err = _do.Distinct(primaryKey).Take() + if err != nil { + t.Error("select Distinct() on table fail:", err) + } + + _, err = _do.Select(workArea.ALL).Omit(primaryKey).Take() + if err != nil { + t.Error("Omit() on table fail:", err) + } + + _, err = _do.Group(primaryKey).Find() + if err != nil { + t.Error("Group() on table fail:", err) + } + + _, err = _do.Scopes(func(dao gen.Dao) gen.Dao { return dao.Where(primaryKey.IsNotNull()) }).Find() + if err != nil { + t.Error("Scopes() on table fail:", err) + } + + _, _, err = _do.FindByPage(0, 1) + if err != nil { + t.Error("FindByPage() on table fail:", err) + } + + _, err = _do.ScanByPage(&models.WorkArea{}, 0, 1) + if err != nil { + t.Error("ScanByPage() on table fail:", err) + } + + _, err = _do.Attrs(primaryKey).Assign(primaryKey).FirstOrInit() + if err != nil { + t.Error("FirstOrInit() on table fail:", err) + } + + _, err = _do.Attrs(primaryKey).Assign(primaryKey).FirstOrCreate() + if err != nil { + t.Error("FirstOrCreate() on table fail:", err) + } + + var _a _another + var _aPK = field.NewString(_a.TableName(), "id") + + err = _do.Join(&_a, primaryKey.EqCol(_aPK)).Scan(map[string]interface{}{}) + if err != nil { + t.Error("Join() on table fail:", err) + } + + err = _do.LeftJoin(&_a, primaryKey.EqCol(_aPK)).Scan(map[string]interface{}{}) + if err != nil { + t.Error("LeftJoin() on table fail:", err) + } + + _, err = _do.Not().Or().Clauses().Take() + if err != nil { + t.Error("Not/Or/Clauses on table fail:", err) + } +} diff --git a/internal/dal/workers.gen.go b/internal/dal/workers.gen.go new file mode 100644 index 0000000..dabf29c --- /dev/null +++ b/internal/dal/workers.gen.go @@ -0,0 +1,910 @@ +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. + +package dal + +import ( + "app/internal/models" + "context" + + "gorm.io/gorm" + "gorm.io/gorm/clause" + "gorm.io/gorm/schema" + + "gorm.io/gen" + "gorm.io/gen/field" + + "gorm.io/plugin/dbresolver" +) + +func newWorker(db *gorm.DB, opts ...gen.DOOption) worker { + _worker := worker{} + + _worker.workerDo.UseDB(db, opts...) + _worker.workerDo.UseModel(&models.Worker{}) + + tableName := _worker.workerDo.TableName() + _worker.ALL = field.NewAsterisk(tableName) + _worker.Id = field.NewUint(tableName, "id") + _worker.Name = field.NewString(tableName, "name") + _worker.WorkshopId = field.NewUint(tableName, "workshop_id") + _worker.Workshop = workerBelongsToWorkshop{ + db: db.Session(&gorm.Session{}), + + RelationField: field.NewRelation("Workshop", "models.Workshop"), + WorkAreas: struct { + field.RelationField + Workshop struct { + field.RelationField + } + PrepTasks struct { + field.RelationField + Task struct { + field.RelationField + ProductType struct { + field.RelationField + } + Order struct { + field.RelationField + ProductType struct { + field.RelationField + } + Customer struct { + field.RelationField + Orders struct { + field.RelationField + } + } + Tasks struct { + field.RelationField + } + } + PrepTasks struct { + field.RelationField + } + Workshops struct { + field.RelationField + } + } + WorkArea struct { + field.RelationField + } + } + Shifts struct { + field.RelationField + ProductType struct { + field.RelationField + } + WorkArea struct { + field.RelationField + } + } + TeamTasks struct { + field.RelationField + TeamType struct { + field.RelationField + } + TeamLeader struct { + field.RelationField + Workshop struct { + field.RelationField + } + TeamTasks struct { + field.RelationField + } + } + WorkArea struct { + field.RelationField + } + TeamMembers struct { + field.RelationField + } + } + }{ + RelationField: field.NewRelation("Workshop.WorkAreas", "models.WorkArea"), + Workshop: struct { + field.RelationField + }{ + RelationField: field.NewRelation("Workshop.WorkAreas.Workshop", "models.Workshop"), + }, + PrepTasks: struct { + field.RelationField + Task struct { + field.RelationField + ProductType struct { + field.RelationField + } + Order struct { + field.RelationField + ProductType struct { + field.RelationField + } + Customer struct { + field.RelationField + Orders struct { + field.RelationField + } + } + Tasks struct { + field.RelationField + } + } + PrepTasks struct { + field.RelationField + } + Workshops struct { + field.RelationField + } + } + WorkArea struct { + field.RelationField + } + }{ + RelationField: field.NewRelation("Workshop.WorkAreas.PrepTasks", "models.PrepTask"), + Task: struct { + field.RelationField + ProductType struct { + field.RelationField + } + Order struct { + field.RelationField + ProductType struct { + field.RelationField + } + Customer struct { + field.RelationField + Orders struct { + field.RelationField + } + } + Tasks struct { + field.RelationField + } + } + PrepTasks struct { + field.RelationField + } + Workshops struct { + field.RelationField + } + }{ + RelationField: field.NewRelation("Workshop.WorkAreas.PrepTasks.Task", "models.Task"), + ProductType: struct { + field.RelationField + }{ + RelationField: field.NewRelation("Workshop.WorkAreas.PrepTasks.Task.ProductType", "models.ProductType"), + }, + Order: struct { + field.RelationField + ProductType struct { + field.RelationField + } + Customer struct { + field.RelationField + Orders struct { + field.RelationField + } + } + Tasks struct { + field.RelationField + } + }{ + RelationField: field.NewRelation("Workshop.WorkAreas.PrepTasks.Task.Order", "models.Order"), + ProductType: struct { + field.RelationField + }{ + RelationField: field.NewRelation("Workshop.WorkAreas.PrepTasks.Task.Order.ProductType", "models.ProductType"), + }, + Customer: struct { + field.RelationField + Orders struct { + field.RelationField + } + }{ + RelationField: field.NewRelation("Workshop.WorkAreas.PrepTasks.Task.Order.Customer", "models.Customer"), + Orders: struct { + field.RelationField + }{ + RelationField: field.NewRelation("Workshop.WorkAreas.PrepTasks.Task.Order.Customer.Orders", "models.Order"), + }, + }, + Tasks: struct { + field.RelationField + }{ + RelationField: field.NewRelation("Workshop.WorkAreas.PrepTasks.Task.Order.Tasks", "models.Task"), + }, + }, + PrepTasks: struct { + field.RelationField + }{ + RelationField: field.NewRelation("Workshop.WorkAreas.PrepTasks.Task.PrepTasks", "models.PrepTask"), + }, + Workshops: struct { + field.RelationField + }{ + RelationField: field.NewRelation("Workshop.WorkAreas.PrepTasks.Task.Workshops", "models.Workshop"), + }, + }, + WorkArea: struct { + field.RelationField + }{ + RelationField: field.NewRelation("Workshop.WorkAreas.PrepTasks.WorkArea", "models.WorkArea"), + }, + }, + Shifts: struct { + field.RelationField + ProductType struct { + field.RelationField + } + WorkArea struct { + field.RelationField + } + }{ + RelationField: field.NewRelation("Workshop.WorkAreas.Shifts", "models.Shift"), + ProductType: struct { + field.RelationField + }{ + RelationField: field.NewRelation("Workshop.WorkAreas.Shifts.ProductType", "models.ProductType"), + }, + WorkArea: struct { + field.RelationField + }{ + RelationField: field.NewRelation("Workshop.WorkAreas.Shifts.WorkArea", "models.WorkArea"), + }, + }, + TeamTasks: struct { + field.RelationField + TeamType struct { + field.RelationField + } + TeamLeader struct { + field.RelationField + Workshop struct { + field.RelationField + } + TeamTasks struct { + field.RelationField + } + } + WorkArea struct { + field.RelationField + } + TeamMembers struct { + field.RelationField + } + }{ + RelationField: field.NewRelation("Workshop.WorkAreas.TeamTasks", "models.TeamTask"), + TeamType: struct { + field.RelationField + }{ + RelationField: field.NewRelation("Workshop.WorkAreas.TeamTasks.TeamType", "models.TeamType"), + }, + TeamLeader: struct { + field.RelationField + Workshop struct { + field.RelationField + } + TeamTasks struct { + field.RelationField + } + }{ + RelationField: field.NewRelation("Workshop.WorkAreas.TeamTasks.TeamLeader", "models.Worker"), + Workshop: struct { + field.RelationField + }{ + RelationField: field.NewRelation("Workshop.WorkAreas.TeamTasks.TeamLeader.Workshop", "models.Workshop"), + }, + TeamTasks: struct { + field.RelationField + }{ + RelationField: field.NewRelation("Workshop.WorkAreas.TeamTasks.TeamLeader.TeamTasks", "models.TeamTask"), + }, + }, + WorkArea: struct { + field.RelationField + }{ + RelationField: field.NewRelation("Workshop.WorkAreas.TeamTasks.WorkArea", "models.WorkArea"), + }, + TeamMembers: struct { + field.RelationField + }{ + RelationField: field.NewRelation("Workshop.WorkAreas.TeamTasks.TeamMembers", "models.Worker"), + }, + }, + }, + Workers: struct { + field.RelationField + }{ + RelationField: field.NewRelation("Workshop.Workers", "models.Worker"), + }, + Tasks: struct { + field.RelationField + }{ + RelationField: field.NewRelation("Workshop.Tasks", "models.Task"), + }, + } + + _worker.TeamTasks = workerManyToManyTeamTasks{ + db: db.Session(&gorm.Session{}), + + RelationField: field.NewRelation("TeamTasks", "models.TeamTask"), + } + + _worker.fillFieldMap() + + return _worker +} + +type worker struct { + workerDo + + ALL field.Asterisk + Id field.Uint + Name field.String + WorkshopId field.Uint + Workshop workerBelongsToWorkshop + + TeamTasks workerManyToManyTeamTasks + + fieldMap map[string]field.Expr +} + +func (w worker) Table(newTableName string) *worker { + w.workerDo.UseTable(newTableName) + return w.updateTableName(newTableName) +} + +func (w worker) As(alias string) *worker { + w.workerDo.DO = *(w.workerDo.As(alias).(*gen.DO)) + return w.updateTableName(alias) +} + +func (w *worker) updateTableName(table string) *worker { + w.ALL = field.NewAsterisk(table) + w.Id = field.NewUint(table, "id") + w.Name = field.NewString(table, "name") + w.WorkshopId = field.NewUint(table, "workshop_id") + + w.fillFieldMap() + + return w +} + +func (w *worker) GetFieldByName(fieldName string) (field.OrderExpr, bool) { + _f, ok := w.fieldMap[fieldName] + if !ok || _f == nil { + return nil, false + } + _oe, ok := _f.(field.OrderExpr) + return _oe, ok +} + +func (w *worker) fillFieldMap() { + w.fieldMap = make(map[string]field.Expr, 5) + w.fieldMap["id"] = w.Id + w.fieldMap["name"] = w.Name + w.fieldMap["workshop_id"] = w.WorkshopId + +} + +func (w worker) clone(db *gorm.DB) worker { + w.workerDo.ReplaceConnPool(db.Statement.ConnPool) + return w +} + +func (w worker) replaceDB(db *gorm.DB) worker { + w.workerDo.ReplaceDB(db) + return w +} + +type workerBelongsToWorkshop struct { + db *gorm.DB + + field.RelationField + + WorkAreas struct { + field.RelationField + Workshop struct { + field.RelationField + } + PrepTasks struct { + field.RelationField + Task struct { + field.RelationField + ProductType struct { + field.RelationField + } + Order struct { + field.RelationField + ProductType struct { + field.RelationField + } + Customer struct { + field.RelationField + Orders struct { + field.RelationField + } + } + Tasks struct { + field.RelationField + } + } + PrepTasks struct { + field.RelationField + } + Workshops struct { + field.RelationField + } + } + WorkArea struct { + field.RelationField + } + } + Shifts struct { + field.RelationField + ProductType struct { + field.RelationField + } + WorkArea struct { + field.RelationField + } + } + TeamTasks struct { + field.RelationField + TeamType struct { + field.RelationField + } + TeamLeader struct { + field.RelationField + Workshop struct { + field.RelationField + } + TeamTasks struct { + field.RelationField + } + } + WorkArea struct { + field.RelationField + } + TeamMembers struct { + field.RelationField + } + } + } + Workers struct { + field.RelationField + } + Tasks struct { + field.RelationField + } +} + +func (a workerBelongsToWorkshop) Where(conds ...field.Expr) *workerBelongsToWorkshop { + if len(conds) == 0 { + return &a + } + + exprs := make([]clause.Expression, 0, len(conds)) + for _, cond := range conds { + exprs = append(exprs, cond.BeCond().(clause.Expression)) + } + a.db = a.db.Clauses(clause.Where{Exprs: exprs}) + return &a +} + +func (a workerBelongsToWorkshop) WithContext(ctx context.Context) *workerBelongsToWorkshop { + a.db = a.db.WithContext(ctx) + return &a +} + +func (a workerBelongsToWorkshop) Session(session *gorm.Session) *workerBelongsToWorkshop { + a.db = a.db.Session(session) + return &a +} + +func (a workerBelongsToWorkshop) Model(m *models.Worker) *workerBelongsToWorkshopTx { + return &workerBelongsToWorkshopTx{a.db.Model(m).Association(a.Name())} +} + +type workerBelongsToWorkshopTx struct{ tx *gorm.Association } + +func (a workerBelongsToWorkshopTx) Find() (result *models.Workshop, err error) { + return result, a.tx.Find(&result) +} + +func (a workerBelongsToWorkshopTx) Append(values ...*models.Workshop) (err error) { + targetValues := make([]interface{}, len(values)) + for i, v := range values { + targetValues[i] = v + } + return a.tx.Append(targetValues...) +} + +func (a workerBelongsToWorkshopTx) Replace(values ...*models.Workshop) (err error) { + targetValues := make([]interface{}, len(values)) + for i, v := range values { + targetValues[i] = v + } + return a.tx.Replace(targetValues...) +} + +func (a workerBelongsToWorkshopTx) Delete(values ...*models.Workshop) (err error) { + targetValues := make([]interface{}, len(values)) + for i, v := range values { + targetValues[i] = v + } + return a.tx.Delete(targetValues...) +} + +func (a workerBelongsToWorkshopTx) Clear() error { + return a.tx.Clear() +} + +func (a workerBelongsToWorkshopTx) Count() int64 { + return a.tx.Count() +} + +type workerManyToManyTeamTasks struct { + db *gorm.DB + + field.RelationField +} + +func (a workerManyToManyTeamTasks) Where(conds ...field.Expr) *workerManyToManyTeamTasks { + if len(conds) == 0 { + return &a + } + + exprs := make([]clause.Expression, 0, len(conds)) + for _, cond := range conds { + exprs = append(exprs, cond.BeCond().(clause.Expression)) + } + a.db = a.db.Clauses(clause.Where{Exprs: exprs}) + return &a +} + +func (a workerManyToManyTeamTasks) WithContext(ctx context.Context) *workerManyToManyTeamTasks { + a.db = a.db.WithContext(ctx) + return &a +} + +func (a workerManyToManyTeamTasks) Session(session *gorm.Session) *workerManyToManyTeamTasks { + a.db = a.db.Session(session) + return &a +} + +func (a workerManyToManyTeamTasks) Model(m *models.Worker) *workerManyToManyTeamTasksTx { + return &workerManyToManyTeamTasksTx{a.db.Model(m).Association(a.Name())} +} + +type workerManyToManyTeamTasksTx struct{ tx *gorm.Association } + +func (a workerManyToManyTeamTasksTx) Find() (result []*models.TeamTask, err error) { + return result, a.tx.Find(&result) +} + +func (a workerManyToManyTeamTasksTx) Append(values ...*models.TeamTask) (err error) { + targetValues := make([]interface{}, len(values)) + for i, v := range values { + targetValues[i] = v + } + return a.tx.Append(targetValues...) +} + +func (a workerManyToManyTeamTasksTx) Replace(values ...*models.TeamTask) (err error) { + targetValues := make([]interface{}, len(values)) + for i, v := range values { + targetValues[i] = v + } + return a.tx.Replace(targetValues...) +} + +func (a workerManyToManyTeamTasksTx) Delete(values ...*models.TeamTask) (err error) { + targetValues := make([]interface{}, len(values)) + for i, v := range values { + targetValues[i] = v + } + return a.tx.Delete(targetValues...) +} + +func (a workerManyToManyTeamTasksTx) Clear() error { + return a.tx.Clear() +} + +func (a workerManyToManyTeamTasksTx) Count() int64 { + return a.tx.Count() +} + +type workerDo struct{ gen.DO } + +type IWorkerDo interface { + gen.SubQuery + Debug() IWorkerDo + WithContext(ctx context.Context) IWorkerDo + WithResult(fc func(tx gen.Dao)) gen.ResultInfo + ReplaceDB(db *gorm.DB) + ReadDB() IWorkerDo + WriteDB() IWorkerDo + As(alias string) gen.Dao + Session(config *gorm.Session) IWorkerDo + Columns(cols ...field.Expr) gen.Columns + Clauses(conds ...clause.Expression) IWorkerDo + Not(conds ...gen.Condition) IWorkerDo + Or(conds ...gen.Condition) IWorkerDo + Select(conds ...field.Expr) IWorkerDo + Where(conds ...gen.Condition) IWorkerDo + Order(conds ...field.Expr) IWorkerDo + Distinct(cols ...field.Expr) IWorkerDo + Omit(cols ...field.Expr) IWorkerDo + Join(table schema.Tabler, on ...field.Expr) IWorkerDo + LeftJoin(table schema.Tabler, on ...field.Expr) IWorkerDo + RightJoin(table schema.Tabler, on ...field.Expr) IWorkerDo + Group(cols ...field.Expr) IWorkerDo + Having(conds ...gen.Condition) IWorkerDo + Limit(limit int) IWorkerDo + Offset(offset int) IWorkerDo + Count() (count int64, err error) + Scopes(funcs ...func(gen.Dao) gen.Dao) IWorkerDo + Unscoped() IWorkerDo + Create(values ...*models.Worker) error + CreateInBatches(values []*models.Worker, batchSize int) error + Save(values ...*models.Worker) error + First() (*models.Worker, error) + Take() (*models.Worker, error) + Last() (*models.Worker, error) + Find() ([]*models.Worker, error) + FindInBatch(batchSize int, fc func(tx gen.Dao, batch int) error) (results []*models.Worker, err error) + FindInBatches(result *[]*models.Worker, batchSize int, fc func(tx gen.Dao, batch int) error) error + Pluck(column field.Expr, dest interface{}) error + Delete(...*models.Worker) (info gen.ResultInfo, err error) + Update(column field.Expr, value interface{}) (info gen.ResultInfo, err error) + UpdateSimple(columns ...field.AssignExpr) (info gen.ResultInfo, err error) + Updates(value interface{}) (info gen.ResultInfo, err error) + UpdateColumn(column field.Expr, value interface{}) (info gen.ResultInfo, err error) + UpdateColumnSimple(columns ...field.AssignExpr) (info gen.ResultInfo, err error) + UpdateColumns(value interface{}) (info gen.ResultInfo, err error) + UpdateFrom(q gen.SubQuery) gen.Dao + Attrs(attrs ...field.AssignExpr) IWorkerDo + Assign(attrs ...field.AssignExpr) IWorkerDo + Joins(fields ...field.RelationField) IWorkerDo + Preload(fields ...field.RelationField) IWorkerDo + FirstOrInit() (*models.Worker, error) + FirstOrCreate() (*models.Worker, error) + FindByPage(offset int, limit int) (result []*models.Worker, count int64, err error) + ScanByPage(result interface{}, offset int, limit int) (count int64, err error) + Scan(result interface{}) (err error) + Returning(value interface{}, columns ...string) IWorkerDo + UnderlyingDB() *gorm.DB + schema.Tabler +} + +func (w workerDo) Debug() IWorkerDo { + return w.withDO(w.DO.Debug()) +} + +func (w workerDo) WithContext(ctx context.Context) IWorkerDo { + return w.withDO(w.DO.WithContext(ctx)) +} + +func (w workerDo) ReadDB() IWorkerDo { + return w.Clauses(dbresolver.Read) +} + +func (w workerDo) WriteDB() IWorkerDo { + return w.Clauses(dbresolver.Write) +} + +func (w workerDo) Session(config *gorm.Session) IWorkerDo { + return w.withDO(w.DO.Session(config)) +} + +func (w workerDo) Clauses(conds ...clause.Expression) IWorkerDo { + return w.withDO(w.DO.Clauses(conds...)) +} + +func (w workerDo) Returning(value interface{}, columns ...string) IWorkerDo { + return w.withDO(w.DO.Returning(value, columns...)) +} + +func (w workerDo) Not(conds ...gen.Condition) IWorkerDo { + return w.withDO(w.DO.Not(conds...)) +} + +func (w workerDo) Or(conds ...gen.Condition) IWorkerDo { + return w.withDO(w.DO.Or(conds...)) +} + +func (w workerDo) Select(conds ...field.Expr) IWorkerDo { + return w.withDO(w.DO.Select(conds...)) +} + +func (w workerDo) Where(conds ...gen.Condition) IWorkerDo { + return w.withDO(w.DO.Where(conds...)) +} + +func (w workerDo) Order(conds ...field.Expr) IWorkerDo { + return w.withDO(w.DO.Order(conds...)) +} + +func (w workerDo) Distinct(cols ...field.Expr) IWorkerDo { + return w.withDO(w.DO.Distinct(cols...)) +} + +func (w workerDo) Omit(cols ...field.Expr) IWorkerDo { + return w.withDO(w.DO.Omit(cols...)) +} + +func (w workerDo) Join(table schema.Tabler, on ...field.Expr) IWorkerDo { + return w.withDO(w.DO.Join(table, on...)) +} + +func (w workerDo) LeftJoin(table schema.Tabler, on ...field.Expr) IWorkerDo { + return w.withDO(w.DO.LeftJoin(table, on...)) +} + +func (w workerDo) RightJoin(table schema.Tabler, on ...field.Expr) IWorkerDo { + return w.withDO(w.DO.RightJoin(table, on...)) +} + +func (w workerDo) Group(cols ...field.Expr) IWorkerDo { + return w.withDO(w.DO.Group(cols...)) +} + +func (w workerDo) Having(conds ...gen.Condition) IWorkerDo { + return w.withDO(w.DO.Having(conds...)) +} + +func (w workerDo) Limit(limit int) IWorkerDo { + return w.withDO(w.DO.Limit(limit)) +} + +func (w workerDo) Offset(offset int) IWorkerDo { + return w.withDO(w.DO.Offset(offset)) +} + +func (w workerDo) Scopes(funcs ...func(gen.Dao) gen.Dao) IWorkerDo { + return w.withDO(w.DO.Scopes(funcs...)) +} + +func (w workerDo) Unscoped() IWorkerDo { + return w.withDO(w.DO.Unscoped()) +} + +func (w workerDo) Create(values ...*models.Worker) error { + if len(values) == 0 { + return nil + } + return w.DO.Create(values) +} + +func (w workerDo) CreateInBatches(values []*models.Worker, batchSize int) error { + return w.DO.CreateInBatches(values, batchSize) +} + +// Save : !!! underlying implementation is different with GORM +// The method is equivalent to executing the statement: db.Clauses(clause.OnConflict{UpdateAll: true}).Create(values) +func (w workerDo) Save(values ...*models.Worker) error { + if len(values) == 0 { + return nil + } + return w.DO.Save(values) +} + +func (w workerDo) First() (*models.Worker, error) { + if result, err := w.DO.First(); err != nil { + return nil, err + } else { + return result.(*models.Worker), nil + } +} + +func (w workerDo) Take() (*models.Worker, error) { + if result, err := w.DO.Take(); err != nil { + return nil, err + } else { + return result.(*models.Worker), nil + } +} + +func (w workerDo) Last() (*models.Worker, error) { + if result, err := w.DO.Last(); err != nil { + return nil, err + } else { + return result.(*models.Worker), nil + } +} + +func (w workerDo) Find() ([]*models.Worker, error) { + result, err := w.DO.Find() + return result.([]*models.Worker), err +} + +func (w workerDo) FindInBatch(batchSize int, fc func(tx gen.Dao, batch int) error) (results []*models.Worker, err error) { + buf := make([]*models.Worker, 0, batchSize) + err = w.DO.FindInBatches(&buf, batchSize, func(tx gen.Dao, batch int) error { + defer func() { results = append(results, buf...) }() + return fc(tx, batch) + }) + return results, err +} + +func (w workerDo) FindInBatches(result *[]*models.Worker, batchSize int, fc func(tx gen.Dao, batch int) error) error { + return w.DO.FindInBatches(result, batchSize, fc) +} + +func (w workerDo) Attrs(attrs ...field.AssignExpr) IWorkerDo { + return w.withDO(w.DO.Attrs(attrs...)) +} + +func (w workerDo) Assign(attrs ...field.AssignExpr) IWorkerDo { + return w.withDO(w.DO.Assign(attrs...)) +} + +func (w workerDo) Joins(fields ...field.RelationField) IWorkerDo { + for _, _f := range fields { + w = *w.withDO(w.DO.Joins(_f)) + } + return &w +} + +func (w workerDo) Preload(fields ...field.RelationField) IWorkerDo { + for _, _f := range fields { + w = *w.withDO(w.DO.Preload(_f)) + } + return &w +} + +func (w workerDo) FirstOrInit() (*models.Worker, error) { + if result, err := w.DO.FirstOrInit(); err != nil { + return nil, err + } else { + return result.(*models.Worker), nil + } +} + +func (w workerDo) FirstOrCreate() (*models.Worker, error) { + if result, err := w.DO.FirstOrCreate(); err != nil { + return nil, err + } else { + return result.(*models.Worker), nil + } +} + +func (w workerDo) FindByPage(offset int, limit int) (result []*models.Worker, count int64, err error) { + result, err = w.Offset(offset).Limit(limit).Find() + if err != nil { + return + } + + if size := len(result); 0 < limit && 0 < size && size < limit { + count = int64(size + offset) + return + } + + count, err = w.Offset(-1).Limit(-1).Count() + return +} + +func (w workerDo) ScanByPage(result interface{}, offset int, limit int) (count int64, err error) { + count, err = w.Count() + if err != nil { + return + } + + err = w.Offset(offset).Limit(limit).Scan(result) + return +} + +func (w workerDo) Scan(result interface{}) (err error) { + return w.DO.Scan(result) +} + +func (w workerDo) Delete(models ...*models.Worker) (result gen.ResultInfo, err error) { + return w.DO.Delete(models) +} + +func (w *workerDo) withDO(do gen.Dao) *workerDo { + w.DO = *do.(*gen.DO) + return w +} diff --git a/internal/dal/workers.gen_test.go b/internal/dal/workers.gen_test.go new file mode 100644 index 0000000..0cc47bc --- /dev/null +++ b/internal/dal/workers.gen_test.go @@ -0,0 +1,145 @@ +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. + +package dal + +import ( + "app/internal/models" + "context" + "fmt" + "testing" + + "gorm.io/gen" + "gorm.io/gen/field" + "gorm.io/gorm/clause" +) + +func init() { + InitializeDB() + err := _gen_test_db.AutoMigrate(&models.Worker{}) + if err != nil { + fmt.Printf("Error: AutoMigrate(&models.Worker{}) fail: %s", err) + } +} + +func Test_workerQuery(t *testing.T) { + worker := newWorker(_gen_test_db) + worker = *worker.As(worker.TableName()) + _do := worker.WithContext(context.Background()).Debug() + + primaryKey := field.NewString(worker.TableName(), clause.PrimaryKey) + _, err := _do.Unscoped().Where(primaryKey.IsNotNull()).Delete() + if err != nil { + t.Error("clean table fail:", err) + return + } + + _, ok := worker.GetFieldByName("") + if ok { + t.Error("GetFieldByName(\"\") from worker success") + } + + err = _do.Create(&models.Worker{}) + if err != nil { + t.Error("create item in table fail:", err) + } + + err = _do.Save(&models.Worker{}) + if err != nil { + t.Error("create item in table fail:", err) + } + + err = _do.CreateInBatches([]*models.Worker{{}, {}}, 10) + if err != nil { + t.Error("create item in table fail:", err) + } + + _, err = _do.Select(worker.ALL).Take() + if err != nil { + t.Error("Take() on table fail:", err) + } + + _, err = _do.First() + if err != nil { + t.Error("First() on table fail:", err) + } + + _, err = _do.Last() + if err != nil { + t.Error("First() on table fail:", err) + } + + _, err = _do.Where(primaryKey.IsNotNull()).FindInBatch(10, func(tx gen.Dao, batch int) error { return nil }) + if err != nil { + t.Error("FindInBatch() on table fail:", err) + } + + err = _do.Where(primaryKey.IsNotNull()).FindInBatches(&[]*models.Worker{}, 10, func(tx gen.Dao, batch int) error { return nil }) + if err != nil { + t.Error("FindInBatches() on table fail:", err) + } + + _, err = _do.Select(worker.ALL).Where(primaryKey.IsNotNull()).Order(primaryKey.Desc()).Find() + if err != nil { + t.Error("Find() on table fail:", err) + } + + _, err = _do.Distinct(primaryKey).Take() + if err != nil { + t.Error("select Distinct() on table fail:", err) + } + + _, err = _do.Select(worker.ALL).Omit(primaryKey).Take() + if err != nil { + t.Error("Omit() on table fail:", err) + } + + _, err = _do.Group(primaryKey).Find() + if err != nil { + t.Error("Group() on table fail:", err) + } + + _, err = _do.Scopes(func(dao gen.Dao) gen.Dao { return dao.Where(primaryKey.IsNotNull()) }).Find() + if err != nil { + t.Error("Scopes() on table fail:", err) + } + + _, _, err = _do.FindByPage(0, 1) + if err != nil { + t.Error("FindByPage() on table fail:", err) + } + + _, err = _do.ScanByPage(&models.Worker{}, 0, 1) + if err != nil { + t.Error("ScanByPage() on table fail:", err) + } + + _, err = _do.Attrs(primaryKey).Assign(primaryKey).FirstOrInit() + if err != nil { + t.Error("FirstOrInit() on table fail:", err) + } + + _, err = _do.Attrs(primaryKey).Assign(primaryKey).FirstOrCreate() + if err != nil { + t.Error("FirstOrCreate() on table fail:", err) + } + + var _a _another + var _aPK = field.NewString(_a.TableName(), "id") + + err = _do.Join(&_a, primaryKey.EqCol(_aPK)).Scan(map[string]interface{}{}) + if err != nil { + t.Error("Join() on table fail:", err) + } + + err = _do.LeftJoin(&_a, primaryKey.EqCol(_aPK)).Scan(map[string]interface{}{}) + if err != nil { + t.Error("LeftJoin() on table fail:", err) + } + + _, err = _do.Not().Or().Clauses().Take() + if err != nil { + t.Error("Not/Or/Clauses on table fail:", err) + } +} diff --git a/internal/dal/workshops.gen.go b/internal/dal/workshops.gen.go new file mode 100644 index 0000000..70b0f29 --- /dev/null +++ b/internal/dal/workshops.gen.go @@ -0,0 +1,964 @@ +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. + +package dal + +import ( + "app/internal/models" + "context" + + "gorm.io/gorm" + "gorm.io/gorm/clause" + "gorm.io/gorm/schema" + + "gorm.io/gen" + "gorm.io/gen/field" + + "gorm.io/plugin/dbresolver" +) + +func newWorkshop(db *gorm.DB, opts ...gen.DOOption) workshop { + _workshop := workshop{} + + _workshop.workshopDo.UseDB(db, opts...) + _workshop.workshopDo.UseModel(&models.Workshop{}) + + tableName := _workshop.workshopDo.TableName() + _workshop.ALL = field.NewAsterisk(tableName) + _workshop.Id = field.NewUint(tableName, "id") + _workshop.Name = field.NewString(tableName, "name") + _workshop.WorkAreas = workshopHasManyWorkAreas{ + db: db.Session(&gorm.Session{}), + + RelationField: field.NewRelation("WorkAreas", "models.WorkArea"), + Workshop: struct { + field.RelationField + WorkAreas struct { + field.RelationField + } + Workers struct { + field.RelationField + Workshop struct { + field.RelationField + } + TeamTasks struct { + field.RelationField + TeamType struct { + field.RelationField + } + TeamLeader struct { + field.RelationField + } + WorkArea struct { + field.RelationField + } + TeamMembers struct { + field.RelationField + } + } + } + Tasks struct { + field.RelationField + ProductType struct { + field.RelationField + } + Order struct { + field.RelationField + ProductType struct { + field.RelationField + } + Customer struct { + field.RelationField + Orders struct { + field.RelationField + } + } + Tasks struct { + field.RelationField + } + } + PrepTasks struct { + field.RelationField + Task struct { + field.RelationField + } + WorkArea struct { + field.RelationField + } + } + Workshops struct { + field.RelationField + } + } + }{ + RelationField: field.NewRelation("WorkAreas.Workshop", "models.Workshop"), + WorkAreas: struct { + field.RelationField + }{ + RelationField: field.NewRelation("WorkAreas.Workshop.WorkAreas", "models.WorkArea"), + }, + Workers: struct { + field.RelationField + Workshop struct { + field.RelationField + } + TeamTasks struct { + field.RelationField + TeamType struct { + field.RelationField + } + TeamLeader struct { + field.RelationField + } + WorkArea struct { + field.RelationField + } + TeamMembers struct { + field.RelationField + } + } + }{ + RelationField: field.NewRelation("WorkAreas.Workshop.Workers", "models.Worker"), + Workshop: struct { + field.RelationField + }{ + RelationField: field.NewRelation("WorkAreas.Workshop.Workers.Workshop", "models.Workshop"), + }, + TeamTasks: struct { + field.RelationField + TeamType struct { + field.RelationField + } + TeamLeader struct { + field.RelationField + } + WorkArea struct { + field.RelationField + } + TeamMembers struct { + field.RelationField + } + }{ + RelationField: field.NewRelation("WorkAreas.Workshop.Workers.TeamTasks", "models.TeamTask"), + TeamType: struct { + field.RelationField + }{ + RelationField: field.NewRelation("WorkAreas.Workshop.Workers.TeamTasks.TeamType", "models.TeamType"), + }, + TeamLeader: struct { + field.RelationField + }{ + RelationField: field.NewRelation("WorkAreas.Workshop.Workers.TeamTasks.TeamLeader", "models.Worker"), + }, + WorkArea: struct { + field.RelationField + }{ + RelationField: field.NewRelation("WorkAreas.Workshop.Workers.TeamTasks.WorkArea", "models.WorkArea"), + }, + TeamMembers: struct { + field.RelationField + }{ + RelationField: field.NewRelation("WorkAreas.Workshop.Workers.TeamTasks.TeamMembers", "models.Worker"), + }, + }, + }, + Tasks: struct { + field.RelationField + ProductType struct { + field.RelationField + } + Order struct { + field.RelationField + ProductType struct { + field.RelationField + } + Customer struct { + field.RelationField + Orders struct { + field.RelationField + } + } + Tasks struct { + field.RelationField + } + } + PrepTasks struct { + field.RelationField + Task struct { + field.RelationField + } + WorkArea struct { + field.RelationField + } + } + Workshops struct { + field.RelationField + } + }{ + RelationField: field.NewRelation("WorkAreas.Workshop.Tasks", "models.Task"), + ProductType: struct { + field.RelationField + }{ + RelationField: field.NewRelation("WorkAreas.Workshop.Tasks.ProductType", "models.ProductType"), + }, + Order: struct { + field.RelationField + ProductType struct { + field.RelationField + } + Customer struct { + field.RelationField + Orders struct { + field.RelationField + } + } + Tasks struct { + field.RelationField + } + }{ + RelationField: field.NewRelation("WorkAreas.Workshop.Tasks.Order", "models.Order"), + ProductType: struct { + field.RelationField + }{ + RelationField: field.NewRelation("WorkAreas.Workshop.Tasks.Order.ProductType", "models.ProductType"), + }, + Customer: struct { + field.RelationField + Orders struct { + field.RelationField + } + }{ + RelationField: field.NewRelation("WorkAreas.Workshop.Tasks.Order.Customer", "models.Customer"), + Orders: struct { + field.RelationField + }{ + RelationField: field.NewRelation("WorkAreas.Workshop.Tasks.Order.Customer.Orders", "models.Order"), + }, + }, + Tasks: struct { + field.RelationField + }{ + RelationField: field.NewRelation("WorkAreas.Workshop.Tasks.Order.Tasks", "models.Task"), + }, + }, + PrepTasks: struct { + field.RelationField + Task struct { + field.RelationField + } + WorkArea struct { + field.RelationField + } + }{ + RelationField: field.NewRelation("WorkAreas.Workshop.Tasks.PrepTasks", "models.PrepTask"), + Task: struct { + field.RelationField + }{ + RelationField: field.NewRelation("WorkAreas.Workshop.Tasks.PrepTasks.Task", "models.Task"), + }, + WorkArea: struct { + field.RelationField + }{ + RelationField: field.NewRelation("WorkAreas.Workshop.Tasks.PrepTasks.WorkArea", "models.WorkArea"), + }, + }, + Workshops: struct { + field.RelationField + }{ + RelationField: field.NewRelation("WorkAreas.Workshop.Tasks.Workshops", "models.Workshop"), + }, + }, + }, + PrepTasks: struct { + field.RelationField + }{ + RelationField: field.NewRelation("WorkAreas.PrepTasks", "models.PrepTask"), + }, + Shifts: struct { + field.RelationField + ProductType struct { + field.RelationField + } + WorkArea struct { + field.RelationField + } + }{ + RelationField: field.NewRelation("WorkAreas.Shifts", "models.Shift"), + ProductType: struct { + field.RelationField + }{ + RelationField: field.NewRelation("WorkAreas.Shifts.ProductType", "models.ProductType"), + }, + WorkArea: struct { + field.RelationField + }{ + RelationField: field.NewRelation("WorkAreas.Shifts.WorkArea", "models.WorkArea"), + }, + }, + TeamTasks: struct { + field.RelationField + }{ + RelationField: field.NewRelation("WorkAreas.TeamTasks", "models.TeamTask"), + }, + } + + _workshop.Workers = workshopHasManyWorkers{ + db: db.Session(&gorm.Session{}), + + RelationField: field.NewRelation("Workers", "models.Worker"), + } + + _workshop.Tasks = workshopManyToManyTasks{ + db: db.Session(&gorm.Session{}), + + RelationField: field.NewRelation("Tasks", "models.Task"), + } + + _workshop.fillFieldMap() + + return _workshop +} + +type workshop struct { + workshopDo + + ALL field.Asterisk + Id field.Uint + Name field.String + WorkAreas workshopHasManyWorkAreas + + Workers workshopHasManyWorkers + + Tasks workshopManyToManyTasks + + fieldMap map[string]field.Expr +} + +func (w workshop) Table(newTableName string) *workshop { + w.workshopDo.UseTable(newTableName) + return w.updateTableName(newTableName) +} + +func (w workshop) As(alias string) *workshop { + w.workshopDo.DO = *(w.workshopDo.As(alias).(*gen.DO)) + return w.updateTableName(alias) +} + +func (w *workshop) updateTableName(table string) *workshop { + w.ALL = field.NewAsterisk(table) + w.Id = field.NewUint(table, "id") + w.Name = field.NewString(table, "name") + + w.fillFieldMap() + + return w +} + +func (w *workshop) GetFieldByName(fieldName string) (field.OrderExpr, bool) { + _f, ok := w.fieldMap[fieldName] + if !ok || _f == nil { + return nil, false + } + _oe, ok := _f.(field.OrderExpr) + return _oe, ok +} + +func (w *workshop) fillFieldMap() { + w.fieldMap = make(map[string]field.Expr, 5) + w.fieldMap["id"] = w.Id + w.fieldMap["name"] = w.Name + +} + +func (w workshop) clone(db *gorm.DB) workshop { + w.workshopDo.ReplaceConnPool(db.Statement.ConnPool) + return w +} + +func (w workshop) replaceDB(db *gorm.DB) workshop { + w.workshopDo.ReplaceDB(db) + return w +} + +type workshopHasManyWorkAreas struct { + db *gorm.DB + + field.RelationField + + Workshop struct { + field.RelationField + WorkAreas struct { + field.RelationField + } + Workers struct { + field.RelationField + Workshop struct { + field.RelationField + } + TeamTasks struct { + field.RelationField + TeamType struct { + field.RelationField + } + TeamLeader struct { + field.RelationField + } + WorkArea struct { + field.RelationField + } + TeamMembers struct { + field.RelationField + } + } + } + Tasks struct { + field.RelationField + ProductType struct { + field.RelationField + } + Order struct { + field.RelationField + ProductType struct { + field.RelationField + } + Customer struct { + field.RelationField + Orders struct { + field.RelationField + } + } + Tasks struct { + field.RelationField + } + } + PrepTasks struct { + field.RelationField + Task struct { + field.RelationField + } + WorkArea struct { + field.RelationField + } + } + Workshops struct { + field.RelationField + } + } + } + PrepTasks struct { + field.RelationField + } + Shifts struct { + field.RelationField + ProductType struct { + field.RelationField + } + WorkArea struct { + field.RelationField + } + } + TeamTasks struct { + field.RelationField + } +} + +func (a workshopHasManyWorkAreas) Where(conds ...field.Expr) *workshopHasManyWorkAreas { + if len(conds) == 0 { + return &a + } + + exprs := make([]clause.Expression, 0, len(conds)) + for _, cond := range conds { + exprs = append(exprs, cond.BeCond().(clause.Expression)) + } + a.db = a.db.Clauses(clause.Where{Exprs: exprs}) + return &a +} + +func (a workshopHasManyWorkAreas) WithContext(ctx context.Context) *workshopHasManyWorkAreas { + a.db = a.db.WithContext(ctx) + return &a +} + +func (a workshopHasManyWorkAreas) Session(session *gorm.Session) *workshopHasManyWorkAreas { + a.db = a.db.Session(session) + return &a +} + +func (a workshopHasManyWorkAreas) Model(m *models.Workshop) *workshopHasManyWorkAreasTx { + return &workshopHasManyWorkAreasTx{a.db.Model(m).Association(a.Name())} +} + +type workshopHasManyWorkAreasTx struct{ tx *gorm.Association } + +func (a workshopHasManyWorkAreasTx) Find() (result []*models.WorkArea, err error) { + return result, a.tx.Find(&result) +} + +func (a workshopHasManyWorkAreasTx) Append(values ...*models.WorkArea) (err error) { + targetValues := make([]interface{}, len(values)) + for i, v := range values { + targetValues[i] = v + } + return a.tx.Append(targetValues...) +} + +func (a workshopHasManyWorkAreasTx) Replace(values ...*models.WorkArea) (err error) { + targetValues := make([]interface{}, len(values)) + for i, v := range values { + targetValues[i] = v + } + return a.tx.Replace(targetValues...) +} + +func (a workshopHasManyWorkAreasTx) Delete(values ...*models.WorkArea) (err error) { + targetValues := make([]interface{}, len(values)) + for i, v := range values { + targetValues[i] = v + } + return a.tx.Delete(targetValues...) +} + +func (a workshopHasManyWorkAreasTx) Clear() error { + return a.tx.Clear() +} + +func (a workshopHasManyWorkAreasTx) Count() int64 { + return a.tx.Count() +} + +type workshopHasManyWorkers struct { + db *gorm.DB + + field.RelationField +} + +func (a workshopHasManyWorkers) Where(conds ...field.Expr) *workshopHasManyWorkers { + if len(conds) == 0 { + return &a + } + + exprs := make([]clause.Expression, 0, len(conds)) + for _, cond := range conds { + exprs = append(exprs, cond.BeCond().(clause.Expression)) + } + a.db = a.db.Clauses(clause.Where{Exprs: exprs}) + return &a +} + +func (a workshopHasManyWorkers) WithContext(ctx context.Context) *workshopHasManyWorkers { + a.db = a.db.WithContext(ctx) + return &a +} + +func (a workshopHasManyWorkers) Session(session *gorm.Session) *workshopHasManyWorkers { + a.db = a.db.Session(session) + return &a +} + +func (a workshopHasManyWorkers) Model(m *models.Workshop) *workshopHasManyWorkersTx { + return &workshopHasManyWorkersTx{a.db.Model(m).Association(a.Name())} +} + +type workshopHasManyWorkersTx struct{ tx *gorm.Association } + +func (a workshopHasManyWorkersTx) Find() (result []*models.Worker, err error) { + return result, a.tx.Find(&result) +} + +func (a workshopHasManyWorkersTx) Append(values ...*models.Worker) (err error) { + targetValues := make([]interface{}, len(values)) + for i, v := range values { + targetValues[i] = v + } + return a.tx.Append(targetValues...) +} + +func (a workshopHasManyWorkersTx) Replace(values ...*models.Worker) (err error) { + targetValues := make([]interface{}, len(values)) + for i, v := range values { + targetValues[i] = v + } + return a.tx.Replace(targetValues...) +} + +func (a workshopHasManyWorkersTx) Delete(values ...*models.Worker) (err error) { + targetValues := make([]interface{}, len(values)) + for i, v := range values { + targetValues[i] = v + } + return a.tx.Delete(targetValues...) +} + +func (a workshopHasManyWorkersTx) Clear() error { + return a.tx.Clear() +} + +func (a workshopHasManyWorkersTx) Count() int64 { + return a.tx.Count() +} + +type workshopManyToManyTasks struct { + db *gorm.DB + + field.RelationField +} + +func (a workshopManyToManyTasks) Where(conds ...field.Expr) *workshopManyToManyTasks { + if len(conds) == 0 { + return &a + } + + exprs := make([]clause.Expression, 0, len(conds)) + for _, cond := range conds { + exprs = append(exprs, cond.BeCond().(clause.Expression)) + } + a.db = a.db.Clauses(clause.Where{Exprs: exprs}) + return &a +} + +func (a workshopManyToManyTasks) WithContext(ctx context.Context) *workshopManyToManyTasks { + a.db = a.db.WithContext(ctx) + return &a +} + +func (a workshopManyToManyTasks) Session(session *gorm.Session) *workshopManyToManyTasks { + a.db = a.db.Session(session) + return &a +} + +func (a workshopManyToManyTasks) Model(m *models.Workshop) *workshopManyToManyTasksTx { + return &workshopManyToManyTasksTx{a.db.Model(m).Association(a.Name())} +} + +type workshopManyToManyTasksTx struct{ tx *gorm.Association } + +func (a workshopManyToManyTasksTx) Find() (result []*models.Task, err error) { + return result, a.tx.Find(&result) +} + +func (a workshopManyToManyTasksTx) Append(values ...*models.Task) (err error) { + targetValues := make([]interface{}, len(values)) + for i, v := range values { + targetValues[i] = v + } + return a.tx.Append(targetValues...) +} + +func (a workshopManyToManyTasksTx) Replace(values ...*models.Task) (err error) { + targetValues := make([]interface{}, len(values)) + for i, v := range values { + targetValues[i] = v + } + return a.tx.Replace(targetValues...) +} + +func (a workshopManyToManyTasksTx) Delete(values ...*models.Task) (err error) { + targetValues := make([]interface{}, len(values)) + for i, v := range values { + targetValues[i] = v + } + return a.tx.Delete(targetValues...) +} + +func (a workshopManyToManyTasksTx) Clear() error { + return a.tx.Clear() +} + +func (a workshopManyToManyTasksTx) Count() int64 { + return a.tx.Count() +} + +type workshopDo struct{ gen.DO } + +type IWorkshopDo interface { + gen.SubQuery + Debug() IWorkshopDo + WithContext(ctx context.Context) IWorkshopDo + WithResult(fc func(tx gen.Dao)) gen.ResultInfo + ReplaceDB(db *gorm.DB) + ReadDB() IWorkshopDo + WriteDB() IWorkshopDo + As(alias string) gen.Dao + Session(config *gorm.Session) IWorkshopDo + Columns(cols ...field.Expr) gen.Columns + Clauses(conds ...clause.Expression) IWorkshopDo + Not(conds ...gen.Condition) IWorkshopDo + Or(conds ...gen.Condition) IWorkshopDo + Select(conds ...field.Expr) IWorkshopDo + Where(conds ...gen.Condition) IWorkshopDo + Order(conds ...field.Expr) IWorkshopDo + Distinct(cols ...field.Expr) IWorkshopDo + Omit(cols ...field.Expr) IWorkshopDo + Join(table schema.Tabler, on ...field.Expr) IWorkshopDo + LeftJoin(table schema.Tabler, on ...field.Expr) IWorkshopDo + RightJoin(table schema.Tabler, on ...field.Expr) IWorkshopDo + Group(cols ...field.Expr) IWorkshopDo + Having(conds ...gen.Condition) IWorkshopDo + Limit(limit int) IWorkshopDo + Offset(offset int) IWorkshopDo + Count() (count int64, err error) + Scopes(funcs ...func(gen.Dao) gen.Dao) IWorkshopDo + Unscoped() IWorkshopDo + Create(values ...*models.Workshop) error + CreateInBatches(values []*models.Workshop, batchSize int) error + Save(values ...*models.Workshop) error + First() (*models.Workshop, error) + Take() (*models.Workshop, error) + Last() (*models.Workshop, error) + Find() ([]*models.Workshop, error) + FindInBatch(batchSize int, fc func(tx gen.Dao, batch int) error) (results []*models.Workshop, err error) + FindInBatches(result *[]*models.Workshop, batchSize int, fc func(tx gen.Dao, batch int) error) error + Pluck(column field.Expr, dest interface{}) error + Delete(...*models.Workshop) (info gen.ResultInfo, err error) + Update(column field.Expr, value interface{}) (info gen.ResultInfo, err error) + UpdateSimple(columns ...field.AssignExpr) (info gen.ResultInfo, err error) + Updates(value interface{}) (info gen.ResultInfo, err error) + UpdateColumn(column field.Expr, value interface{}) (info gen.ResultInfo, err error) + UpdateColumnSimple(columns ...field.AssignExpr) (info gen.ResultInfo, err error) + UpdateColumns(value interface{}) (info gen.ResultInfo, err error) + UpdateFrom(q gen.SubQuery) gen.Dao + Attrs(attrs ...field.AssignExpr) IWorkshopDo + Assign(attrs ...field.AssignExpr) IWorkshopDo + Joins(fields ...field.RelationField) IWorkshopDo + Preload(fields ...field.RelationField) IWorkshopDo + FirstOrInit() (*models.Workshop, error) + FirstOrCreate() (*models.Workshop, error) + FindByPage(offset int, limit int) (result []*models.Workshop, count int64, err error) + ScanByPage(result interface{}, offset int, limit int) (count int64, err error) + Scan(result interface{}) (err error) + Returning(value interface{}, columns ...string) IWorkshopDo + UnderlyingDB() *gorm.DB + schema.Tabler +} + +func (w workshopDo) Debug() IWorkshopDo { + return w.withDO(w.DO.Debug()) +} + +func (w workshopDo) WithContext(ctx context.Context) IWorkshopDo { + return w.withDO(w.DO.WithContext(ctx)) +} + +func (w workshopDo) ReadDB() IWorkshopDo { + return w.Clauses(dbresolver.Read) +} + +func (w workshopDo) WriteDB() IWorkshopDo { + return w.Clauses(dbresolver.Write) +} + +func (w workshopDo) Session(config *gorm.Session) IWorkshopDo { + return w.withDO(w.DO.Session(config)) +} + +func (w workshopDo) Clauses(conds ...clause.Expression) IWorkshopDo { + return w.withDO(w.DO.Clauses(conds...)) +} + +func (w workshopDo) Returning(value interface{}, columns ...string) IWorkshopDo { + return w.withDO(w.DO.Returning(value, columns...)) +} + +func (w workshopDo) Not(conds ...gen.Condition) IWorkshopDo { + return w.withDO(w.DO.Not(conds...)) +} + +func (w workshopDo) Or(conds ...gen.Condition) IWorkshopDo { + return w.withDO(w.DO.Or(conds...)) +} + +func (w workshopDo) Select(conds ...field.Expr) IWorkshopDo { + return w.withDO(w.DO.Select(conds...)) +} + +func (w workshopDo) Where(conds ...gen.Condition) IWorkshopDo { + return w.withDO(w.DO.Where(conds...)) +} + +func (w workshopDo) Order(conds ...field.Expr) IWorkshopDo { + return w.withDO(w.DO.Order(conds...)) +} + +func (w workshopDo) Distinct(cols ...field.Expr) IWorkshopDo { + return w.withDO(w.DO.Distinct(cols...)) +} + +func (w workshopDo) Omit(cols ...field.Expr) IWorkshopDo { + return w.withDO(w.DO.Omit(cols...)) +} + +func (w workshopDo) Join(table schema.Tabler, on ...field.Expr) IWorkshopDo { + return w.withDO(w.DO.Join(table, on...)) +} + +func (w workshopDo) LeftJoin(table schema.Tabler, on ...field.Expr) IWorkshopDo { + return w.withDO(w.DO.LeftJoin(table, on...)) +} + +func (w workshopDo) RightJoin(table schema.Tabler, on ...field.Expr) IWorkshopDo { + return w.withDO(w.DO.RightJoin(table, on...)) +} + +func (w workshopDo) Group(cols ...field.Expr) IWorkshopDo { + return w.withDO(w.DO.Group(cols...)) +} + +func (w workshopDo) Having(conds ...gen.Condition) IWorkshopDo { + return w.withDO(w.DO.Having(conds...)) +} + +func (w workshopDo) Limit(limit int) IWorkshopDo { + return w.withDO(w.DO.Limit(limit)) +} + +func (w workshopDo) Offset(offset int) IWorkshopDo { + return w.withDO(w.DO.Offset(offset)) +} + +func (w workshopDo) Scopes(funcs ...func(gen.Dao) gen.Dao) IWorkshopDo { + return w.withDO(w.DO.Scopes(funcs...)) +} + +func (w workshopDo) Unscoped() IWorkshopDo { + return w.withDO(w.DO.Unscoped()) +} + +func (w workshopDo) Create(values ...*models.Workshop) error { + if len(values) == 0 { + return nil + } + return w.DO.Create(values) +} + +func (w workshopDo) CreateInBatches(values []*models.Workshop, batchSize int) error { + return w.DO.CreateInBatches(values, batchSize) +} + +// Save : !!! underlying implementation is different with GORM +// The method is equivalent to executing the statement: db.Clauses(clause.OnConflict{UpdateAll: true}).Create(values) +func (w workshopDo) Save(values ...*models.Workshop) error { + if len(values) == 0 { + return nil + } + return w.DO.Save(values) +} + +func (w workshopDo) First() (*models.Workshop, error) { + if result, err := w.DO.First(); err != nil { + return nil, err + } else { + return result.(*models.Workshop), nil + } +} + +func (w workshopDo) Take() (*models.Workshop, error) { + if result, err := w.DO.Take(); err != nil { + return nil, err + } else { + return result.(*models.Workshop), nil + } +} + +func (w workshopDo) Last() (*models.Workshop, error) { + if result, err := w.DO.Last(); err != nil { + return nil, err + } else { + return result.(*models.Workshop), nil + } +} + +func (w workshopDo) Find() ([]*models.Workshop, error) { + result, err := w.DO.Find() + return result.([]*models.Workshop), err +} + +func (w workshopDo) FindInBatch(batchSize int, fc func(tx gen.Dao, batch int) error) (results []*models.Workshop, err error) { + buf := make([]*models.Workshop, 0, batchSize) + err = w.DO.FindInBatches(&buf, batchSize, func(tx gen.Dao, batch int) error { + defer func() { results = append(results, buf...) }() + return fc(tx, batch) + }) + return results, err +} + +func (w workshopDo) FindInBatches(result *[]*models.Workshop, batchSize int, fc func(tx gen.Dao, batch int) error) error { + return w.DO.FindInBatches(result, batchSize, fc) +} + +func (w workshopDo) Attrs(attrs ...field.AssignExpr) IWorkshopDo { + return w.withDO(w.DO.Attrs(attrs...)) +} + +func (w workshopDo) Assign(attrs ...field.AssignExpr) IWorkshopDo { + return w.withDO(w.DO.Assign(attrs...)) +} + +func (w workshopDo) Joins(fields ...field.RelationField) IWorkshopDo { + for _, _f := range fields { + w = *w.withDO(w.DO.Joins(_f)) + } + return &w +} + +func (w workshopDo) Preload(fields ...field.RelationField) IWorkshopDo { + for _, _f := range fields { + w = *w.withDO(w.DO.Preload(_f)) + } + return &w +} + +func (w workshopDo) FirstOrInit() (*models.Workshop, error) { + if result, err := w.DO.FirstOrInit(); err != nil { + return nil, err + } else { + return result.(*models.Workshop), nil + } +} + +func (w workshopDo) FirstOrCreate() (*models.Workshop, error) { + if result, err := w.DO.FirstOrCreate(); err != nil { + return nil, err + } else { + return result.(*models.Workshop), nil + } +} + +func (w workshopDo) FindByPage(offset int, limit int) (result []*models.Workshop, count int64, err error) { + result, err = w.Offset(offset).Limit(limit).Find() + if err != nil { + return + } + + if size := len(result); 0 < limit && 0 < size && size < limit { + count = int64(size + offset) + return + } + + count, err = w.Offset(-1).Limit(-1).Count() + return +} + +func (w workshopDo) ScanByPage(result interface{}, offset int, limit int) (count int64, err error) { + count, err = w.Count() + if err != nil { + return + } + + err = w.Offset(offset).Limit(limit).Scan(result) + return +} + +func (w workshopDo) Scan(result interface{}) (err error) { + return w.DO.Scan(result) +} + +func (w workshopDo) Delete(models ...*models.Workshop) (result gen.ResultInfo, err error) { + return w.DO.Delete(models) +} + +func (w *workshopDo) withDO(do gen.Dao) *workshopDo { + w.DO = *do.(*gen.DO) + return w +} diff --git a/internal/dal/workshops.gen_test.go b/internal/dal/workshops.gen_test.go new file mode 100644 index 0000000..833c446 --- /dev/null +++ b/internal/dal/workshops.gen_test.go @@ -0,0 +1,145 @@ +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. + +package dal + +import ( + "app/internal/models" + "context" + "fmt" + "testing" + + "gorm.io/gen" + "gorm.io/gen/field" + "gorm.io/gorm/clause" +) + +func init() { + InitializeDB() + err := _gen_test_db.AutoMigrate(&models.Workshop{}) + if err != nil { + fmt.Printf("Error: AutoMigrate(&models.Workshop{}) fail: %s", err) + } +} + +func Test_workshopQuery(t *testing.T) { + workshop := newWorkshop(_gen_test_db) + workshop = *workshop.As(workshop.TableName()) + _do := workshop.WithContext(context.Background()).Debug() + + primaryKey := field.NewString(workshop.TableName(), clause.PrimaryKey) + _, err := _do.Unscoped().Where(primaryKey.IsNotNull()).Delete() + if err != nil { + t.Error("clean table fail:", err) + return + } + + _, ok := workshop.GetFieldByName("") + if ok { + t.Error("GetFieldByName(\"\") from workshop success") + } + + err = _do.Create(&models.Workshop{}) + if err != nil { + t.Error("create item in table fail:", err) + } + + err = _do.Save(&models.Workshop{}) + if err != nil { + t.Error("create item in table fail:", err) + } + + err = _do.CreateInBatches([]*models.Workshop{{}, {}}, 10) + if err != nil { + t.Error("create item in table fail:", err) + } + + _, err = _do.Select(workshop.ALL).Take() + if err != nil { + t.Error("Take() on table fail:", err) + } + + _, err = _do.First() + if err != nil { + t.Error("First() on table fail:", err) + } + + _, err = _do.Last() + if err != nil { + t.Error("First() on table fail:", err) + } + + _, err = _do.Where(primaryKey.IsNotNull()).FindInBatch(10, func(tx gen.Dao, batch int) error { return nil }) + if err != nil { + t.Error("FindInBatch() on table fail:", err) + } + + err = _do.Where(primaryKey.IsNotNull()).FindInBatches(&[]*models.Workshop{}, 10, func(tx gen.Dao, batch int) error { return nil }) + if err != nil { + t.Error("FindInBatches() on table fail:", err) + } + + _, err = _do.Select(workshop.ALL).Where(primaryKey.IsNotNull()).Order(primaryKey.Desc()).Find() + if err != nil { + t.Error("Find() on table fail:", err) + } + + _, err = _do.Distinct(primaryKey).Take() + if err != nil { + t.Error("select Distinct() on table fail:", err) + } + + _, err = _do.Select(workshop.ALL).Omit(primaryKey).Take() + if err != nil { + t.Error("Omit() on table fail:", err) + } + + _, err = _do.Group(primaryKey).Find() + if err != nil { + t.Error("Group() on table fail:", err) + } + + _, err = _do.Scopes(func(dao gen.Dao) gen.Dao { return dao.Where(primaryKey.IsNotNull()) }).Find() + if err != nil { + t.Error("Scopes() on table fail:", err) + } + + _, _, err = _do.FindByPage(0, 1) + if err != nil { + t.Error("FindByPage() on table fail:", err) + } + + _, err = _do.ScanByPage(&models.Workshop{}, 0, 1) + if err != nil { + t.Error("ScanByPage() on table fail:", err) + } + + _, err = _do.Attrs(primaryKey).Assign(primaryKey).FirstOrInit() + if err != nil { + t.Error("FirstOrInit() on table fail:", err) + } + + _, err = _do.Attrs(primaryKey).Assign(primaryKey).FirstOrCreate() + if err != nil { + t.Error("FirstOrCreate() on table fail:", err) + } + + var _a _another + var _aPK = field.NewString(_a.TableName(), "id") + + err = _do.Join(&_a, primaryKey.EqCol(_aPK)).Scan(map[string]interface{}{}) + if err != nil { + t.Error("Join() on table fail:", err) + } + + err = _do.LeftJoin(&_a, primaryKey.EqCol(_aPK)).Scan(map[string]interface{}{}) + if err != nil { + t.Error("LeftJoin() on table fail:", err) + } + + _, err = _do.Not().Or().Clauses().Take() + if err != nil { + t.Error("Not/Or/Clauses on table fail:", err) + } +} diff --git a/internal/models/models.go b/internal/models/models.go index 6f66c72..d25b828 100644 --- a/internal/models/models.go +++ b/internal/models/models.go @@ -1,37 +1,115 @@ package models var Entities = []any{ - &Post{}, &Author{}, &PostType{}, &Comment{}, + &Customer{}, &Order{}, &PrepTask{}, &ProductType{}, &Shift{}, &Task{}, &TeamTask{}, &WorkArea{}, &Worker{}, &Workshop{}, &TeamType{}, } -type PostType struct { - Id uint `gorm:"primaryKey" ui:"hidden"` - Name string `ui:"label:Название;"` +type Customer struct { + Id uint `gorm:"primaryKey" ui:"label:ID;readonly"` + Title string `ui:"label:Название"` + Contact string `ui:"label:Контакт"` + Orders []Order `gorm:"constraint:OnDelete:CASCADE;" ui:"hidden"` } -type Post struct { - Id uint `gorm:"primaryKey" ui:"hidden;label:\"Номер поста\""` - Text string `ui:"label:Текст"` - Deadline int64 `ui:"label:Дедлайн;datatype:datetime;"` - CreatedAt int64 `gorm:"autoCreateTime" ui:"label:Время создания;readonly;datatype:datetime;"` - AuthorId uint `ui:"hidden" gorm:"constraint:OnUpdate:CASCADE,OnDelete:CASCADE;"` - Author Author `ui:"label:Автор; field:Name;"` - PostTypeId uint `ui:"hidden; excel:Номер типа поста;"` - PostType PostType `ui:"label:Тип поста; field:Name;" gorm:"constraint:OnUpdate:CASCADE,OnDelete:CASCADE;"` - Comments []Comment `ui:"label:Комментарии; field:Text;" gorm:"many2many:comments_post;constraint:OnUpdate:CASCADE,OnDelete:CASCADE;"` +type Order struct { + Id uint `gorm:"primaryKey" ui:"label:ID;readonly"` + Status string `ui:"label:Статус"` + Description string `ui:"label:Описание"` + ProductTypeId int `gorm:"not null;" ui:"hidden"` + ProductType ProductType `gorm:"not null;foreignKey:ProductTypeId;references:Id;constraint:OnDelete:CASCADE;" ui:"label:Тип;field:Name"` + ProductAmount uint `ui:"label:Количество продукции"` + CustomerId uint `gorm:"not null;" ui:"hidden"` + Customer Customer `gorm:"not null;foreignKey:CustomerId;references:Id;constraint:OnDelete:CASCADE;" ui:"label:Клиент;field:Title"` + Tasks []Task `gorm:"constraint:OnDelete:CASCADE" ui:"hidden"` + CreatedAt int64 `gorm:"autoCreateTime" ui:"label:Дата создания;readonly;datatype:datetime"` + DeadlineDate int64 `ui:"label:Крайний срок;datatype:datetime"` } -type Author struct { - Id uint `gorm:"primaryKey" ui:"hidden"` - Name string `ui:"label:Имя;"` - Posts []Post `ui:"label:Посты; field:Text;" gorm:"constraint:OnUpdate:CASCADE,OnDelete:CASCADE;"` - Comments []Comment `ui:"label:Комментарии; field:Text;" gorm:"constraint:OnUpdate:CASCADE,OnDelete:CASCADE;"` +type PrepTask struct { + Id uint `gorm:"primaryKey" ui:"label:ID;readonly"` + Status string `gorm:"default:'Создано'" ui:"label:Статус"` + Description string `ui:"label:Описание"` + TaskId uint `gorm:"not null;" ui:"hidden"` + Task Task `gorm:"foreignKey:TaskId;references:Id;constraint:OnDelete:CASCADE;" ui:"label:Задача;field:Description"` + WorkAreaId uint `gorm:"not null;" ui:"hidden"` + WorkArea WorkArea `gorm:"foreignKey:WorkAreaId;references:Id;constraint:OnDelete:CASCADE;" ui:"label:Рабочая зона;field:Name"` + CreatedAt int64 `gorm:"autoCreationTime" ui:"label:Дата создания;readonly;datatype:datetime"` + Deadline int64 `ui:"label:Крайний срок;datatype:datetime"` } -type Comment struct { - Id uint `gorm:"primaryKey" ui:"hidden"` - Text string `ui:"label:Текст;"` - AuthorId uint `ui:"hidden"` - Author Author `ui:"label:Автор; field:Name;" gorm:"foreignKey:AuthorId;references:Id;constraint:OnUpdate:CASCADE,OnDelete:CASCADE;"` - Posts []Post `ui:"label:Посты; field:Text;" gorm:"many2many:comments_post;constraint:OnUpdate:CASCADE,OnDelete:CASCADE;"` +type ProductType struct { + Id uint `gorm:"primaryKey" ui:"label:ID;readonly"` + Name string `gorm:"not null" ui:"label:Название"` +} + +type Shift struct { + Id uint `gorm:"primaryKey" ui:"label:ID;readonly"` + Description string `ui:"label:Описание"` + ProductTypeId uint `ui:"hidden"` + ProductType ProductType `ui:"field:Name"` + ProductAmount uint `ui:"label:Количество продукции"` + ShiftDate int64 `ui:"label:Дата смены;datatype:datetime"` + WorkAreaId uint `ui:"hidden"` + WorkArea WorkArea `ui:"field:Name"` + CreatedAt int64 `gorm:"autoCreateTime" ui:"label:Дата создания;readonly;datatype:datetime"` +} + +type Task struct { + Id uint `gorm:"primaryKey" ui:"label:ID;readonly"` + Description string `ui:"label:Описание"` + ProductTypeId uint `gorm:"not null;" ui:"hidden"` + ProductType ProductType `gorm:"foreignKey:ProductTypeId;references:Id;constraint:OnDelete:CASCADE;" ui:"label:Тип;field:Name"` + Workshops []*Workshop `gorm:"many2many:workshop_task;constraint:OnDelete:CASCADE;" ui:"hidden"` + OrderId uint `gorm:"not null;" ui:"hidden"` + Order Order `gorm:"foreignKey:OrderId;references:Id;constraint:OnDelete:CASCADE;" ui:"label:Заказ;field:Description"` + PrepTasks []PrepTask `gorm:"constraint:OnDelete:CASCADE;" ui:"hidden"` + ProductionStart int64 `ui:"label:Дата начала производства;datatype:datetime"` + CreatedAt int64 `gorm:"autoCreateTime" ui:"label:Дата создания;readonly;datatype:datetime"` + Amount uint `ui:"label:Количество"` +} + +type TeamTask struct { + Id uint `gorm:"primaryKey" ui:"label:ID;readonly"` + TeamTypeId uint `ui:"hidden"` + TeamType TeamType `ui:"field:Name"` + TeamLeaderId uint `ui:"hidden"` + TeamLeader Worker `ui:"field:Name"` + TeamMembers []*Worker `gorm:"many2many:worker_team_tasks;constraint:OnDelete:CASCADE;OnUpdate:CASCADE;" ui:"hidden"` + WorkStartDate int64 `ui:"label:Дата начала работ;datatype:datetime"` + WorkAreaId uint `ui:"hidden"` + WorkArea WorkArea `ui:"field:Name"` + ShiftDuties string `gorm:"check:shift_duties IN ('1/1','2/2')" ui:"label:Обязанности смены"` +} + +type TeamType struct { + Id uint `gorm:"primaryKey" ui:"label:ID;readonly"` + Name string `gorm:"not null" ui:"label:Название"` +} + +type WorkArea struct { + Id uint `gorm:"primaryKey" ui:"label:ID;readonly"` + Name string `ui:"label:Наименование"` + Description string `ui:"label:Описание"` + Performance uint `ui:"label:Производительность"` + WorkshopId uint `gorm:"not null;" ui:"hidden"` + Workshop Workshop `gorm:"foreignKey:WorkshopId;references:Id;" ui:"label:Цех;field:Name"` + PrepTasks []PrepTask `gorm:"constraint:OnDelete:CASCADE;" ui:"hidden"` + Shifts []Shift `gorm:"constraint:OnDelete:CASCADE;" ui:"hidden"` + TeamTasks []TeamTask `gorm:"foreignKey:Id;constraint:OnDelete:CASCADE;" ui:"hidden"` +} + +type Worker struct { + Id uint `gorm:"primaryKey" ui:"label:ID;readonly"` + Name string `ui:"label:Имя"` + TeamTasks []*TeamTask `gorm:"many2many:worker_team_tasks;constraint:OnDelete:CASCADE;OnUpdate:CASCADE;" ui:"hidden"` + Workshop Workshop `gorm:"foreignKey:WorkshopId;references:Id;" ui:"field:Name"` + WorkshopId uint `ui:"hidden"` +} + +type Workshop struct { + Id uint `gorm:"primaryKey" ui:"label:ID;readonly"` + Name string `ui:"label:Наименование"` + WorkAreas []WorkArea `gorm:"constraint:OnDelete:CASCADE;" ui:"hidden"` + Tasks []*Task `gorm:"many2many:workshop_task;constraint:OnDelete:CASCADE;" ui:"hidden"` + Workers []Worker `gorm:"constraint:OnDelete:CASCADE;" ui:"hidden"` } diff --git a/internal/services/customer.go b/internal/services/customer.go new file mode 100644 index 0000000..86248aa --- /dev/null +++ b/internal/services/customer.go @@ -0,0 +1,69 @@ +package services + +import ( + "app/internal/dal" + "app/internal/database" + "app/internal/models" + "app/internal/utils" + "errors" + "gorm.io/gen/field" + "gorm.io/gorm" +) + +type CustomerService struct { +} +type Customer = models.Customer + +func (service *CustomerService) Create(item Customer) (Customer, error) { + utils.ReplaceEmptySlicesWithNil(&item) + err := dal.Customer.Create(&item) + if err != nil { + return item, err + } + err = utils.AppendAssociations(database.GetInstance(), &item) + return item, err +} +func (service *CustomerService) GetAll() ([]*Customer, error) { + var customers []*Customer + customers, err := dal.Customer.Preload(field.Associations).Find() + return customers, err +} +func (service *CustomerService) GetById(id uint) (*Customer, error) { + item, err := dal.Customer.Preload(field.Associations).Where(dal.Customer.Id.Eq(id)).First() + if err != nil { + if errors.Is(err, gorm.ErrRecordNotFound) { + return nil, nil + } else { + return nil, err + } + } + return item, nil +} +func (service *CustomerService) Update(item Customer) (Customer, error) { + utils.ReplaceEmptySlicesWithNil(&item) + _, err := dal.Customer.Updates(&item) + if err != nil { + return item, err + } + err = utils.UpdateAssociations(database.GetInstance(), &item) + + if err != nil { + return item, err + } + + return item, err +} +func (service *CustomerService) Delete(id uint) error { + _, err := dal.Customer.Unscoped().Where(dal.Customer.Id.Eq(id)).Delete() + return err +} +func (service *CustomerService) Count() (int64, error) { + amount, err := dal.Customer.Count() + return amount, err +} +func (service *CustomerService) SortedByOrder(fieldsSortingOrder []utils.SortField) ([]*Customer, error) { + return utils.SortByOrder(fieldsSortingOrder, Customer{}) +} +func (service *CustomerService) SearchByAllTextFields(phrase string) ([]*Customer, error) { + return utils.FindPhraseByStringFields[Customer](phrase, Customer{}) +} diff --git a/internal/services/default_data.go b/internal/services/default_data.go index 2bd477c..94b9e6e 100644 --- a/internal/services/default_data.go +++ b/internal/services/default_data.go @@ -7,10 +7,16 @@ import ( ) func InsertDefaultData() { - insertPostTypes() - insertAuthors() - insertPosts() - insertComments() + insertWorkshops() + insertProductTypes() + insertCustomers() + insertOrders() + insertTasks() + insertPrepTasks() + insertShifts() + insertTeamTypes() + insertWorkers() + insertTeamTasks() } func InsertDefaultEntityData[T any](service Service[T], entities []T) { @@ -22,85 +28,386 @@ func InsertDefaultEntityData[T any](service Service[T], entities []T) { } } -func insertPosts() { - InsertDefaultEntityData(&PostService{}, []Post{ +func insertWorkshops() { + InsertDefaultEntityData(&WorkshopService{}, []Workshop{ + { + Id: 1, + Name: "Лесопильный комплекс", + WorkAreas: []WorkArea{ + { + Id: 1, + Name: "Лесопильная линия №1", + Description: "Используется для распиловки тонкомеров, например, реек.", + PrepTasks: nil, + Performance: 50, + }, + { + Id: 2, + Name: "Лесопильная линия №2", + Description: "Используется для распиловки среднего леса.", + PrepTasks: nil, + Performance: 100, + }, + }, + Tasks: nil, + }, + { + Id: 2, + Name: "Сушильный комплекс", + WorkAreas: []WorkArea{ + {Id: 3, Name: "Сушильная камера №1", Performance: 50}, + {Id: 4, Name: "Сушильная камера №2", Performance: 60}, + {Id: 5, Name: "Сушильная камера №3", Performance: 80}, + {Id: 6, Name: "Сушильная камера №4", Performance: 85}, + }, + Tasks: nil, + }, + { + Id: 3, + Name: "Цех строжки и обработки", + WorkAreas: []WorkArea{ + { + Id: 7, + Name: "Линия строжки №1", + Description: "Используется для строжки тонкомеров", + Performance: 50, + }, + { + Id: 8, + Name: "Линия строжки №2", + Description: "Используется для строжки среднего леса", + Performance: 80, + }, + { + Id: 9, + Name: "Линия строжки №3", + Description: "Используется для строжки среднего леса", + Performance: 100, + }, + }, + Tasks: nil, + }, + { + Id: 4, + Name: "Пеллетный цех", + WorkAreas: []WorkArea{ + {Id: 10, Name: "Дробилка", Performance: 800}, + {Id: 11, Name: "Сушилка", Performance: 900}, + {Id: 12, Name: "Гранулятор №1", Performance: 900}, + {Id: 13, Name: "Гранулятор №2", Performance: 600}, + }, + Tasks: nil, + }, + }) +} + +func insertProductTypes() { + InsertDefaultEntityData(&ProductTypeService{}, []ProductType{ + {Id: 1, Name: "Сырые пиломатериалы"}, + {Id: 2, Name: "Сухие пиломатериалы"}, + {Id: 3, Name: "Строганные доски"}, + {Id: 4, Name: "Рейки"}, + {Id: 5, Name: "Брус"}, + {Id: 6, Name: "Пеллеты"}, + }) +} + +func insertCustomers() { + InsertDefaultEntityData(&CustomerService{}, []Customer{ + { + Id: 1, + Title: "Rivalli", + Contact: "Телефон: +74955855525", + Orders: []Order{}, + }, + { + Id: 2, + Title: "Elemfort", + Contact: "Телефон: +79270988888", + Orders: []Order{}, + }, + { + Id: 3, + Title: "Квазар", + Contact: "Телефон: +78002342134", + Orders: []Order{}, + }, + }) +} + +func insertOrders() { + InsertDefaultEntityData(&OrderService{}, []Order{ + { + Status: "Согласован клиентом", + ProductAmount: 400, + ProductTypeId: 1, + Description: "Сырая древесина для Rivalli", + DeadlineDate: time.Date(2025, 6, 25, 0, 0, 0, 0, time.Local).Unix(), + CustomerId: 1, + }, + { + Status: "Согласован клиентом", + ProductTypeId: 3, + ProductAmount: 300, + Description: "Сухая древесина для производителя мебели. Контракт #574853", + DeadlineDate: time.Date(2025, 6, 10, 0, 0, 0, 0, time.Local).Unix(), + CustomerId: 2, + }, + { + Status: "Согласован клиентом", + ProductAmount: 100, + ProductTypeId: 4, + Description: "Контракт #234342", + DeadlineDate: time.Date(2025, 12, 5, 0, 0, 0, 0, time.Local).Unix(), + CustomerId: 3, + }, + { + Status: "Согласован клиентом", + ProductAmount: 800, + ProductTypeId: 6, + Description: "Производство пеллет", + DeadlineDate: time.Date(2025, 2, 5, 0, 0, 0, 0, time.Local).Unix(), + CustomerId: 3, + }, + { + Status: "Черновик", + ProductAmount: 100, + ProductTypeId: 6, + Description: "Производство пеллет. Заказ на стадии согласования", + DeadlineDate: time.Date(2026, 2, 5, 0, 0, 0, 0, time.Local).Unix(), + CustomerId: 1, + }, + }) +} + +func insertTasks() { + InsertDefaultEntityData(&TaskService{}, []Task{ + { + Id: 1, + Description: "Обработка сырых пиломатериалов", + ProductTypeId: 2, + Workshops: []*Workshop{{Id: 1}}, + OrderId: 1, + ProductionStart: time.Date(2025, 11, 25, 0, 0, 0, 0, time.Local).Unix(), + Amount: 10, + }, + { + Id: 2, + Description: "Распиловка леса", + ProductTypeId: 1, + Workshops: []*Workshop{{Id: 1}, {Id: 2}}, + OrderId: 2, + ProductionStart: time.Date(2025, 8, 15, 0, 0, 0, 0, time.Local).Unix(), + Amount: 1, + }, + { + Id: 3, + Description: "Строгание реек", + ProductTypeId: 3, + Workshops: []*Workshop{{Id: 1}, {Id: 2}}, + OrderId: 3, + ProductionStart: time.Date(2025, 7, 10, 0, 0, 0, 0, time.Local).Unix(), + Amount: 5, + }, + { + Id: 4, + Description: "Производство пеллет", + ProductTypeId: 6, + Workshops: []*Workshop{{Id: 4}}, + OrderId: 4, + ProductionStart: time.Date(2025, 4, 5, 0, 0, 0, 0, time.Local).Unix(), + Amount: 1, + }, + }) +} + +func insertPrepTasks() { + InsertDefaultEntityData(&PrepTaskService{}, []PrepTask{ + { + Id: 1, + Description: "Подготовка лесопильной линии. Материал для обработки: сырые пиломатериалы", + TaskId: 1, + WorkAreaId: 2, + Deadline: time.Date(2025, 11, 10, 0, 0, 0, 0, time.Local).Unix(), + }, + { + Id: 2, + Description: "Подготовка лесопильной линии. Материал для обработки: сухие пиломатериалы", + TaskId: 2, + WorkAreaId: 1, + Deadline: time.Date(2025, 8, 10, 0, 0, 0, 0, time.Local).Unix(), + }, + { + Id: 3, + Description: "Подготовка сушильной камеры. Сушка распиленных сухих пиломатериалов", + TaskId: 2, + WorkAreaId: 3, + Deadline: time.Date(2025, 8, 15, 0, 0, 0, 0, time.Local).Unix(), + }, + { + Id: 4, + Description: "Подготовка лесопильного цеха для производства реек. Сушка древесины для производства реек", + TaskId: 3, + WorkAreaId: 2, + Deadline: time.Date(2025, 8, 15, 0, 0, 0, 0, time.Local).Unix(), + }, + { + Id: 5, + Description: "Подготовка сушильной камеры. Сушка распиленных сухих реек", + TaskId: 3, + WorkAreaId: 3, + Deadline: time.Date(2025, 8, 15, 0, 0, 0, 0, time.Local).Unix(), + }, + { + Id: 6, + Description: "Подготовка дробилки для производства пеллет", + TaskId: 4, + WorkAreaId: 10, + Deadline: time.Date(2025, 4, 1, 0, 0, 0, 0, time.Local).Unix(), + }, + { + Id: 7, + Description: "Подготовка сушилки для производства пеллет", + TaskId: 4, + WorkAreaId: 11, + Deadline: time.Date(2025, 4, 2, 0, 0, 0, 0, time.Local).Unix(), + }, + { + Id: 8, + Description: "Подготовка гранулятора №1 для производства пеллет", + TaskId: 4, + WorkAreaId: 12, + Deadline: time.Date(2025, 4, 3, 0, 0, 0, 0, time.Local).Unix(), + }, + { + Id: 9, + Description: "Подготовка гранулятора №2 для производства пеллет", + TaskId: 4, + WorkAreaId: 13, + Deadline: time.Date(2025, 4, 4, 0, 0, 0, 0, time.Local).Unix(), + }, + }) +} + +func insertShifts() { + InsertDefaultEntityData(&ShiftService{}, []Shift{ + { + Id: 1, + Description: "Распилка лесоматериалов", + ProductTypeId: 1, + ProductAmount: 45, + ShiftDate: time.Date(2025, 11, 20, 0, 0, 0, 0, time.Local).Unix(), + WorkAreaId: 2, + }, + { + Id: 2, + Description: "Обработка сухой древесины", + ProductTypeId: 3, + ProductAmount: 39, + ShiftDate: time.Date(2025, 8, 13, 0, 0, 0, 0, time.Local).Unix(), + WorkAreaId: 1, + }, + { + Id: 3, + Description: "Сушка реек", + ProductTypeId: 4, + ProductAmount: 55, + ShiftDate: time.Date(2025, 7, 8, 0, 0, 0, 0, time.Local).Unix(), + WorkAreaId: 4, + }, + { + Id: 4, + Description: "Грануляция паллет", + ProductTypeId: 6, + ProductAmount: 890, + ShiftDate: time.Date(2025, 4, 1, 0, 0, 0, 0, time.Local).Unix(), + WorkAreaId: 12, + }, + }) +} + +func insertTeamTypes() { + InsertDefaultEntityData(&TeamTypeService{}, []TeamType{ + {Id: 1, Name: "Бригада по распиловке"}, + {Id: 2, Name: "Бригада по сушке"}, + {Id: 3, Name: "Бригада по обработке"}, + {Id: 4, Name: "Бригада пеллетного цеха"}, + }) +} + +func insertWorkers() { + InsertDefaultEntityData(&WorkerService{}, []Worker{ + {Id: 1, Name: "Иванов Иван Иванович", WorkshopId: 1}, + {Id: 2, Name: "Петров Петр Петрович", WorkshopId: 1}, + {Id: 3, Name: "Сидоров Сидор Сидорович", WorkshopId: 1}, + {Id: 4, Name: "Пеллетчиков Пеллет Пеллетович", WorkshopId: 4}, + {Id: 5, Name: "Кузнецов Кузьма Кузьмич", WorkshopId: 2}, + {Id: 6, Name: "Смирнов Сергей Сергеевич", WorkshopId: 2}, + {Id: 7, Name: "Васильев Василий Васильевич", WorkshopId: 3}, + {Id: 8, Name: "Михайлов Михаил Михайлович", WorkshopId: 3}, + {Id: 10, Name: "Александров Александр Александрович", WorkshopId: 4}, + {Id: 11, Name: "Николаев Николай Николаевич", WorkshopId: 4}, + {Id: 12, Name: "Дмитриев Дмитрий Дмитриевич", WorkshopId: 4}, + {Id: 13, Name: "Дмитриев Дмитрий Федорович", WorkshopId: 4}, + }) +} + +func insertTeamTasks() { + InsertDefaultEntityData(&TeamTaskService{}, []TeamTask{ { Id: 1, - Text: "Жителям Кузбасса запретили болеть.", - Deadline: time.Now().Unix(), - AuthorId: 1, - PostTypeId: 1, + TeamTypeId: 1, + TeamMembers: []*Worker{ + {Id: 1}, + }, + WorkAreaId: 2, + ShiftDuties: "1/1", + WorkStartDate: time.Date(2024, 12, 5, 0, 0, 0, 0, time.Local).Unix(), + TeamLeaderId: 13, }, { Id: 2, - Deadline: time.Now().Add(time.Hour * 24 * 5).Unix(), - Text: "⚡️⚡️⚡️Дома будут летать.", - AuthorId: 2, - PostTypeId: 2, + TeamTypeId: 1, + TeamMembers: []*Worker{ + {Id: 2}, {Id: 3}, + }, + WorkAreaId: 1, + ShiftDuties: "1/1", + WorkStartDate: time.Date(2024, 12, 10, 0, 0, 0, 0, time.Local).Unix(), + TeamLeaderId: 2, }, { Id: 3, - Deadline: time.Now().Add(time.Hour * 24 * 6).Unix(), - Text: "В Кузбассе начали строить дома выше, чтобы жители были ближе к богу и солнцу.", - AuthorId: 3, - PostTypeId: 3, - }, - }) -} - -func insertAuthors() { - InsertDefaultEntityData(&AuthorService{}, []Author{ - { - Id: 1, - Name: "ИА Кузбасс", - }, - { - Id: 2, - Name: "ASTRA", - }, - { - Id: 3, - Name: "ЧТД", - }, - }) -} - -func insertComments() { - InsertDefaultEntityData(&CommentService{}, []Comment{ - { - Id: 1, - Text: "Это просто замечательно!", - AuthorId: 1, - Posts: []Post{{Id: 1}}, - }, - { - Id: 2, - Text: "Я тоже думаю, что это замечательно!", - AuthorId: 2, - Posts: []Post{{Id: 2}}, - }, - { - Id: 3, - Text: "Я тоже думаю, что это замечательно!", - AuthorId: 3, - Posts: []Post{{Id: 3}}, - }, - }) -} - -func insertPostTypes() { - InsertDefaultEntityData(&PostTypeService{}, []PostType{ - { - Id: 1, - Name: "Общество", - }, - { - Id: 2, - Name: "Политика", - }, - { - Id: 3, - Name: "Экономика", + TeamTypeId: 2, + TeamMembers: []*Worker{ + {Id: 5}, {Id: 6}, + }, + WorkAreaId: 3, + ShiftDuties: "1/1", + WorkStartDate: time.Date(2025, 1, 7, 0, 0, 0, 0, time.Local).Unix(), + TeamLeaderId: 5, + }, + { + Id: 4, + TeamTypeId: 3, + TeamMembers: []*Worker{ + {Id: 7}, {Id: 8}, + }, + WorkAreaId: 8, + ShiftDuties: "2/2", + WorkStartDate: time.Date(2025, 2, 10, 0, 0, 0, 0, time.Local).Unix(), + TeamLeaderId: 7, + }, + { + Id: 5, + TeamTypeId: 4, + TeamMembers: []*Worker{ + {Id: 4}, {Id: 10}, {Id: 11}, {Id: 12}, + }, + WorkAreaId: 12, + ShiftDuties: "2/2", + WorkStartDate: time.Date(2025, 3, 10, 0, 0, 0, 0, time.Local).Unix(), + TeamLeaderId: 10, }, }) } diff --git a/internal/services/excel.go b/internal/services/excel.go index 6cd8aba..98e8011 100644 --- a/internal/services/excel.go +++ b/internal/services/excel.go @@ -1,10 +1,7 @@ package services import ( - "app/internal/addons/excel" - "app/internal/dialogs" "github.com/wailsapp/wails/v3/pkg/application" - "strconv" ) type ExcelModule struct{} @@ -12,45 +9,45 @@ type ExcelModule struct{} var ExcelService = application.NewService(&ExcelModule{}) func (s *ExcelModule) ImportAllEntities() error { - postTypeService := PostTypeService{} - filepath, err := dialogs.OpenFileDialog("Импорт данных") - if err != nil { - return err - } - err = excel.ImportEntitiesFromSpreadsheet(filepath, excel.Importer{ - SheetName: "Тип поста", - Loader: func(rowIndex int, row []string) error { - id, err := strconv.Atoi(row[0]) - if err != nil { - return err - } - - _, err = postTypeService.Create(PostType{ - Id: uint(id), - Name: row[1], - }) - if err != nil { - return err - } - return nil - }, - }) - if err != nil { - return err - } + //postTypeService := PostTypeService{} + //filepath, err := dialogs.OpenFileDialog("Импорт данных") + //if err != nil { + // return err + //} + //err = excel.ImportEntitiesFromSpreadsheet(filepath, excel.Importer{ + // SheetName: "Тип поста", + // Loader: func(rowIndex int, row []string) error { + // id, err := strconv.Atoi(row[0]) + // if err != nil { + // return err + // } + // + // _, err = postTypeService.Create(PostType{ + // Id: uint(id), + // Name: row[1], + // }) + // if err != nil { + // return err + // } + // return nil + // }, + //}) + //if err != nil { + // return err + //} return nil } func (s *ExcelModule) ExportAllEntities() error { - postService := PostService{} - exporter := excel.Exporter[Post]{ - SheetName: "Посты", - Entity: Post{}, - Provider: postService.GetAll, - } - err := excel.ExportEntitiesToSpreadsheet("report.xlsx", exporter) - if err != nil { - return err - } + //postService := PostService{} + //exporter := excel.Exporter[Post]{ + // SheetName: "Посты", + // Entity: Post{}, + // Provider: postService.GetAll, + //} + //err := excel.ExportEntitiesToSpreadsheet("report.xlsx", exporter) + //if err != nil { + // return err + //} return nil } diff --git a/internal/services/order.go b/internal/services/order.go new file mode 100644 index 0000000..065a462 --- /dev/null +++ b/internal/services/order.go @@ -0,0 +1,69 @@ +package services + +import ( + "app/internal/dal" + "app/internal/database" + "app/internal/models" + "app/internal/utils" + "errors" + "gorm.io/gen/field" + "gorm.io/gorm" +) + +type OrderService struct { +} +type Order = models.Order + +func (service *OrderService) Create(item Order) (Order, error) { + utils.ReplaceEmptySlicesWithNil(&item) + err := dal.Order.Create(&item) + if err != nil { + return item, err + } + err = utils.AppendAssociations(database.GetInstance(), &item) + return item, err +} +func (service *OrderService) GetAll() ([]*Order, error) { + var orders []*Order + orders, err := dal.Order.Preload(field.Associations).Find() + return orders, err +} +func (service *OrderService) GetById(id uint) (*Order, error) { + item, err := dal.Order.Preload(field.Associations).Where(dal.Order.Id.Eq(id)).First() + if err != nil { + if errors.Is(err, gorm.ErrRecordNotFound) { + return nil, nil + } else { + return nil, err + } + } + return item, nil +} +func (service *OrderService) Update(item Order) (Order, error) { + utils.ReplaceEmptySlicesWithNil(&item) + _, err := dal.Order.Updates(&item) + if err != nil { + return item, err + } + err = utils.UpdateAssociations(database.GetInstance(), &item) + + if err != nil { + return item, err + } + + return item, err +} +func (service *OrderService) Delete(id uint) error { + _, err := dal.Order.Unscoped().Where(dal.Order.Id.Eq(id)).Delete() + return err +} +func (service *OrderService) Count() (int64, error) { + amount, err := dal.Order.Count() + return amount, err +} +func (service *OrderService) SortedByOrder(fieldsSortingOrder []utils.SortField) ([]*Order, error) { + return utils.SortByOrder(fieldsSortingOrder, Order{}) +} +func (service *OrderService) SearchByAllTextFields(phrase string) ([]*Order, error) { + return utils.FindPhraseByStringFields[Order](phrase, Order{}) +} diff --git a/internal/services/post.go b/internal/services/post.go deleted file mode 100644 index 3213803..0000000 --- a/internal/services/post.go +++ /dev/null @@ -1,69 +0,0 @@ -package services - -import ( - "app/internal/dal" - "app/internal/database" - "app/internal/models" - "app/internal/utils" - "errors" - "gorm.io/gen/field" - "gorm.io/gorm" -) - -type PostService struct{} -type Post = models.Post - -func (service *PostService) Create(item Post) (Post, error) { - utils.ReplaceEmptySlicesWithNil(&item) - err := dal.Post.Preload(field.Associations).Create(&item) - if err != nil { - return item, err - } - err = utils.AppendAssociations(database.GetInstance(), &item) - return item, err -} -func (service *PostService) GetAll() ([]*Post, error) { - var posts []*Post - posts, err := dal.Post.Preload(field.Associations).Find() - return posts, err -} -func (service *PostService) GetById(id uint) (*Post, error) { - item, err := dal.Post.Preload(field.Associations).Where(dal.Post.Id.Eq(id)).First() - if err != nil { - if errors.Is(err, gorm.ErrRecordNotFound) { - return nil, nil - } else { - return nil, err - } - } - return item, nil -} - -func (service *PostService) Update(item Post) (Post, error) { - utils.ReplaceEmptySlicesWithNil(&item) - err := dal.Post.Preload(field.Associations).Save(&item) - if err != nil { - return item, err - } - err = utils.UpdateAssociations(database.GetInstance(), &item) - if err != nil { - return item, err - } - return item, err -} - -func (service *PostService) Delete(id uint) error { - _, err := dal.Post.Unscoped().Where(dal.Post.Id.Eq(id)).Delete() - return err -} -func (service *PostService) Count() (int64, error) { - amount, err := dal.Post.Count() - return amount, err -} - -func (service *PostService) SortedByOrder(fieldsSortOrder []utils.SortField) ([]*Post, error) { - return utils.SortByOrder(fieldsSortOrder, Post{}) -} -func (service *PostService) SearchByAllTextFields(phrase string) ([]*Post, error) { - return utils.FindPhraseByStringFields[Post](phrase, Post{}) -} diff --git a/internal/services/posttype.go b/internal/services/posttype.go deleted file mode 100644 index 95fd30a..0000000 --- a/internal/services/posttype.go +++ /dev/null @@ -1,68 +0,0 @@ -package services - -import ( - "app/internal/dal" - "app/internal/database" - "app/internal/models" - "app/internal/utils" - "errors" - "gorm.io/gen/field" - "gorm.io/gorm" -) - -type PostTypeService struct { -} -type PostType = models.PostType - -func (service *PostTypeService) Create(item PostType) (PostType, error) { - utils.ReplaceEmptySlicesWithNil(&item) - err := dal.PostType.Preload(field.Associations).Create(&item) - if err != nil { - return item, err - } - err = utils.AppendAssociations(database.GetInstance(), &item) - return item, err -} -func (service *PostTypeService) GetAll() ([]*PostType, error) { - var posttypes []*PostType - posttypes, err := dal.PostType.Preload(field.Associations).Find() - return posttypes, err -} -func (service *PostTypeService) GetById(id uint) (*PostType, error) { - item, err := dal.PostType.Preload(field.Associations).Where(dal.PostType.Id.Eq(id)).First() - if err != nil { - if errors.Is(err, gorm.ErrRecordNotFound) { - return nil, nil - } else { - return nil, err - } - } - return item, nil -} -func (service *PostTypeService) Update(item PostType) (PostType, error) { - utils.ReplaceEmptySlicesWithNil(&item) - err := dal.PostType.Preload(field.Associations).Save(&item) - if err != nil { - return item, err - } - err = utils.UpdateAssociations(database.GetInstance(), &item) - if err != nil { - return item, err - } - return item, err -} -func (service *PostTypeService) Delete(id uint) error { - _, err := dal.PostType.Unscoped().Where(dal.PostType.Id.Eq(id)).Delete() - return err -} -func (service *PostTypeService) Count() (int64, error) { - amount, err := dal.PostType.Count() - return amount, err -} - -func (service *PostTypeService) SortedByOrder(fieldsSortOrder []utils.SortField) ([]*PostType, error) { - return utils.SortByOrder(fieldsSortOrder, PostType{}) -} -func (service *PostTypeService) SearchByAllTextFields(phrase string) ([]*PostType, error) { - return utils.FindPhraseByStringFields[PostType](phrase, PostType{}) -} diff --git a/internal/services/preptask.go b/internal/services/preptask.go new file mode 100644 index 0000000..8629959 --- /dev/null +++ b/internal/services/preptask.go @@ -0,0 +1,69 @@ +package services + +import ( + "app/internal/dal" + "app/internal/database" + "app/internal/models" + "app/internal/utils" + "errors" + "gorm.io/gen/field" + "gorm.io/gorm" +) + +type PrepTaskService struct { +} +type PrepTask = models.PrepTask + +func (service *PrepTaskService) Create(item PrepTask) (PrepTask, error) { + utils.ReplaceEmptySlicesWithNil(&item) + err := dal.PrepTask.Create(&item) + if err != nil { + return item, err + } + err = utils.AppendAssociations(database.GetInstance(), &item) + return item, err +} +func (service *PrepTaskService) GetAll() ([]*PrepTask, error) { + var preptasks []*PrepTask + preptasks, err := dal.PrepTask.Preload(field.Associations).Find() + return preptasks, err +} +func (service *PrepTaskService) GetById(id uint) (*PrepTask, error) { + item, err := dal.PrepTask.Preload(field.Associations).Where(dal.PrepTask.Id.Eq(id)).First() + if err != nil { + if errors.Is(err, gorm.ErrRecordNotFound) { + return nil, nil + } else { + return nil, err + } + } + return item, nil +} +func (service *PrepTaskService) Update(item PrepTask) (PrepTask, error) { + utils.ReplaceEmptySlicesWithNil(&item) + _, err := dal.PrepTask.Updates(&item) + if err != nil { + return item, err + } + err = utils.UpdateAssociations(database.GetInstance(), &item) + + if err != nil { + return item, err + } + + return item, err +} +func (service *PrepTaskService) Delete(id uint) error { + _, err := dal.PrepTask.Unscoped().Where(dal.PrepTask.Id.Eq(id)).Delete() + return err +} +func (service *PrepTaskService) Count() (int64, error) { + amount, err := dal.PrepTask.Count() + return amount, err +} +func (service *PrepTaskService) SortedByOrder(fieldsSortingOrder []utils.SortField) ([]*PrepTask, error) { + return utils.SortByOrder(fieldsSortingOrder, PrepTask{}) +} +func (service *PrepTaskService) SearchByAllTextFields(phrase string) ([]*PrepTask, error) { + return utils.FindPhraseByStringFields[PrepTask](phrase, PrepTask{}) +} diff --git a/internal/services/producttype.go b/internal/services/producttype.go new file mode 100644 index 0000000..102373b --- /dev/null +++ b/internal/services/producttype.go @@ -0,0 +1,69 @@ +package services + +import ( + "app/internal/dal" + "app/internal/database" + "app/internal/models" + "app/internal/utils" + "errors" + "gorm.io/gen/field" + "gorm.io/gorm" +) + +type ProductTypeService struct { +} +type ProductType = models.ProductType + +func (service *ProductTypeService) Create(item ProductType) (ProductType, error) { + utils.ReplaceEmptySlicesWithNil(&item) + err := dal.ProductType.Create(&item) + if err != nil { + return item, err + } + err = utils.AppendAssociations(database.GetInstance(), &item) + return item, err +} +func (service *ProductTypeService) GetAll() ([]*ProductType, error) { + var producttypes []*ProductType + producttypes, err := dal.ProductType.Preload(field.Associations).Find() + return producttypes, err +} +func (service *ProductTypeService) GetById(id uint) (*ProductType, error) { + item, err := dal.ProductType.Preload(field.Associations).Where(dal.ProductType.Id.Eq(id)).First() + if err != nil { + if errors.Is(err, gorm.ErrRecordNotFound) { + return nil, nil + } else { + return nil, err + } + } + return item, nil +} +func (service *ProductTypeService) Update(item ProductType) (ProductType, error) { + utils.ReplaceEmptySlicesWithNil(&item) + _, err := dal.ProductType.Updates(&item) + if err != nil { + return item, err + } + err = utils.UpdateAssociations(database.GetInstance(), &item) + + if err != nil { + return item, err + } + + return item, err +} +func (service *ProductTypeService) Delete(id uint) error { + _, err := dal.ProductType.Unscoped().Where(dal.ProductType.Id.Eq(id)).Delete() + return err +} +func (service *ProductTypeService) Count() (int64, error) { + amount, err := dal.ProductType.Count() + return amount, err +} +func (service *ProductTypeService) SortedByOrder(fieldsSortingOrder []utils.SortField) ([]*ProductType, error) { + return utils.SortByOrder(fieldsSortingOrder, ProductType{}) +} +func (service *ProductTypeService) SearchByAllTextFields(phrase string) ([]*ProductType, error) { + return utils.FindPhraseByStringFields[ProductType](phrase, ProductType{}) +} diff --git a/internal/services/services.go b/internal/services/services.go index 547cf2b..7152977 100644 --- a/internal/services/services.go +++ b/internal/services/services.go @@ -1,10 +1,29 @@ package services -import "github.com/wailsapp/wails/v3/pkg/application" +import ( + "fmt" + "github.com/wailsapp/wails/v3/pkg/application" +) var ExportedServices = []application.Service{ - application.NewService(&PostService{}), - application.NewService(&AuthorService{}), - application.NewService(&CommentService{}), - application.NewService(&PostTypeService{}), + application.NewService(&CustomerService{}), + application.NewService(&OrderService{}), + application.NewService(&PrepTaskService{}), + application.NewService(&ProductTypeService{}), + application.NewService(&ShiftService{}), + application.NewService(&TaskService{}), + application.NewService(&TeamTaskService{}), + application.NewService(&TeamTypeService{}), + application.NewService(&WorkAreaService{}), + application.NewService(&WorkerService{}), + application.NewService(&WorkshopService{}), +} + +func CreateServices(items ...any) []application.Service { + var services = make([]application.Service, len(items)) + for i, item := range items { + services[i] = application.NewService(&item) + } + fmt.Printf("%#+v", services) + return services } diff --git a/internal/services/shift.go b/internal/services/shift.go new file mode 100644 index 0000000..0687967 --- /dev/null +++ b/internal/services/shift.go @@ -0,0 +1,69 @@ +package services + +import ( + "app/internal/dal" + "app/internal/database" + "app/internal/models" + "app/internal/utils" + "errors" + "gorm.io/gen/field" + "gorm.io/gorm" +) + +type ShiftService struct { +} +type Shift = models.Shift + +func (service *ShiftService) Create(item Shift) (Shift, error) { + utils.ReplaceEmptySlicesWithNil(&item) + err := dal.Shift.Create(&item) + if err != nil { + return item, err + } + err = utils.AppendAssociations(database.GetInstance(), &item) + return item, err +} +func (service *ShiftService) GetAll() ([]*Shift, error) { + var shifts []*Shift + shifts, err := dal.Shift.Preload(field.Associations).Find() + return shifts, err +} +func (service *ShiftService) GetById(id uint) (*Shift, error) { + item, err := dal.Shift.Preload(field.Associations).Where(dal.Shift.Id.Eq(id)).First() + if err != nil { + if errors.Is(err, gorm.ErrRecordNotFound) { + return nil, nil + } else { + return nil, err + } + } + return item, nil +} +func (service *ShiftService) Update(item Shift) (Shift, error) { + utils.ReplaceEmptySlicesWithNil(&item) + _, err := dal.Shift.Updates(&item) + if err != nil { + return item, err + } + err = utils.UpdateAssociations(database.GetInstance(), &item) + + if err != nil { + return item, err + } + + return item, err +} +func (service *ShiftService) Delete(id uint) error { + _, err := dal.Shift.Unscoped().Where(dal.Shift.Id.Eq(id)).Delete() + return err +} +func (service *ShiftService) Count() (int64, error) { + amount, err := dal.Shift.Count() + return amount, err +} +func (service *ShiftService) SortedByOrder(fieldsSortingOrder []utils.SortField) ([]*Shift, error) { + return utils.SortByOrder(fieldsSortingOrder, Shift{}) +} +func (service *ShiftService) SearchByAllTextFields(phrase string) ([]*Shift, error) { + return utils.FindPhraseByStringFields[Shift](phrase, Shift{}) +} diff --git a/internal/services/task.go b/internal/services/task.go new file mode 100644 index 0000000..65a1a28 --- /dev/null +++ b/internal/services/task.go @@ -0,0 +1,69 @@ +package services + +import ( + "app/internal/dal" + "app/internal/database" + "app/internal/models" + "app/internal/utils" + "errors" + "gorm.io/gen/field" + "gorm.io/gorm" +) + +type TaskService struct { +} +type Task = models.Task + +func (service *TaskService) Create(item Task) (Task, error) { + utils.ReplaceEmptySlicesWithNil(&item) + err := dal.Task.Create(&item) + if err != nil { + return item, err + } + err = utils.AppendAssociations(database.GetInstance(), &item) + return item, err +} +func (service *TaskService) GetAll() ([]*Task, error) { + var tasks []*Task + tasks, err := dal.Task.Preload(field.Associations).Find() + return tasks, err +} +func (service *TaskService) GetById(id uint) (*Task, error) { + item, err := dal.Task.Preload(field.Associations).Where(dal.Task.Id.Eq(id)).First() + if err != nil { + if errors.Is(err, gorm.ErrRecordNotFound) { + return nil, nil + } else { + return nil, err + } + } + return item, nil +} +func (service *TaskService) Update(item Task) (Task, error) { + utils.ReplaceEmptySlicesWithNil(&item) + _, err := dal.Task.Updates(&item) + if err != nil { + return item, err + } + err = utils.UpdateAssociations(database.GetInstance(), &item) + + if err != nil { + return item, err + } + + return item, err +} +func (service *TaskService) Delete(id uint) error { + _, err := dal.Task.Unscoped().Where(dal.Task.Id.Eq(id)).Delete() + return err +} +func (service *TaskService) Count() (int64, error) { + amount, err := dal.Task.Count() + return amount, err +} +func (service *TaskService) SortedByOrder(fieldsSortingOrder []utils.SortField) ([]*Task, error) { + return utils.SortByOrder(fieldsSortingOrder, Task{}) +} +func (service *TaskService) SearchByAllTextFields(phrase string) ([]*Task, error) { + return utils.FindPhraseByStringFields[Task](phrase, Task{}) +} diff --git a/internal/services/teamtask.go b/internal/services/teamtask.go new file mode 100644 index 0000000..5954846 --- /dev/null +++ b/internal/services/teamtask.go @@ -0,0 +1,69 @@ +package services + +import ( + "app/internal/dal" + "app/internal/database" + "app/internal/models" + "app/internal/utils" + "errors" + "gorm.io/gen/field" + "gorm.io/gorm" +) + +type TeamTaskService struct { +} +type TeamTask = models.TeamTask + +func (service *TeamTaskService) Create(item TeamTask) (TeamTask, error) { + utils.ReplaceEmptySlicesWithNil(&item) + err := dal.TeamTask.Create(&item) + if err != nil { + return item, err + } + err = utils.AppendAssociations(database.GetInstance(), &item) + return item, err +} +func (service *TeamTaskService) GetAll() ([]*TeamTask, error) { + var teamtasks []*TeamTask + teamtasks, err := dal.TeamTask.Preload(field.Associations).Find() + return teamtasks, err +} +func (service *TeamTaskService) GetById(id uint) (*TeamTask, error) { + item, err := dal.TeamTask.Preload(field.Associations).Where(dal.TeamTask.Id.Eq(id)).First() + if err != nil { + if errors.Is(err, gorm.ErrRecordNotFound) { + return nil, nil + } else { + return nil, err + } + } + return item, nil +} +func (service *TeamTaskService) Update(item TeamTask) (TeamTask, error) { + utils.ReplaceEmptySlicesWithNil(&item) + _, err := dal.TeamTask.Updates(&item) + if err != nil { + return item, err + } + err = utils.UpdateAssociations(database.GetInstance(), &item) + + if err != nil { + return item, err + } + + return item, err +} +func (service *TeamTaskService) Delete(id uint) error { + _, err := dal.TeamTask.Unscoped().Where(dal.TeamTask.Id.Eq(id)).Delete() + return err +} +func (service *TeamTaskService) Count() (int64, error) { + amount, err := dal.TeamTask.Count() + return amount, err +} +func (service *TeamTaskService) SortedByOrder(fieldsSortingOrder []utils.SortField) ([]*TeamTask, error) { + return utils.SortByOrder(fieldsSortingOrder, TeamTask{}) +} +func (service *TeamTaskService) SearchByAllTextFields(phrase string) ([]*TeamTask, error) { + return utils.FindPhraseByStringFields[TeamTask](phrase, TeamTask{}) +} diff --git a/internal/services/teamtype.go b/internal/services/teamtype.go new file mode 100644 index 0000000..c599502 --- /dev/null +++ b/internal/services/teamtype.go @@ -0,0 +1,69 @@ +package services + +import ( + "app/internal/dal" + "app/internal/database" + "app/internal/models" + "app/internal/utils" + "errors" + "gorm.io/gen/field" + "gorm.io/gorm" +) + +type TeamTypeService struct { +} +type TeamType = models.TeamType + +func (service *TeamTypeService) Create(item TeamType) (TeamType, error) { + utils.ReplaceEmptySlicesWithNil(&item) + err := dal.TeamType.Create(&item) + if err != nil { + return item, err + } + err = utils.AppendAssociations(database.GetInstance(), &item) + return item, err +} +func (service *TeamTypeService) GetAll() ([]*TeamType, error) { + var teamtypes []*TeamType + teamtypes, err := dal.TeamType.Preload(field.Associations).Find() + return teamtypes, err +} +func (service *TeamTypeService) GetById(id uint) (*TeamType, error) { + item, err := dal.TeamType.Preload(field.Associations).Where(dal.TeamType.Id.Eq(id)).First() + if err != nil { + if errors.Is(err, gorm.ErrRecordNotFound) { + return nil, nil + } else { + return nil, err + } + } + return item, nil +} +func (service *TeamTypeService) Update(item TeamType) (TeamType, error) { + utils.ReplaceEmptySlicesWithNil(&item) + _, err := dal.TeamType.Updates(&item) + if err != nil { + return item, err + } + err = utils.UpdateAssociations(database.GetInstance(), &item) + + if err != nil { + return item, err + } + + return item, err +} +func (service *TeamTypeService) Delete(id uint) error { + _, err := dal.TeamType.Unscoped().Where(dal.TeamType.Id.Eq(id)).Delete() + return err +} +func (service *TeamTypeService) Count() (int64, error) { + amount, err := dal.TeamType.Count() + return amount, err +} +func (service *TeamTypeService) SortedByOrder(fieldsSortingOrder []utils.SortField) ([]*TeamType, error) { + return utils.SortByOrder(fieldsSortingOrder, TeamType{}) +} +func (service *TeamTypeService) SearchByAllTextFields(phrase string) ([]*TeamType, error) { + return utils.FindPhraseByStringFields[TeamType](phrase, TeamType{}) +} diff --git a/internal/services/workarea.go b/internal/services/workarea.go new file mode 100644 index 0000000..01ce1c5 --- /dev/null +++ b/internal/services/workarea.go @@ -0,0 +1,69 @@ +package services + +import ( + "app/internal/dal" + "app/internal/database" + "app/internal/models" + "app/internal/utils" + "errors" + "gorm.io/gen/field" + "gorm.io/gorm" +) + +type WorkAreaService struct { +} +type WorkArea = models.WorkArea + +func (service *WorkAreaService) Create(item WorkArea) (WorkArea, error) { + utils.ReplaceEmptySlicesWithNil(&item) + err := dal.WorkArea.Create(&item) + if err != nil { + return item, err + } + err = utils.AppendAssociations(database.GetInstance(), &item) + return item, err +} +func (service *WorkAreaService) GetAll() ([]*WorkArea, error) { + var workareas []*WorkArea + workareas, err := dal.WorkArea.Preload(field.Associations).Find() + return workareas, err +} +func (service *WorkAreaService) GetById(id uint) (*WorkArea, error) { + item, err := dal.WorkArea.Preload(field.Associations).Where(dal.WorkArea.Id.Eq(id)).First() + if err != nil { + if errors.Is(err, gorm.ErrRecordNotFound) { + return nil, nil + } else { + return nil, err + } + } + return item, nil +} +func (service *WorkAreaService) Update(item WorkArea) (WorkArea, error) { + utils.ReplaceEmptySlicesWithNil(&item) + _, err := dal.WorkArea.Updates(&item) + if err != nil { + return item, err + } + err = utils.UpdateAssociations(database.GetInstance(), &item) + + if err != nil { + return item, err + } + + return item, err +} +func (service *WorkAreaService) Delete(id uint) error { + _, err := dal.WorkArea.Unscoped().Where(dal.WorkArea.Id.Eq(id)).Delete() + return err +} +func (service *WorkAreaService) Count() (int64, error) { + amount, err := dal.WorkArea.Count() + return amount, err +} +func (service *WorkAreaService) SortedByOrder(fieldsSortingOrder []utils.SortField) ([]*WorkArea, error) { + return utils.SortByOrder(fieldsSortingOrder, WorkArea{}) +} +func (service *WorkAreaService) SearchByAllTextFields(phrase string) ([]*WorkArea, error) { + return utils.FindPhraseByStringFields[WorkArea](phrase, WorkArea{}) +} diff --git a/internal/services/worker.go b/internal/services/worker.go new file mode 100644 index 0000000..4ffc443 --- /dev/null +++ b/internal/services/worker.go @@ -0,0 +1,69 @@ +package services + +import ( + "app/internal/dal" + "app/internal/database" + "app/internal/models" + "app/internal/utils" + "errors" + "gorm.io/gen/field" + "gorm.io/gorm" +) + +type WorkerService struct { +} +type Worker = models.Worker + +func (service *WorkerService) Create(item Worker) (Worker, error) { + utils.ReplaceEmptySlicesWithNil(&item) + err := dal.Worker.Create(&item) + if err != nil { + return item, err + } + err = utils.AppendAssociations(database.GetInstance(), &item) + return item, err +} +func (service *WorkerService) GetAll() ([]*Worker, error) { + var workers []*Worker + workers, err := dal.Worker.Preload(field.Associations).Find() + return workers, err +} +func (service *WorkerService) GetById(id uint) (*Worker, error) { + item, err := dal.Worker.Preload(field.Associations).Where(dal.Worker.Id.Eq(id)).First() + if err != nil { + if errors.Is(err, gorm.ErrRecordNotFound) { + return nil, nil + } else { + return nil, err + } + } + return item, nil +} +func (service *WorkerService) Update(item Worker) (Worker, error) { + utils.ReplaceEmptySlicesWithNil(&item) + _, err := dal.Worker.Updates(&item) + if err != nil { + return item, err + } + err = utils.UpdateAssociations(database.GetInstance(), &item) + + if err != nil { + return item, err + } + + return item, err +} +func (service *WorkerService) Delete(id uint) error { + _, err := dal.Worker.Unscoped().Where(dal.Worker.Id.Eq(id)).Delete() + return err +} +func (service *WorkerService) Count() (int64, error) { + amount, err := dal.Worker.Count() + return amount, err +} +func (service *WorkerService) SortedByOrder(fieldsSortingOrder []utils.SortField) ([]*Worker, error) { + return utils.SortByOrder(fieldsSortingOrder, Worker{}) +} +func (service *WorkerService) SearchByAllTextFields(phrase string) ([]*Worker, error) { + return utils.FindPhraseByStringFields[Worker](phrase, Worker{}) +} diff --git a/internal/services/workshop.go b/internal/services/workshop.go new file mode 100644 index 0000000..2a25e32 --- /dev/null +++ b/internal/services/workshop.go @@ -0,0 +1,69 @@ +package services + +import ( + "app/internal/dal" + "app/internal/database" + "app/internal/models" + "app/internal/utils" + "errors" + "gorm.io/gen/field" + "gorm.io/gorm" +) + +type WorkshopService struct { +} +type Workshop = models.Workshop + +func (service *WorkshopService) Create(item Workshop) (Workshop, error) { + utils.ReplaceEmptySlicesWithNil(&item) + err := dal.Workshop.Create(&item) + if err != nil { + return item, err + } + err = utils.AppendAssociations(database.GetInstance(), &item) + return item, err +} +func (service *WorkshopService) GetAll() ([]*Workshop, error) { + var workshops []*Workshop + workshops, err := dal.Workshop.Preload(field.Associations).Find() + return workshops, err +} +func (service *WorkshopService) GetById(id uint) (*Workshop, error) { + item, err := dal.Workshop.Preload(field.Associations).Where(dal.Workshop.Id.Eq(id)).First() + if err != nil { + if errors.Is(err, gorm.ErrRecordNotFound) { + return nil, nil + } else { + return nil, err + } + } + return item, nil +} +func (service *WorkshopService) Update(item Workshop) (Workshop, error) { + utils.ReplaceEmptySlicesWithNil(&item) + _, err := dal.Workshop.Updates(&item) + if err != nil { + return item, err + } + err = utils.UpdateAssociations(database.GetInstance(), &item) + + if err != nil { + return item, err + } + + return item, err +} +func (service *WorkshopService) Delete(id uint) error { + _, err := dal.Workshop.Unscoped().Where(dal.Workshop.Id.Eq(id)).Delete() + return err +} +func (service *WorkshopService) Count() (int64, error) { + amount, err := dal.Workshop.Count() + return amount, err +} +func (service *WorkshopService) SortedByOrder(fieldsSortingOrder []utils.SortField) ([]*Workshop, error) { + return utils.SortByOrder(fieldsSortingOrder, Workshop{}) +} +func (service *WorkshopService) SearchByAllTextFields(phrase string) ([]*Workshop, error) { + return utils.FindPhraseByStringFields[Workshop](phrase, Workshop{}) +} diff --git a/internal/utils/sorting.go b/internal/utils/sorting.go index de975ac..0958947 100644 --- a/internal/utils/sorting.go +++ b/internal/utils/sorting.go @@ -85,7 +85,7 @@ func SortByOrder[T any](fieldsSortingOrder []SortField, entity T) ([]*T, error) if err != nil { return nil, errors.New(p.Sprintf("Failed to get column name: %s", err)) } - orderQuery = append(orderQuery, fmt.Sprintf("%s.%s %s", tableName, columnName, item.Order)) + orderQuery = append(orderQuery, fmt.Sprintf("`%s`.`%s` %s", tableName, columnName, item.Order)) } else { fieldsPathParts := strings.Split(fieldPath, ".") @@ -98,6 +98,10 @@ func SortByOrder[T any](fieldsSortingOrder []SortField, entity T) ([]*T, error) } joinPathParts := append([]string{field.Type.Name()}, fieldsPathParts...) + for i, part := range joinPathParts { + joinPathParts[i] = "`" + part + "`" + } + joinField := strings.Join(joinPathParts, ".") joinTable := field.Type.Name() joins = append(joins, joinTable) @@ -116,8 +120,6 @@ func SortByOrder[T any](fieldsSortingOrder []SortField, entity T) ([]*T, error) } result := db.Preload(clause.Associations).Find(&items) - fmt.Printf("Sort order: %#v\n", fieldsSortingOrder) - fmt.Printf("Result items: \n") for _, item := range items { fmt.Printf("%#v\n", *item) }