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

239 строки
9.4 KiB

  1. //
  2. // OilSampleItem.swift
  3. //
  4. //
  5. // Created by Michiel Carman on 11/11/21.
  6. //
  7. import Foundation
  8. import Vapor
  9. import Fluent
  10. import FluentPostgresDriver
  11. final class OilSampleItemCtrl{
  12. //Create Unit
  13. func create(req: Request) throws -> EventLoopFuture<mdlOilSampleItem.Output>{
  14. let input = try req.content.decode(mdlOilSampleItem.Input.self)
  15. let output = self.createUnit(input)
  16. return self.save(output, req, input)
  17. }
  18. //Update Unit
  19. func update(req: Request) throws -> EventLoopFuture<mdlOilSampleItem.Output>{
  20. let input = try req.content.decode(mdlOilSampleItem.Input.self)
  21. return try qbase(req: req).first().unwrap(or: Abort(.notFound)).flatMap{output in self.mapOutput(output, input)
  22. return self.save(output, req: req)
  23. }
  24. }
  25. //Get all Divisions
  26. func readAll(req: Request) throws -> EventLoopFuture<Page<mdlOilSampleItem.Output>>{
  27. return try qbase(req: req)
  28. .paginate(for: req)
  29. .map{
  30. page in page.map{
  31. self.createRead($0)
  32. }
  33. }
  34. }
  35. //Get 1 Division
  36. func read(req: Request) throws -> EventLoopFuture<mdlOilSampleItem.Output>{
  37. return try qbase(req: req).first().unwrap(or: Abort(.internalServerError)).map{self.createRead($0)}
  38. }
  39. //Delete 1 Division
  40. func delete(req: Request) throws -> EventLoopFuture<HTTPStatus>{
  41. guard let id = req.parameters.get("id", as: Int.self) else{
  42. throw Abort(.badRequest)
  43. }
  44. return mdlOilSampleItem.find(id, on: req.db).unwrap(or: Abort(.notFound)).flatMap{ $0.delete(on: req.db)}.map{.ok}
  45. }
  46. }
  47. extension OilSampleItemCtrl{
  48. //Query Settings
  49. func qbase(req: Request) throws -> QueryBuilder<mdlOilSampleItem> {
  50. let query = mdlOilSampleItem.query(on: req.db).with(\.$oilsample)
  51. if let id = req.parameters.get("id", as: Int.self){
  52. return query.filter(\.$id == id)
  53. } else{
  54. return query
  55. }
  56. }
  57. /*
  58. let id: Int?
  59. let compartmentname: String
  60. let compartmentcode: String
  61. let compartmentlocationname1: String
  62. let compartmentlocationcode1: String
  63. let compartmentlocationname2: String
  64. let compartmentlocationcode2: String
  65. let hoursonoil: Decimal?
  66. let oiladded: Decimal?
  67. let jobsitename: String
  68. let fluidname: String
  69. let viscosityname: String
  70. let oilchanged: Bool?
  71. let filterchanged: Bool?
  72. let levelname: String
  73. let comment: String
  74. let createdate: Date?
  75. let createuserid: Int?
  76. let updatedate: Date?
  77. let updateuserid: Int?
  78. let oilsample: mdlOilSample
  79. */
  80. //create Output
  81. func createRead(_ output: mdlOilSampleItem) -> mdlOilSampleItem.Output {
  82. return mdlOilSampleItem.Output(
  83. id: output.id!,
  84. compartmentname: output.compartmentname,
  85. compartmentcode: output.compartmentcode,
  86. compartmentlocationname1: output.compartmentlocationname1,
  87. compartmentlocationcode1: output.compartmentlocationcode1,
  88. compartmentlocationname2: output.compartmentlocationname2,
  89. compartmentlocationcode2: output.compartmentlocationcode2,
  90. hoursonoil: output.hoursonoil,
  91. oiladded: output.oiladded,
  92. jobsitename: output.jobsitename,
  93. fluidname: output.fluidname,
  94. viscosityname: output.viscosityname,
  95. oilchanged: output.oilchanged,
  96. filterchanged: output.filterchanged,
  97. levelname: output.levelname,
  98. comment: output.comment,
  99. createdate: output.createdate,
  100. createuserid: output.createuserid,
  101. updatedate: output.updatedate,
  102. updateuserid: output.updateuserid,
  103. oilsample: output.$oilsample.value!
  104. )
  105. }
  106. func mapOutput(_ output: Optional<mdlOilSampleItem>.WrappedType, _ input: mdlOilSampleItem.Input){
  107. output.compartmentname = input.compartmentname;
  108. output.compartmentcode = input.compartmentcode;
  109. output.compartmentlocationname1 = input.compartmentlocationname1;
  110. output.compartmentlocationcode1 = input.compartmentlocationcode1;
  111. output.compartmentlocationname2 = input.compartmentlocationname2;
  112. output.compartmentlocationcode2 = input.compartmentlocationcode2;
  113. output.hoursonoil = input.hoursonoil;
  114. output.oiladded = input.oiladded;
  115. output.jobsitename = input.jobsitename;
  116. output.fluidname = input.fluidname;
  117. output.viscosityname = input.viscosityname;
  118. output.oilchanged = input.oilchanged;
  119. output.filterchanged = input.filterchanged;
  120. output.levelname = input.levelname;
  121. output.comment = input.comment;
  122. output.createdate = input.createdate;
  123. output.updatedate = input.updatedate;
  124. output.createuserid = input.createuserid;
  125. output.updateuserid = input.updateuserid;
  126. output.$oilsample.id = input.oilsample.id!
  127. }
  128. func createUnit(_ input: mdlOilSampleItem.Input) -> mdlOilSampleItem {
  129. return mdlOilSampleItem(
  130. id: input.id ?? nil
  131. , compartmentname: input.compartmentname
  132. , compartmentcode: input.compartmentcode
  133. , compartmentlocationname1: input.compartmentlocationname1
  134. , compartmentlocationcode1: input.compartmentlocationcode1
  135. , compartmentlocationname2: input.compartmentlocationname2
  136. , compartmentlocationcode2: input.compartmentlocationcode2
  137. , hoursonoil: input.hoursonoil
  138. , oiladded: input.oiladded
  139. , jobsitename: input.jobsitename
  140. , fluidname: input.fluidname
  141. , viscosityname: input.viscosityname
  142. , oilchanged: input.oilchanged
  143. , filterchanged: input.filterchanged
  144. , levelname: input.levelname
  145. , comment: input.comment
  146. , createuserid: input.createuserid ?? -1
  147. , createdate: input.createdate
  148. , updateuserid: input.updateuserid ?? -1
  149. , updatedate: input.updatedate
  150. , oilsample: input.oilsample
  151. )
  152. }
  153. //update function
  154. func save(_ output: Optional<mdlOilSampleItem>.WrappedType, req: Request) -> EventLoopFuture<mdlOilSampleItem.Output> {
  155. return output
  156. .save(on: req.db)
  157. .map{mdlOilSampleItem.Output(
  158. id: output.id!
  159. , compartmentname: output.compartmentname
  160. , compartmentcode: output.compartmentcode
  161. , compartmentlocationname1: output.compartmentlocationname1
  162. , compartmentlocationcode1: output.compartmentlocationcode1
  163. , compartmentlocationname2: output.compartmentlocationname2
  164. , compartmentlocationcode2: output.compartmentlocationcode2
  165. , hoursonoil: output.hoursonoil
  166. , oiladded: output.oiladded
  167. , jobsitename: output.jobsitename
  168. , fluidname: output.fluidname
  169. , viscosityname: output.viscosityname
  170. , oilchanged: output.oilchanged
  171. , filterchanged: output.filterchanged
  172. , levelname: output.levelname
  173. , comment: output.comment
  174. , createdate: output.createdate
  175. , createuserid: output.createuserid
  176. , updatedate: output.updatedate
  177. , updateuserid: output.updateuserid
  178. , oilsample: output.oilsample
  179. )
  180. }
  181. }
  182. //create function
  183. func save(_ output: mdlOilSampleItem, _ req: Request, _ input: mdlOilSampleItem.Input) -> EventLoopFuture<mdlOilSampleItem.Output> {
  184. return output
  185. .save(on: req.db)
  186. .map{
  187. mdlOilSampleItem.Output(
  188. id: output.id!
  189. , compartmentname: output.compartmentname
  190. , compartmentcode: output.compartmentcode
  191. , compartmentlocationname1: output.compartmentlocationname1
  192. , compartmentlocationcode1: output.compartmentlocationcode1
  193. , compartmentlocationname2: output.compartmentlocationname2
  194. , compartmentlocationcode2: output.compartmentlocationcode2
  195. , hoursonoil: output.hoursonoil
  196. , oiladded: output.oiladded
  197. , jobsitename: output.jobsitename
  198. , fluidname: output.fluidname
  199. , viscosityname: output.viscosityname
  200. , oilchanged: output.oilchanged
  201. , filterchanged: output.filterchanged
  202. , levelname: output.levelname
  203. , comment: output.comment
  204. , createdate: output.createdate
  205. , createuserid: output.createuserid
  206. , updatedate: output.updatedate
  207. , updateuserid: output.updateuserid
  208. , oilsample: input.oilsample
  209. )
  210. }
  211. }
  212. }
  213. extension OilSampleItemCtrl: RouteCollection{
  214. func boot(routes: RoutesBuilder) throws{
  215. let apigroup = routes.grouped("oilsampleitems")
  216. apigroup.get("", use: readAll)
  217. apigroup.get(":id", use: read)
  218. apigroup.post("", use: create)
  219. apigroup.post(":id", use: update)
  220. apigroup.delete(":id", use: delete)
  221. }
  222. }