You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

158 lines
6.7 KiB

  1. //
  2. // File.swift
  3. //
  4. //
  5. // Created by Michiel Carman on 10/28/21.
  6. //
  7. import Foundation
  8. import Vapor
  9. import Fluent
  10. import FluentPostgresDriver
  11. final class mdlInspectionCategoryItem: Model, Content{
  12. static let schema = "InspectionCategoryItem"
  13. @ID(custom: "id", generatedBy: .database) var id: Int?
  14. @Field(key: "name") var name: String
  15. @Field(key: "description") var description: String
  16. @Field(key: "sortOrder") var sortorder: Int
  17. @Field(key: "createUserId" ) var createuserid: Int?
  18. @Timestamp(key: "createDate", on: .create) var createdate: Date?
  19. @Field(key: "updateUserId") var updateuserid: Int?
  20. @Timestamp(key: "updateDate", on: .update) var updatedate: Date?
  21. @Parent(key: "itemId") var item: mdlItem
  22. @Parent(key: "inspectionCategoryId") var inspectioncategory: mdlInspectionCategory
  23. @Parent(key: "userDefinedCodeId") var userdefinedcode: mdlUserDefinedCode //SMSC Code
  24. @Parent(key: "inputTypeId") var inputtype: mdlInputType
  25. @Parent(key: "inspectionCategoryItemId") var currentitem: mdlInspectionCategoryItem
  26. @Parent(key: "parentId") var parent: mdlInspectionCategoryItem
  27. @Children(for: \.$parent) var inspectioncategoryitems: [mdlInspectionCategoryItem]
  28. @Children(for: \.$inspectioncategoryitem) var inspectioncategoryitemresponsetypes: [mdlInspectionCategoryItemResponseType]
  29. @Children(for: \.$inspectioncategoryitem) var inspectioncategoryitemspecs: [mdlInspectionCategoryItemSpec]
  30. @Children(for: \.$inspectioncategoryitem) var notes: [mdlNote]
  31. @Children(for: \.$inspectioncategoryitem) var files: [mdlFile]
  32. init(){}
  33. init(id: Int? = nil, name: String, description: String, sortorder: Int = 0, createuserid: Int? = -1, createdate: Date? = nil, updateuserid: Int? = -1, updatedate: Date? = nil, item: mdlItem, inspectioncategory: mdlInspectionCategory, userdefinedcode: mdlUserDefinedCode, inputtype: mdlInputType, currentitem: mdlInspectionCategoryItem, parent: mdlInspectionCategoryItem, inspectioncategoryitems: [mdlInspectionCategoryItem]?, inspectioncategoryitemresponsetypes: [mdlInspectionCategoryItemResponseType]?, inspectioncategoryitemspecs: [mdlInspectionCategoryItemSpec]?, notes: [mdlNote]?, files: [mdlFile]?){
  34. self.id = id
  35. self.name = name
  36. self.description = description
  37. self.sortorder = sortorder
  38. self.createuserid = createuserid
  39. self.createdate = createdate
  40. self.updateuserid = updateuserid
  41. self.updatedate = updatedate
  42. self.$item.id = item.id!
  43. self.$inspectioncategory.id = inspectioncategory.id!
  44. self.$userdefinedcode.id = userdefinedcode.id!
  45. self.$inputtype.id = inputtype.id!
  46. self.currentitem.id = currentitem.id!
  47. self.parent.id = parent.id!
  48. self.$inspectioncategoryitems.value = inspectioncategoryitems
  49. self.$inspectioncategoryitemresponsetypes.value = inspectioncategoryitemresponsetypes
  50. self.$inspectioncategoryitemspecs.value = inspectioncategoryitemspecs
  51. self.$notes.value = notes
  52. self.$files.value = files
  53. }
  54. }
  55. extension mdlInspectionCategoryItem {
  56. struct Input: Content{
  57. let id: Int?
  58. let name: String
  59. let description: String
  60. let sortorder: Int
  61. let createdate: Date?
  62. let createuserid: Int?
  63. let updatedate: Date?
  64. let updateuserid: Int?
  65. let item: mdlItem
  66. let inspectioncategory: mdlInspectionCategory
  67. let userdefinedcode: mdlUserDefinedCode
  68. let inputtype: mdlInputType
  69. let currentitem: mdlInspectionCategoryItem
  70. let parent: mdlInspectionCategoryItem
  71. let inspectioncategoryitems: [mdlInspectionCategoryItem]?
  72. let inspectioncategoryitemresponsetypes: [mdlInspectionCategoryItemResponseType]?
  73. let inspectioncategoryitemspecs: [mdlInspectionCategoryItemSpec]?
  74. let notes: [mdlNote]?
  75. let files: [mdlFile]?
  76. }
  77. struct Output: Content{
  78. let id: Int?
  79. let name: String
  80. let description: String
  81. let sortorder: Int
  82. let createdate: Date?
  83. let createuserid: Int?
  84. let updatedate: Date?
  85. let updateuserid: Int?
  86. let item: mdlItem
  87. let inspectioncategory: mdlInspectionCategory
  88. let userdefinedcode: mdlUserDefinedCode
  89. let inputtype: mdlInputType
  90. let currentitem: mdlInspectionCategoryItem
  91. let parent: mdlInspectionCategoryItem
  92. let inspectioncategoryitems: [mdlInspectionCategoryItem]?
  93. let inspectioncategoryitemresponsetypes: [mdlInspectionCategoryItemResponseType]?
  94. let inspectioncategoryitemspecs: [mdlInspectionCategoryItemSpec]?
  95. let notes: [mdlNote]?
  96. let files: [mdlFile]?
  97. }
  98. struct create: Migration{
  99. func prepare(on database: Database) -> EventLoopFuture<Void> {
  100. return database.schema("InspectionCategoryItem")
  101. .field("id", .int, .identifier(auto: true))
  102. .field("itemId", .int, .required, .references("Item", "id"))
  103. .field("inspectionCategoryId", .int, .required, .references("InspectionCategory", "id"))
  104. .field("userDefinedCodeId", .int, .references("UserDefinedCode", "id"))
  105. .field("inputTypeId", .int, .required, .references("InputType", "id"))
  106. .field("parentId", .int, .references("InspectionCategoryItem", "id"))
  107. .field("name", .string)
  108. .field("description", .string)
  109. .field("sortOrder", .int)
  110. .field("inspectionCategoryItemId", .int, .references("InspectionCategoryItem", "id"))
  111. .field("createUserId", .int)
  112. .field("createDate", .datetime)
  113. .field("updateUserId", .int)
  114. .field("updateDate", .datetime)
  115. .create()
  116. }
  117. func revert(on database: Database) -> EventLoopFuture<Void> {
  118. database.schema("InspectionCategoryItem").delete()
  119. }
  120. }
  121. /*
  122. @Parent(key: "userDefinedCodeId") var userdefinedcode: mdlUserDefinedCode //SMSC Code
  123. @Parent(key: "inputTypeId") var inputtype: mdlInputType
  124. @Parent(key: "inspectionCategoryItemId") var currentitem: mdlInspectionCategoryItem
  125. @Parent(key: "parentId")
  126. */
  127. /* Uncomment if you need to seed the table.
  128. struct seed: Migration {
  129. func prepare(on database: Database) -> EventLoopFuture<Void> {
  130. // 1
  131. let array: [<#Model#>] = [
  132. <#init#>
  133. ]
  134. // 2
  135. return array.map { obj in
  136. obj.save(on: database)
  137. }
  138. .flatten(on: database.eventLoop)
  139. }
  140. func revert(on database: Database) -> EventLoopFuture<Void> {
  141. // 3
  142. <#Model#>.query(on: database).delete()
  143. }
  144. }
  145. */
  146. }