No puede seleccionar más de 25 temas Los temas deben comenzar con una letra o número, pueden incluir guiones ('-') y pueden tener hasta 35 caracteres de largo.
 
 

170 líneas
6.4 KiB

  1. //
  2. // OilSample.swift
  3. //
  4. //
  5. // Created by Michiel Carman on 1/24/24.
  6. //
  7. import Fluent
  8. import Vapor
  9. import Foundation
  10. import FluentKit
  11. final class mdlOilSample: Model, Content {
  12. static let schema = "oilSample"
  13. @ID(custom: "id", generatedBy: .database) var id: Int?
  14. @Parent(key: "workOrderSegmentId") var segment: mdlWorkOrderSegment
  15. @Field(key: "name") var name: String?
  16. @Field(key: "code") var code: String?
  17. @Field(key: "l1Name") var l1name: String?
  18. @Field(key: "l1Code") var l1code: String?
  19. @Field(key: "l2Name") var l2name: String?
  20. @Field(key: "l2Code") var l2code: String?
  21. @Field(key: "meterReading") var meterreading: Decimal?
  22. @Field(key: "previousMeterReading") var previousmeterreading: Decimal?
  23. @Field(key: "hoursOnOil") var hoursonoil: Decimal?
  24. @Field(key: "oilAdded") var oiladded: Decimal?
  25. @Field(key: "unit") var unit: String?
  26. @Field(key: "jobSite") var jobsite: String?
  27. @Field(key: "fluid") var fluid: String?
  28. @Field(key: "viscosity") var viscosity: String?
  29. @Field(key: "oilChanged") var oilchanged: Bool?
  30. @Field(key: "filterChanged") var filterchanged: Bool?
  31. @Field(key: "level") var level: String?
  32. @Field(key: "comment") var comment: String?
  33. @Field(key: "sortOrder") var sortorder: Int?
  34. @Timestamp(key: "createDate", on: .create) var createdate: Date?
  35. @Field(key: "createUserId") var createuserid: Int?
  36. @Timestamp(key: "updateDate", on: .update) var updatedate: Date?
  37. @Field(key: "updateUserId") var updateuserid: Int?
  38. init() { }
  39. init(id: Int? = nil, segmentid: Int, name: String? = nil, code: String? = nil, l1name: String? = nil, l1code: String? = nil, l2name: String? = nil, l2code: String? = nil, meterreading: Decimal? = nil, previousmeterreading: Decimal? = nil, hoursonoil: Decimal? = nil, oiladded: Decimal? = nil, unit: String? = nil, jobsite: String? = nil, fluid: String? = nil, viscosity: String? = nil, oilchanged: Bool? = nil, filterchanged: Bool? = nil, level: String? = nil, comment: String? = nil, sortorder: Int? = nil, createuserid: Int? = nil, updateuserid: Int? = nil) {
  40. self.id = id
  41. self.$segment.$id.value = segmentid
  42. self.name = name
  43. self.code = code
  44. self.l1name = l1name
  45. self.l1code = l1code
  46. self.l2name = l2name
  47. self.l2code = l2code
  48. self.meterreading = meterreading
  49. self.previousmeterreading = previousmeterreading
  50. self.hoursonoil = hoursonoil
  51. self.oiladded = oiladded
  52. self.unit = unit
  53. self.jobsite = jobsite
  54. self.fluid = fluid
  55. self.viscosity = viscosity
  56. self.oilchanged = oilchanged
  57. self.filterchanged = filterchanged
  58. self.level = level
  59. self.comment = comment
  60. self.sortorder = sortorder
  61. self.createuserid = createuserid
  62. self.updateuserid = updateuserid
  63. }
  64. }
  65. extension mdlOilSample{
  66. struct Create: AsyncMigration {
  67. func prepare(on database: Database) async throws {
  68. try await database.schema("oilSample")
  69. .field("id", .int, .identifier(auto: true))
  70. .field("segmentId", .int, .references("segment", "id"))
  71. .field("name", .string)
  72. .field("code", .string)
  73. .field("l1Name", .string)
  74. .field("l1Code", .string)
  75. .field("l2Name", .string)
  76. .field("l2Code", .string)
  77. .field("meterReading", .float)
  78. .field("previousMeterReading", .float)
  79. .field("hoursOnOil", .float)
  80. .field("oilAdded", .float)
  81. .field("unit", .string)
  82. .field("jobSite", .string)
  83. .field("fluid", .string)
  84. .field("viscosity", .string)
  85. .field("oilChanged", .bool)
  86. .field("filterChanged", .bool)
  87. .field("level", .string)
  88. .field("comment", .string)
  89. .field("createDate", .datetime)
  90. .field("createUserId", .int)
  91. .field("updateDate", .datetime)
  92. .field("updateUserId", .int)
  93. .create()
  94. }
  95. func revert(on database: Database) async throws {
  96. try await database.schema("oilSample").delete()
  97. }
  98. }
  99. struct Mod1: AsyncMigration{
  100. func prepare(on database: Database) async throws {
  101. try await database.schema("oilSample")
  102. .field("sortOrder", .int)
  103. .update()
  104. }
  105. func revert(on database: Database) async throws {
  106. try await database.schema("oilSample")
  107. .deleteField("sortOrder")
  108. .update()
  109. }
  110. }
  111. struct Mod2: AsyncMigration{
  112. func prepare(on database: Database) async throws {
  113. try await database.schema("oilSample")
  114. .deleteField("segmentId")
  115. .field("workOrderSegmentId", .int, .references("workOrderSegment", "id"))
  116. .update()
  117. }
  118. func revert(on database: Database) async throws {
  119. try await database.schema("oilSample")
  120. .deleteField("workOrderSegmentId")
  121. .field("segmentId", .int, .references("segment", "id"))
  122. .update()
  123. }
  124. }
  125. public static func ObjQuery(req: Request) async throws -> QueryBuilder<mdlOilSample>{
  126. let query = mdlOilSample.query(on: req.db)
  127. .with(\.$segment)
  128. if let x = req.parameters.get("x"){
  129. let decryptedString = try CustomCrypto.DecryptString(input: x)
  130. let array = decryptedString.components(separatedBy: ":")
  131. ///This call is the standard get by id call
  132. if (array.count == 1){
  133. let id = Int(array[0])!
  134. return query.filter(\.$id == id)
  135. }
  136. ///Optional else if if there are multiple parameters in the call
  137. ///You must include an else for each call that has parameters
  138. ///Need to check the endpoint to get the right filter statements
  139. ///else if(x.count == 2){
  140. /// let username = x[0]
  141. /// let password = x[1]
  142. /// return query.filter(\.$username == username).filter(\.$password == password)
  143. ///}
  144. else{
  145. throw Abort(.badRequest)
  146. }
  147. }
  148. else{
  149. return query
  150. }
  151. }
  152. }