Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

174 строки
6.3 KiB

  1. //
  2. // Machine.swift
  3. //
  4. //
  5. // Created by Michiel Carman on 10/25/21.
  6. //
  7. import Foundation
  8. import Vapor
  9. import Fluent
  10. import FluentPostgresDriver
  11. final class mdlMachine: Model, Content{
  12. static let schema = "Machine"
  13. @ID(custom: "id", generatedBy: .database) var id: Int?
  14. @Field(key: "manufacturerYear") var manufactureryear: String
  15. @Field(key: "description") var description: String
  16. @Field(key: "currentLocation") var currentlocation: String
  17. @Field(key: "lastServiceDate") var lastservicedate: Date?
  18. @Field(key: "isActive") var isactive: Bool
  19. @Field(key: "voltage") var voltage: Decimal?
  20. @Field(key: "kw") var kw: Decimal?
  21. @Field(key: "phase") var phase: Int?
  22. @Field(key: "inServiceDate") var inservicedate: Date?
  23. @Field(key: "createUserId" ) var createuserid: Int?
  24. @Timestamp(key: "createDate", on: .create) var createdate: Date?
  25. @Field(key: "updateUserId") var updateuserid: Int?
  26. @Timestamp(key: "updateDate", on: .update) var updatedate: Date?
  27. @Parent(key: "machineTypeId") var machinetype: mdlMachineType
  28. @Parent(key: "modelId") var model: mdlModel
  29. @Parent(key: "machineId") var parent: mdlMachine
  30. @Children(for: \.$machine) var machinenumbers: [mdlMachineNumber]
  31. @Children(for: \.$machine) var machinemeters: [mdlMachineMeter]
  32. @Children(for: \.$parent) var children: [mdlMachine]
  33. @Children(for: \.$machine) var templates: [mdlTemplate]
  34. @Children(for: \.$machine) var workorders: [mdlWorkOrder]
  35. @Siblings(through: mdlXCustomerMachine.self, from: \.$machine, to: \.$customer) public var customers: [mdlCustomer]
  36. init(){}
  37. init(id: Int? = nil, manufactureryear: String, description: String, currentlocation: String, lastservicedate: Date? = nil, isactive: Bool = true, voltage: Decimal? = nil, kw: Decimal? = nil, phase: Int? = nil, inservicedate: Date? = nil, createuserid: Int? = -1, createdate: Date? = nil, updateuserid: Int? = -1, updatedate: Date? = nil, machinetype: mdlMachineType, parent: mdlMachine, model: mdlModel, machinenumbers: [mdlMachineNumber], machinemeters: [mdlMachineMeter], customers: [mdlCustomer], children: [mdlMachine], templates: [mdlTemplate], workorders: [mdlWorkOrder]){
  38. self.id = id
  39. self.manufactureryear = manufactureryear
  40. self.description = description
  41. self.currentlocation = currentlocation
  42. self.lastservicedate = lastservicedate
  43. self.isactive = isactive
  44. self.voltage = voltage
  45. self.kw = kw
  46. self.phase = phase
  47. self.inservicedate = inservicedate
  48. self.createuserid = createuserid
  49. self.createdate = createdate
  50. self.updateuserid = updateuserid
  51. self.updatedate = updatedate
  52. self.$model.id = model.id!
  53. self.$machinenumbers.value = machinenumbers
  54. self.$machinemeters.value = machinemeters
  55. self.$customers.value = customers
  56. self.$children.value = children
  57. self.$templates.value = templates
  58. self.$workorders.value = workorders
  59. }
  60. }
  61. extension mdlMachine{
  62. struct Input: Content{
  63. let id: Int?
  64. let manufactureryear: String
  65. let description: String
  66. let currentlocation: String
  67. let lastservicedate: Date?
  68. let isactive: Bool
  69. let voltage: Decimal?
  70. let kw: Decimal?
  71. let phase: Int?
  72. let inservicedate: Date?
  73. let createdate: Date?
  74. let createuserid: Int?
  75. let updatedate: Date?
  76. let updateuserid: Int?
  77. let machinetype: mdlMachineType
  78. let parent: mdlMachine
  79. let model: mdlModel
  80. let machinenumbers: [mdlMachineNumber]
  81. let machinemeters: [mdlMachineMeter]
  82. let customers: [mdlCustomer]
  83. let children: [mdlMachine]
  84. let templates: [mdlTemplate]
  85. let workorders: [mdlWorkOrder]
  86. }
  87. struct Output: Content{
  88. let id: Int?
  89. let manufactureryear: String
  90. let description: String
  91. let currentlocation: String
  92. let lastservicedate: Date?
  93. let isactive: Bool
  94. let voltage: Decimal?
  95. let kw: Decimal?
  96. let phase: Int?
  97. let inservicedate: Date?
  98. let createdate: Date?
  99. let createuserid: Int?
  100. let updatedate: Date?
  101. let updateuserid: Int?
  102. let machinetype: mdlMachineType
  103. let parent: mdlMachine
  104. let model: mdlModel
  105. let machinenumbers: [mdlMachineNumber]
  106. let machinemeters: [mdlMachineMeter]
  107. let customers: [mdlCustomer]
  108. let children: [mdlMachine]
  109. let templates: [mdlTemplate]
  110. let workorders: [mdlWorkOrder]
  111. }
  112. }
  113. extension mdlMachine {
  114. struct create: Migration{
  115. func prepare(on database: Database) -> EventLoopFuture<Void> {
  116. return database.schema("Machine")
  117. .field("id", .int, .identifier(auto: true))
  118. .field("manufacturerYear", .string)
  119. .field("description", .string)
  120. .field("currentLocation", .string)
  121. .field("lastServiceDate", .datetime)
  122. .field("isActive", .bool)
  123. .field("voltage", .float)
  124. .field("kw", .float)
  125. .field("phase", .int)
  126. .field("inServiceDate", .datetime)
  127. .field("modelId", .int, .required, .references("Model", "id"))
  128. .field("machineTypeId", .int, .references("MachineType", "id"))
  129. .field("machineId", .int, .references("Machine", "id"))
  130. .field("createUserId", .int)
  131. .field("createDate", .datetime)
  132. .field("updateUserId", .int)
  133. .field("updateDate", .datetime)
  134. .create()
  135. }
  136. func revert(on database: Database) -> EventLoopFuture<Void> {
  137. database.schema("Machine").delete()
  138. }
  139. }
  140. /* Uncomment if you need to seed the table.
  141. struct seed: Migration {
  142. func prepare(on database: Database) -> EventLoopFuture<Void> {
  143. // 1
  144. let array: [<#Model#>] = [
  145. <#init#>
  146. ]
  147. // 2
  148. return array.map { obj in
  149. obj.save(on: database)
  150. }
  151. .flatten(on: database.eventLoop)
  152. }
  153. func revert(on database: Database) -> EventLoopFuture<Void> {
  154. // 3
  155. <#Model#>.query(on: database).delete()
  156. }
  157. }
  158. */
  159. }