25'ten fazla konu seçemezsiniz Konular bir harf veya rakamla başlamalı, kısa çizgiler ('-') içerebilir ve en fazla 35 karakter uzunluğunda olabilir.
 
 

136 satır
6.5 KiB

  1. //
  2. // Unit.swift
  3. //
  4. //
  5. // Created by Michiel Carman on 10/24/21.
  6. //
  7. import Foundation
  8. import Vapor
  9. import Fluent
  10. import FluentPostgresDriver
  11. final class mdlUnit: Model, Content{
  12. struct Input: Content{
  13. let id: Int?
  14. let name: String
  15. let description: String
  16. let isactive: Bool
  17. let createdate: Date?
  18. let createuserid: Int?
  19. let updatedate: Date?
  20. let updateuserid: Int?
  21. let datatype: mdlDataType
  22. let locations: [mdlLocation]?
  23. let inspectioncategoryitemspecitems: [mdlInspectionCategoryItemSpecItem]?
  24. }
  25. struct Output: Content{
  26. let id: Int?
  27. let name: String
  28. let description: String
  29. let isactive: Bool
  30. let createdate: Date?
  31. let createuserid: Int?
  32. let updatedate: Date?
  33. let updateuserid: Int?
  34. let datatype: mdlDataType
  35. let locations: [mdlLocation]?
  36. let inspectioncategoryitemspecitems: [mdlInspectionCategoryItemSpecItem]?
  37. }
  38. static let schema = "Unit"
  39. @ID(custom: "id", generatedBy: .database) var id: Int?
  40. @Field(key: "name") var name: String
  41. @Field(key: "description") var description: String
  42. @Field(key: "isActive") var isactive: Bool
  43. @Field(key: "createUserId" ) var createuserid: Int?
  44. @Timestamp(key: "createDate", on: .create) var createdate: Date?
  45. @Field(key: "updateUserId") var updateuserid: Int?
  46. @Timestamp(key: "updateDate", on: .update) var updatedate: Date?
  47. @Parent(key: "dataTypeId") var datatype: mdlDataType
  48. @Children(for: \.$unit) var locations: [mdlLocation]
  49. @Children(for: \.$unit) var inspectioncategoryitemspecitems: [mdlInspectionCategoryItemSpecItem]
  50. init(){}
  51. init(id: Int? = nil){
  52. self.id = id
  53. }
  54. init(id: Int? = nil, name: String, description: String, isactive: Bool = true, createuserid: Int? = -1, createdate: Date? = nil, updateuserid: Int? = -1, updatedate: Date? = nil, datatype: mdlDataType, locations: [mdlLocation]?, inspectioncategoryitemspecitems: [mdlInspectionCategoryItemSpecItem]?){
  55. self.id = id
  56. self.name = name
  57. self.description = description
  58. self.isactive = isactive
  59. self.createuserid = createuserid
  60. self.createdate = createdate
  61. self.updateuserid = updateuserid
  62. self.updatedate = updatedate
  63. self.$datatype.id = datatype.id!
  64. self.$locations.value = locations
  65. self.$inspectioncategoryitemspecitems.value = inspectioncategoryitemspecitems
  66. }
  67. }
  68. extension mdlUnit {
  69. struct create: Migration{
  70. func prepare(on database: Database) -> EventLoopFuture<Void> {
  71. return database.schema("Unit")
  72. .field("id", .int, .identifier(auto: true))
  73. .field("name", .string)
  74. .field("description", .string)
  75. .field("isActive", .bool)
  76. .field("dataTypeId", .int, .required, .references("DataType", "id"))
  77. .field("createUserId", .int)
  78. .field("createDate", .datetime)
  79. .field("updateUserId", .int)
  80. .field("updateDate", .datetime)
  81. .create()
  82. }
  83. func revert(on database: Database) -> EventLoopFuture<Void> {
  84. database.schema("Unit").delete()
  85. }
  86. }
  87. struct seed: Migration {
  88. func prepare(on database: Database) -> EventLoopFuture<Void> {
  89. // 1
  90. let array: [mdlUnit] = [
  91. .init(name: "in", description: "Inches", datatype: mdlDataType(id: 3), locations: [], inspectioncategoryitemspecitems: []),
  92. .init(name: "Text", description: "Unit type for text based responses", datatype: mdlDataType(id: 1), locations: [], inspectioncategoryitemspecitems: []),
  93. .init(name: "sec", description: "Seconds", datatype: mdlDataType(id: 3), locations: [], inspectioncategoryitemspecitems: []),
  94. .init(name: "A", description: "Amps", datatype: mdlDataType(id: 3), locations: [], inspectioncategoryitemspecitems: []),
  95. .init(name: "hrs", description: "Hours", datatype: mdlDataType(id: 3), locations: [], inspectioncategoryitemspecitems: []),
  96. .init(name: "Date", description: "DateTime", datatype: mdlDataType(id: 4), locations: [], inspectioncategoryitemspecitems: []),
  97. .init(name: "Bool", description: "Boolean", datatype: mdlDataType(id: 5), locations: [], inspectioncategoryitemspecitems: []),
  98. .init(name: "String", description: "String", datatype: mdlDataType(id: 1), locations: [], inspectioncategoryitemspecitems: []),
  99. .init(name: "Integer", description: "Integer", datatype: mdlDataType(id: 2), locations: [], inspectioncategoryitemspecitems: []),
  100. .init(name: "Decimal", description: "Decimal", datatype: mdlDataType(id: 3), locations: [], inspectioncategoryitemspecitems: []),
  101. .init(name: "Gallons", description: "Gallons", datatype: mdlDataType(id: 3), locations: [], inspectioncategoryitemspecitems: []),
  102. .init(name: "Liters", description: "Liters", datatype: mdlDataType(id: 3), locations: [], inspectioncategoryitemspecitems: []),
  103. .init(name: "mm", description: "millimeters", datatype: mdlDataType(id: 3), locations: [], inspectioncategoryitemspecitems: []),
  104. .init(name: "32nds", description: "32nds", datatype: mdlDataType(id: 2), locations: [], inspectioncategoryitemspecitems: []),
  105. .init(name: "R.P.M.", description: "Revolutions Per Minute", datatype: mdlDataType(id: 2), locations: [], inspectioncategoryitemspecitems: []),
  106. .init(name: "PSI", description: "Pounds per Square Inch", datatype: mdlDataType(id: 3), locations: [], inspectioncategoryitemspecitems: []),
  107. .init(name: "in^3", description: "Cubic Inches", datatype: mdlDataType(id: 3), locations: [], inspectioncategoryitemspecitems: []),
  108. .init(name: "Amps", description: "Amperage", datatype: mdlDataType(id: 2), locations: [], inspectioncategoryitemspecitems: []),
  109. .init(name: "%", description: "PERCENTAGE", datatype: mdlDataType(id: 2), locations: [], inspectioncategoryitemspecitems: [])
  110. ]
  111. // 2
  112. return array.map { obj in
  113. obj.save(on: database)
  114. }
  115. .flatten(on: database.eventLoop)
  116. }
  117. func revert(on database: Database) -> EventLoopFuture<Void> {
  118. // 3
  119. mdlUnit.query(on: database).delete()
  120. }
  121. }
  122. }