| @@ -0,0 +1,248 @@ | |||
| { | |||
| "pins" : [ | |||
| { | |||
| "identity" : "async-http-client", | |||
| "kind" : "remoteSourceControl", | |||
| "location" : "https://github.com/swift-server/async-http-client.git", | |||
| "state" : { | |||
| "revision" : "291438696abdd48d2a83b52465c176efbd94512b", | |||
| "version" : "1.20.1" | |||
| } | |||
| }, | |||
| { | |||
| "identity" : "async-kit", | |||
| "kind" : "remoteSourceControl", | |||
| "location" : "https://github.com/vapor/async-kit.git", | |||
| "state" : { | |||
| "revision" : "7ece208cd401687641c88367a00e3ea2b04311f1", | |||
| "version" : "1.19.0" | |||
| } | |||
| }, | |||
| { | |||
| "identity" : "console-kit", | |||
| "kind" : "remoteSourceControl", | |||
| "location" : "https://github.com/vapor/console-kit.git", | |||
| "state" : { | |||
| "revision" : "a31f44ebfbd15a2cc0fda705279676773ac16355", | |||
| "version" : "4.14.1" | |||
| } | |||
| }, | |||
| { | |||
| "identity" : "fluent", | |||
| "kind" : "remoteSourceControl", | |||
| "location" : "https://github.com/vapor/fluent.git", | |||
| "state" : { | |||
| "revision" : "a586a5d4164f23a0ee4e02e1f467b9bbef0c9f1c", | |||
| "version" : "4.9.0" | |||
| } | |||
| }, | |||
| { | |||
| "identity" : "fluent-kit", | |||
| "kind" : "remoteSourceControl", | |||
| "location" : "https://github.com/vapor/fluent-kit.git", | |||
| "state" : { | |||
| "revision" : "6cef8533c9ab87865de58fa3c6e6317e3e09857a", | |||
| "version" : "1.45.1" | |||
| } | |||
| }, | |||
| { | |||
| "identity" : "fluent-postgres-driver", | |||
| "kind" : "remoteSourceControl", | |||
| "location" : "https://github.com/vapor/fluent-postgres-driver.git", | |||
| "state" : { | |||
| "revision" : "a538fc647f82d915eb84e0a12ca9b08c513e57c4", | |||
| "version" : "2.8.0" | |||
| } | |||
| }, | |||
| { | |||
| "identity" : "multipart-kit", | |||
| "kind" : "remoteSourceControl", | |||
| "location" : "https://github.com/vapor/multipart-kit.git", | |||
| "state" : { | |||
| "revision" : "12ee56f25bd3fc4c2d09c2aa16e69de61dc786e8", | |||
| "version" : "4.6.0" | |||
| } | |||
| }, | |||
| { | |||
| "identity" : "postgres-kit", | |||
| "kind" : "remoteSourceControl", | |||
| "location" : "https://github.com/vapor/postgres-kit.git", | |||
| "state" : { | |||
| "revision" : "80ab7737dac4fccd4a8ad38743828dcb71ba7ac8", | |||
| "version" : "2.12.2" | |||
| } | |||
| }, | |||
| { | |||
| "identity" : "postgres-nio", | |||
| "kind" : "remoteSourceControl", | |||
| "location" : "https://github.com/vapor/postgres-nio.git", | |||
| "state" : { | |||
| "revision" : "fa3137d39bca84843739db1c5a3db2d7f4ae65e6", | |||
| "version" : "1.20.0" | |||
| } | |||
| }, | |||
| { | |||
| "identity" : "routing-kit", | |||
| "kind" : "remoteSourceControl", | |||
| "location" : "https://github.com/vapor/routing-kit.git", | |||
| "state" : { | |||
| "revision" : "2a92a7eac411a82fb3a03731be5e76773ebe1b3e", | |||
| "version" : "4.9.0" | |||
| } | |||
| }, | |||
| { | |||
| "identity" : "sql-kit", | |||
| "kind" : "remoteSourceControl", | |||
| "location" : "https://github.com/vapor/sql-kit.git", | |||
| "state" : { | |||
| "revision" : "b2f128cb62a3abfbb1e3b2893ff3ee69e70f4f0f", | |||
| "version" : "3.28.0" | |||
| } | |||
| }, | |||
| { | |||
| "identity" : "swift-algorithms", | |||
| "kind" : "remoteSourceControl", | |||
| "location" : "https://github.com/apple/swift-algorithms.git", | |||
| "state" : { | |||
| "revision" : "f6919dfc309e7f1b56224378b11e28bab5bccc42", | |||
| "version" : "1.2.0" | |||
| } | |||
| }, | |||
| { | |||
| "identity" : "swift-atomics", | |||
| "kind" : "remoteSourceControl", | |||
| "location" : "https://github.com/apple/swift-atomics.git", | |||
| "state" : { | |||
| "revision" : "cd142fd2f64be2100422d658e7411e39489da985", | |||
| "version" : "1.2.0" | |||
| } | |||
| }, | |||
| { | |||
| "identity" : "swift-collections", | |||
| "kind" : "remoteSourceControl", | |||
| "location" : "https://github.com/apple/swift-collections.git", | |||
| "state" : { | |||
| "revision" : "d029d9d39c87bed85b1c50adee7c41795261a192", | |||
| "version" : "1.0.6" | |||
| } | |||
| }, | |||
| { | |||
| "identity" : "swift-crypto", | |||
| "kind" : "remoteSourceControl", | |||
| "location" : "https://github.com/apple/swift-crypto.git", | |||
| "state" : { | |||
| "revision" : "cc76b894169a3c86b71bac10c78a4db6beb7a9ad", | |||
| "version" : "3.2.0" | |||
| } | |||
| }, | |||
| { | |||
| "identity" : "swift-http-types", | |||
| "kind" : "remoteSourceControl", | |||
| "location" : "https://github.com/apple/swift-http-types", | |||
| "state" : { | |||
| "revision" : "12358d55a3824bd5fed310b999ea8cf83a9a1a65", | |||
| "version" : "1.0.3" | |||
| } | |||
| }, | |||
| { | |||
| "identity" : "swift-log", | |||
| "kind" : "remoteSourceControl", | |||
| "location" : "https://github.com/apple/swift-log.git", | |||
| "state" : { | |||
| "revision" : "e97a6fcb1ab07462881ac165fdbb37f067e205d5", | |||
| "version" : "1.5.4" | |||
| } | |||
| }, | |||
| { | |||
| "identity" : "swift-metrics", | |||
| "kind" : "remoteSourceControl", | |||
| "location" : "https://github.com/apple/swift-metrics.git", | |||
| "state" : { | |||
| "revision" : "971ba26378ab69c43737ee7ba967a896cb74c0d1", | |||
| "version" : "2.4.1" | |||
| } | |||
| }, | |||
| { | |||
| "identity" : "swift-nio", | |||
| "kind" : "remoteSourceControl", | |||
| "location" : "https://github.com/apple/swift-nio.git", | |||
| "state" : { | |||
| "revision" : "635b2589494c97e48c62514bc8b37ced762e0a62", | |||
| "version" : "2.63.0" | |||
| } | |||
| }, | |||
| { | |||
| "identity" : "swift-nio-extras", | |||
| "kind" : "remoteSourceControl", | |||
| "location" : "https://github.com/apple/swift-nio-extras.git", | |||
| "state" : { | |||
| "revision" : "363da63c1966405764f380c627409b2f9d9e710b", | |||
| "version" : "1.21.0" | |||
| } | |||
| }, | |||
| { | |||
| "identity" : "swift-nio-http2", | |||
| "kind" : "remoteSourceControl", | |||
| "location" : "https://github.com/apple/swift-nio-http2.git", | |||
| "state" : { | |||
| "revision" : "0904bf0feb5122b7e5c3f15db7df0eabe623dd87", | |||
| "version" : "1.30.0" | |||
| } | |||
| }, | |||
| { | |||
| "identity" : "swift-nio-ssl", | |||
| "kind" : "remoteSourceControl", | |||
| "location" : "https://github.com/apple/swift-nio-ssl.git", | |||
| "state" : { | |||
| "revision" : "7c381eb6083542b124a6c18fae742f55001dc2b5", | |||
| "version" : "2.26.0" | |||
| } | |||
| }, | |||
| { | |||
| "identity" : "swift-nio-transport-services", | |||
| "kind" : "remoteSourceControl", | |||
| "location" : "https://github.com/apple/swift-nio-transport-services.git", | |||
| "state" : { | |||
| "revision" : "6cbe0ed2b394f21ab0d46b9f0c50c6be964968ce", | |||
| "version" : "1.20.1" | |||
| } | |||
| }, | |||
| { | |||
| "identity" : "swift-numerics", | |||
| "kind" : "remoteSourceControl", | |||
| "location" : "https://github.com/apple/swift-numerics.git", | |||
| "state" : { | |||
| "revision" : "0a5bc04095a675662cf24757cc0640aa2204253b", | |||
| "version" : "1.0.2" | |||
| } | |||
| }, | |||
| { | |||
| "identity" : "swift-system", | |||
| "kind" : "remoteSourceControl", | |||
| "location" : "https://github.com/apple/swift-system.git", | |||
| "state" : { | |||
| "revision" : "025bcb1165deab2e20d4eaba79967ce73013f496", | |||
| "version" : "1.2.1" | |||
| } | |||
| }, | |||
| { | |||
| "identity" : "vapor", | |||
| "kind" : "remoteSourceControl", | |||
| "location" : "https://github.com/vapor/vapor.git", | |||
| "state" : { | |||
| "revision" : "4942d74e8493fc918ed6144c835c8a0e6affd4f4", | |||
| "version" : "4.92.1" | |||
| } | |||
| }, | |||
| { | |||
| "identity" : "websocket-kit", | |||
| "kind" : "remoteSourceControl", | |||
| "location" : "https://github.com/vapor/websocket-kit.git", | |||
| "state" : { | |||
| "revision" : "53fe0639a98903858d0196b699720decb42aee7b", | |||
| "version" : "2.14.0" | |||
| } | |||
| } | |||
| ], | |||
| "version" : 2 | |||
| } | |||
| @@ -1,8 +1,51 @@ | |||
| // | |||
| // File.swift | |||
| // | |||
| // | |||
| // Created by Michiel Carman on 1/25/24. | |||
| // | |||
| import Foundation | |||
| import Fluent | |||
| import Vapor | |||
| struct cntrlDataTypes: RouteCollection { | |||
| func boot(routes: RoutesBuilder) throws { | |||
| let rts = routes.grouped("dataTypes") | |||
| rts.get(use: index) | |||
| rts.get(":id", use: search) | |||
| rts.post(use: create) | |||
| rts.put(use: update) | |||
| rts.group(":id") { rt in | |||
| rt.delete(use: delete) | |||
| } | |||
| } | |||
| func index(req: Request) async throws -> [mdlDataType] { | |||
| try await mdlDataType.query(on: req.db).with(\.$units).all() | |||
| } | |||
| func search(req: Request) async throws -> mdlDataType{ | |||
| guard let id = req.parameters.get("id", as: Int.self) else{ | |||
| throw Abort(.notFound) | |||
| } | |||
| return try await mdlDataType.query(on: req.db).with(\.$units).filter(\.$id == id).first()! | |||
| } | |||
| func create(req: Request) async throws -> mdlDataType { | |||
| let obj = try req.content.decode(mdlDataType.self) | |||
| try await obj.save(on: req.db) | |||
| return obj | |||
| } | |||
| func update(req: Request) async throws -> mdlDataType{ | |||
| let obj = try req.content.decode(mdlDataType.self) | |||
| let dbobj = try await mdlDataType.query(on: req.db).with(\.$units).filter(\.$id == obj.id!).first()! | |||
| dbobj.description = obj.description | |||
| dbobj.name = obj.name | |||
| dbobj.updatedate = Date() | |||
| dbobj.updateuserid = -1 | |||
| try await dbobj.update(on: req.db) | |||
| return dbobj | |||
| } | |||
| func delete(req: Request) async throws -> HTTPStatus { | |||
| guard let obj = try await mdlDataType.find(req.parameters.get("id"), on: req.db) else { | |||
| throw Abort(.notFound) | |||
| } | |||
| try await obj.delete(on: req.db) | |||
| return .noContent | |||
| } | |||
| } | |||
| @@ -5,4 +5,46 @@ | |||
| // Created by Michiel Carman on 4/1/24. | |||
| // | |||
| import Foundation | |||
| import Fluent | |||
| import Vapor | |||
| struct cntrlRole: RouteCollection { | |||
| func boot(routes: RoutesBuilder) throws { | |||
| let rts = routes.grouped("roles") | |||
| rts.get(use: index) | |||
| rts.post(use: create) | |||
| rts.put(use: update) | |||
| rts.group(":id") { todo in | |||
| rts.delete(use: delete) | |||
| } | |||
| } | |||
| func index(req: Request) async throws -> [mdlRole] { | |||
| try await mdlRole.query(on: req.db).with(\.$users).all() | |||
| } | |||
| func create(req: Request) async throws -> mdlRole { | |||
| let obj = try req.content.decode(mdlRole.self) | |||
| try await obj.save(on: req.db) | |||
| return obj | |||
| } | |||
| func update(req: Request) async throws -> mdlRole{ | |||
| let obj = try req.content.decode(mdlRole.self) | |||
| let dbobj = try await mdlRole.query(on: req.db).filter(\.$id == obj.id!).first()! | |||
| dbobj.description = obj.description | |||
| dbobj.name = obj.name | |||
| dbobj.updatedate = Date() | |||
| dbobj.updateuserid = -1 | |||
| try await dbobj.update(on: req.db) | |||
| return dbobj | |||
| } | |||
| func delete(req: Request) async throws -> HTTPStatus { | |||
| guard let obj = try await mdlRole.find(req.parameters.get("id"), on: req.db) else { | |||
| throw Abort(.notFound) | |||
| } | |||
| try await obj.delete(on: req.db) | |||
| return .noContent | |||
| } | |||
| } | |||
| @@ -1,8 +1,52 @@ | |||
| // | |||
| // File.swift | |||
| // | |||
| // | |||
| // | |||
| // Created by Michiel Carman on 4/1/24. | |||
| // | |||
| import Foundation | |||
| import Fluent | |||
| import Vapor | |||
| struct cntrlUser: RouteCollection { | |||
| func boot(routes: RoutesBuilder) throws { | |||
| let rts = routes.grouped("users") | |||
| rts.get(use: index) | |||
| rts.post(use: create) | |||
| rts.put(use: update) | |||
| rts.group(":id") { todo in | |||
| rts.delete(use: delete) | |||
| } | |||
| } | |||
| func index(req: Request) async throws -> [mdlUser] { | |||
| try await mdlUser.query(on: req.db).with(\.$roles).all() | |||
| } | |||
| func create(req: Request) async throws -> mdlUser { | |||
| let obj = try req.content.decode(mdlUser.self) | |||
| try await obj.save(on: req.db) | |||
| return obj | |||
| } | |||
| func update(req: Request) async throws -> mdlUser{ | |||
| let obj = try req.content.decode(mdlUser.self) | |||
| let dbobj = try await mdlUser.query(on: req.db).filter(\.$id == obj.id!).first()! | |||
| dbobj.firstname = obj.firstname | |||
| dbobj.lastname = obj.lastname | |||
| dbobj.email = obj.email | |||
| dbobj.password = obj.password | |||
| dbobj.updatedate = Date() | |||
| dbobj.updateuserid = -1 | |||
| try await dbobj.update(on: req.db) | |||
| return dbobj | |||
| } | |||
| func delete(req: Request) async throws -> HTTPStatus { | |||
| guard let obj = try await mdlUser.find(req.parameters.get("id"), on: req.db) else { | |||
| throw Abort(.notFound) | |||
| } | |||
| try await obj.delete(on: req.db) | |||
| return .noContent | |||
| } | |||
| } | |||
| @@ -1,8 +1,51 @@ | |||
| // | |||
| // File.swift | |||
| // | |||
| // | |||
| // Created by Michiel Carman on 1/25/24. | |||
| // | |||
| import Foundation | |||
| import Fluent | |||
| import Vapor | |||
| struct cntrlValueType: RouteCollection { | |||
| func boot(routes: RoutesBuilder) throws { | |||
| let rts = routes.grouped("valueTypes") | |||
| rts.get(use: index) | |||
| rts.get(":id", use: search) | |||
| rts.post(use: create) | |||
| rts.put(use: update) | |||
| rts.group(":id") { rt in | |||
| rt.delete(use: delete) | |||
| } | |||
| } | |||
| func index(req: Request) async throws -> [mdlValueType] { | |||
| try await mdlValueType.query(on: req.db).all() | |||
| } | |||
| func search(req: Request) async throws -> mdlValueType{ | |||
| guard let id = req.parameters.get("id", as: Int.self) else{ | |||
| throw Abort(.notFound) | |||
| } | |||
| return try await mdlValueType.query(on: req.db).filter(\.$id == id).first()! | |||
| } | |||
| func create(req: Request) async throws -> mdlValueType { | |||
| let obj = try req.content.decode(mdlValueType.self) | |||
| try await obj.save(on: req.db) | |||
| return obj | |||
| } | |||
| func update(req: Request) async throws -> mdlValueType{ | |||
| let obj = try req.content.decode(mdlValueType.self) | |||
| let dbobj = try await mdlValueType.query(on: req.db).filter(\.$id == obj.id!).first()! | |||
| dbobj.description = obj.description | |||
| dbobj.name = obj.name | |||
| dbobj.updatedate = Date() | |||
| dbobj.updateuserid = -1 | |||
| try await dbobj.update(on: req.db) | |||
| return dbobj | |||
| } | |||
| func delete(req: Request) async throws -> HTTPStatus { | |||
| guard let obj = try await mdlValueType.find(req.parameters.get("id"), on: req.db) else { | |||
| throw Abort(.notFound) | |||
| } | |||
| try await obj.delete(on: req.db) | |||
| return .noContent | |||
| } | |||
| } | |||
| @@ -1,8 +1,92 @@ | |||
| // | |||
| // File.swift | |||
| // | |||
| // mdlRole.swift | |||
| // | |||
| // Created by Michiel Carman on 1/25/24. | |||
| // | |||
| // Created by Michiel Carman on 1/24/24. | |||
| // | |||
| import Fluent | |||
| import Vapor | |||
| import Foundation | |||
| import FluentKit | |||
| final class mdlRole: Model, Content { | |||
| static let schema = "role" | |||
| @ID(custom: "id", generatedBy: .database) var id: Int? | |||
| @Field(key: "name") var name: String? | |||
| @Field(key: "description") var description: String? | |||
| @Siblings(through: mdlXUserRole.self, from: \.$role, to: \.$user) var users: [mdlUser] | |||
| @Timestamp(key: "createDate", on: .create) var createdate: Date? | |||
| @Field(key: "createUserId") var createuserid: Int? | |||
| @Timestamp(key: "updateDate", on: .update) var updatedate: Date? | |||
| @Field(key: "updateUserId") var updateuserid: Int? | |||
| init() { } | |||
| init(id: Int? = nil, name: String? = nil, description: String? = nil, createuserid: Int? = nil, updateuserid: Int? = nil) { | |||
| self.id = id | |||
| self.name = name | |||
| self.description = description | |||
| self.createuserid = createuserid | |||
| self.updateuserid = updateuserid | |||
| } | |||
| } | |||
| extension mdlRole{ | |||
| struct Create: AsyncMigration { | |||
| func prepare(on database: Database) async throws { | |||
| try await database.schema("role") | |||
| .field("id", .int, .identifier(auto: true)) | |||
| .field("name", .string) | |||
| .field("description", .string) | |||
| .field("createDate", .datetime) | |||
| .field("createUserId", .int) | |||
| .field("updateDate", .datetime) | |||
| .field("updateUserId", .int) | |||
| .create() | |||
| } | |||
| func revert(on database: Database) async throws { | |||
| try await database.schema("role").delete() | |||
| } | |||
| } | |||
| struct Seed: Migration{ | |||
| func prepare(on database: Database) -> EventLoopFuture<Void> { | |||
| let mdls: [mdlRole] = [ | |||
| .init(id: 1, name: "Administrator", description: nil, createuserid: -1, updateuserid: -1), | |||
| .init(id: 2, name: "Gate Keeper", description: nil, createuserid: -1, updateuserid: -1), | |||
| .init(id: 3, name: "Preventative Maintenance", description: nil, createuserid: -1, updateuserid: -1), | |||
| .init(id: 4, name: "Technician", description: nil, createuserid: -1, updateuserid: -1), | |||
| .init(id: 5, name: "Yard Person", description: nil, createuserid: -1, updateuserid: -1), | |||
| .init(id: 6, name: "Inspector", description: nil, createuserid: -1, updateuserid: -1), | |||
| .init(id: 7, name: "Operator", description: nil, createuserid: -1, updateuserid: -1), | |||
| .init(id: 8, name: "Customer", description: nil, createuserid: -1, updateuserid: -1), | |||
| .init(id: 9, name: "Sales Person", description: nil, createuserid: -1, updateuserid: -1), | |||
| .init(id: 10, name: "Sales Manager", description: nil, createuserid: -1, updateuserid: -1), | |||
| .init(id: 11, name: "Parts Manager", description: nil, createuserid: -1, updateuserid: -1), | |||
| .init(id: 12, name: "Foreman", description: nil, createuserid: -1, updateuserid: -1), | |||
| .init(id: 13, name: "General Admin", description: nil, createuserid: -1, updateuserid: -1) | |||
| ] | |||
| return mdls.map { mdl in | |||
| mdl.save(on: database) | |||
| } | |||
| .flatten(on: database.eventLoop) | |||
| } | |||
| func revert(on database: Database) -> EventLoopFuture<Void> { | |||
| mdlRole.query(on: database).delete() | |||
| } | |||
| } | |||
| } | |||
| @@ -1,8 +1,91 @@ | |||
| // | |||
| // File.swift | |||
| // | |||
| // mdlUser.swift | |||
| // | |||
| // Created by Michiel Carman on 1/31/24. | |||
| // | |||
| // Created by Michiel Carman on 1/24/24. | |||
| // | |||
| import Fluent | |||
| import Vapor | |||
| import Foundation | |||
| import FluentKit | |||
| final class mdlUser: Model, Content { | |||
| static let schema = "user" | |||
| @ID(custom: "id", generatedBy: .database) var id: Int? | |||
| @Field(key: "number") var number: String? | |||
| @Field(key: "firstName") var firstname: String? | |||
| @Field(key: "lastName") var lastname: String? | |||
| @Field(key: "username") var username: String? | |||
| @Field(key: "password") var password: String? | |||
| @Field(key: "email") var email: String? | |||
| @Field(key: "isActive") var isactive: Bool? | |||
| @OptionalParent(key: "divisionId") var division: mdlDivision? | |||
| @OptionalParent(key: "locationId") var location: mdlLocation? | |||
| @OptionalParent(key: "gateId") var gate: mdlGate? | |||
| @Siblings(through: mdlXUserRole.self, from: \.$user, to: \.$role) var roles: [mdlRole] | |||
| @Children(for: \.$technician) var workorders: [mdlWorkOrder] | |||
| @Timestamp(key: "createDate", on: .create) var createdate: Date? | |||
| @Field(key: "createUserId") var createuserid: Int? | |||
| @Timestamp(key: "updateDate", on: .update) var updatedate: Date? | |||
| @Field(key: "updateUserId") var updateuserid: Int? | |||
| init() { } | |||
| init(id: Int? = nil, number: String? = nil, firstname: String? = nil, lastname: String? = nil, username: String? = nil, password: String? = nil, email: String? = nil, isactive: Bool? = nil, createuserid: Int? = nil, updateuserid: Int? = nil, divisionid: Int? = nil, locationid: Int? = nil, gateid: Int? = nil) { | |||
| self.id = id | |||
| self.number = number | |||
| self.firstname = firstname | |||
| self.lastname = lastname | |||
| self.username = username | |||
| self.password = password | |||
| self.email = email | |||
| self.isactive = isactive | |||
| self.$division.$id.value = divisionid! | |||
| self.$location.$id.value = locationid! | |||
| self.$gate.$id.value = gateid! | |||
| self.createuserid = createuserid | |||
| self.updateuserid = updateuserid | |||
| } | |||
| } | |||
| extension mdlUser{ | |||
| struct Create: AsyncMigration { | |||
| func prepare(on database: Database) async throws { | |||
| try await database.schema("user") | |||
| .field("id", .int, .identifier(auto: true)) | |||
| .field("number", .string) | |||
| .field("firstName", .string) | |||
| .field("lastName", .string) | |||
| .field("username", .string) | |||
| .field("password", .string) | |||
| .field("email", .string) | |||
| .field("isActive", .bool) | |||
| .field("divisionId", .int, .references("division", "id")) | |||
| .field("locationId", .int, .references("location", "id")) | |||
| .field("gateId", .int, .references("gate", "id")) | |||
| .field("createDate", .datetime) | |||
| .field("createUserId", .int) | |||
| .field("updateDate", .datetime) | |||
| .field("updateUserId", .int) | |||
| .create() | |||
| } | |||
| func revert(on database: Database) async throws { | |||
| try await database.schema("user").delete() | |||
| } | |||
| } | |||
| } | |||
| @@ -1,8 +1,67 @@ | |||
| // | |||
| // File.swift | |||
| // | |||
| // mdlResponseType.swift | |||
| // | |||
| // Created by Michiel Carman on 1/31/24. | |||
| // | |||
| // Created by Michiel Carman on 1/24/24. | |||
| // | |||
| import Fluent | |||
| import Vapor | |||
| import Foundation | |||
| import FluentKit | |||
| final class mdlResponseType: Model, Content { | |||
| static let schema = "responseType" | |||
| @ID(custom: "id", generatedBy: .database) var id: Int? | |||
| @Field(key: "name") var name: String? | |||
| @Field(key: "color") var color: String? | |||
| @Field(key: "isActive") var isactive: Bool? | |||
| @Parent(key: "repairTypeId") var repairtype: mdlRepairType | |||
| @Timestamp(key: "createDate", on: .create) var createdate: Date? | |||
| @Field(key: "createUserId") var createuserid: Int? | |||
| @Timestamp(key: "updateDate", on: .update) var updatedate: Date? | |||
| @Field(key: "updateUserId") var updateuserid: Int? | |||
| init() { } | |||
| init(id: Int? = nil, name: String? = nil, color: String? = nil, isactive: Bool? = nil, repairtypeid: Int? = nil, createuserid: Int? = nil, updateuserid: Int? = nil) { | |||
| self.id = id | |||
| self.name = name | |||
| self.color = color | |||
| self.isactive = isactive | |||
| self.$repairtype.$id.value = repairtypeid! | |||
| self.createuserid = createuserid | |||
| self.updateuserid = updateuserid | |||
| } | |||
| } | |||
| extension mdlResponseType{ | |||
| struct Create: AsyncMigration { | |||
| func prepare(on database: Database) async throws { | |||
| try await database.schema("responseType") | |||
| .field("id", .int, .identifier(auto: true)) | |||
| .field("name", .string) | |||
| .field("color", .string) | |||
| .field("isActive", .bool) | |||
| .field("responseTypeId", .int) | |||
| .field("createDate", .datetime) | |||
| .field("createUserId", .int) | |||
| .field("updateDate", .datetime) | |||
| .field("updateUserId", .int) | |||
| .create() | |||
| } | |||
| func revert(on database: Database) async throws { | |||
| try await database.schema("responseType").delete() | |||
| } | |||
| } | |||
| } | |||
| @@ -7,8 +7,10 @@ | |||
| import Fluent | |||
| import Vapor | |||
| import Foundation | |||
| import FluentKit | |||
| final class Category: Model, Content { | |||
| final class mdlCategory: Model, Content { | |||
| static let schema = "category" | |||
| @ID(custom: "id", generatedBy: .database) var id: Int? | |||
| @@ -33,3 +35,24 @@ final class Category: Model, Content { | |||
| self.updateuserid = updateuserid | |||
| } | |||
| } | |||
| extension mdlCategory{ | |||
| struct Create: AsyncMigration { | |||
| func prepare(on database: Database) async throws { | |||
| try await database.schema("category") | |||
| .field("id", .int, .identifier(auto: true)) | |||
| .field("name", .string) | |||
| .field("description", .string) | |||
| .field("isActive", .bool) | |||
| .field("createDate", .datetime) | |||
| .field("createUserId", .int) | |||
| .field("updateDate", .datetime) | |||
| .field("updateUserId", .int) | |||
| .create() | |||
| } | |||
| func revert(on database: Database) async throws { | |||
| try await database.schema("category").delete() | |||
| } | |||
| } | |||
| } | |||
| @@ -7,8 +7,10 @@ | |||
| import Fluent | |||
| import Vapor | |||
| import Foundation | |||
| import FluentKit | |||
| final class ComparisonType: Model, Content { | |||
| final class mdlComparisonType: Model, Content { | |||
| static let schema = "comparisonType" | |||
| @ID(custom: "id", generatedBy: .database) var id: Int? | |||
| @@ -17,7 +19,7 @@ final class ComparisonType: Model, Content { | |||
| @Field(key: "description") var description: String? | |||
| @Timestamp(key: "createDate", on: .create) var createdate: Date? | |||
| @Field(key: "creteUserId") var createuserid: Int? | |||
| @Field(key: "createUserId") var createuserid: Int? | |||
| @Timestamp(key: "updateDate", on: .update) var updatedate: Date? | |||
| @Field(key: "updateUserId") var updateuserid: Int? | |||
| @@ -33,3 +35,45 @@ final class ComparisonType: Model, Content { | |||
| self.updateuserid = updateuserid | |||
| } | |||
| } | |||
| extension mdlComparisonType{ | |||
| struct Create: AsyncMigration { | |||
| func prepare(on database: Database) async throws { | |||
| try await database.schema("comparisonType") | |||
| .field("id", .int, .identifier(auto: true)) | |||
| .field("name", .string) | |||
| .field("description", .string) | |||
| .field("createDate", .datetime) | |||
| .field("createUserId", .int) | |||
| .field("updateDate", .datetime) | |||
| .field("updateUserId", .int) | |||
| .create() | |||
| } | |||
| func revert(on database: Database) async throws { | |||
| try await database.schema("comparisonType").delete() | |||
| } | |||
| } | |||
| struct Seed: Migration{ | |||
| func prepare(on database: Database) -> EventLoopFuture<Void> { | |||
| let cts: [mdlComparisonType] = [ | |||
| .init(id: 1, name: "Range", description: "must be between a maximum and minimum", createuserid: -1, updateuserid: -1), | |||
| .init(id: 2, name: "Min", description: "must be greater than or equal", createuserid: -1, updateuserid: -1), | |||
| .init(id: 3, name: "Max", description: "must be less than or equal", createuserid: -1, updateuserid: -1), | |||
| .init(id: 4, name: "Equals", description: "must be equal", createuserid: -1, updateuserid: -1), | |||
| .init(id: 5, name: "Variance", description: "must be between the base plus or minus a variance", createuserid: -1, updateuserid: -1) | |||
| ] | |||
| return cts.map { ct in | |||
| ct.save(on: database) | |||
| } | |||
| .flatten(on: database.eventLoop) | |||
| } | |||
| func revert(on database: Database) -> EventLoopFuture<Void> { | |||
| mdlComparisonType.query(on: database).delete() | |||
| } | |||
| } | |||
| } | |||
| @@ -1,8 +1,81 @@ | |||
| // | |||
| // File.swift | |||
| // | |||
| // mdlContactType.swift | |||
| // | |||
| // Created by Michiel Carman on 1/26/24. | |||
| // | |||
| // Created by Michiel Carman on 1/24/24. | |||
| // | |||
| import Fluent | |||
| import Vapor | |||
| import Foundation | |||
| import FluentKit | |||
| final class mdlContactType: Model, Content { | |||
| static let schema = "contactType" | |||
| @ID(custom: "id", generatedBy: .database) var id: Int? | |||
| @Field(key: "name") var name: String? | |||
| @Field(key: "description") var description: String? | |||
| @Field(key: "isActive") var isactive: Bool? | |||
| @Timestamp(key: "createDate", on: .create) var createdate: Date? | |||
| @Field(key: "createUserId") var createuserid: Int? | |||
| @Timestamp(key: "updateDate", on: .update) var updatedate: Date? | |||
| @Field(key: "updateUserId") var updateuserid: Int? | |||
| init() { } | |||
| init(id: Int? = nil, name: String? = nil, description: String? = nil, isactive: Bool? = nil, createuserid: Int? = nil, updateuserid: Int? = nil) { | |||
| self.id = id | |||
| self.name = name | |||
| self.description = description | |||
| self.isactive = isactive | |||
| self.createuserid = createuserid | |||
| self.updateuserid = updateuserid | |||
| } | |||
| } | |||
| extension mdlContactType{ | |||
| struct Create: AsyncMigration { | |||
| func prepare(on database: Database) async throws { | |||
| try await database.schema("contactType") | |||
| .field("id", .int, .identifier(auto: true)) | |||
| .field("name", .string) | |||
| .field("description", .string) | |||
| .field("isActive", .bool) | |||
| .field("createDate", .datetime) | |||
| .field("createUserId", .int) | |||
| .field("updateDate", .datetime) | |||
| .field("updateUserId", .int) | |||
| .create() | |||
| } | |||
| func revert(on database: Database) async throws { | |||
| try await database.schema("contactType").delete() | |||
| } | |||
| } | |||
| struct Seed: Migration{ | |||
| func prepare(on database: Database) -> EventLoopFuture<Void> { | |||
| let mdls: [mdlContactType] = [ | |||
| .init(id: nil, name: "Address", description: nil, isactive: true, createuserid: -1, updateuserid: -1), | |||
| .init(id: nil, name: "Email", description: nil, isactive: true, createuserid: -1, updateuserid: -1), | |||
| .init(id: nil, name: "Phone", description: nil, isactive: true, createuserid: -1, updateuserid: -1), | |||
| .init(id: nil, name: "Fax", description: nil, isactive: true, createuserid: -1, updateuserid: -1) | |||
| ] | |||
| return mdls.map { mdl in | |||
| mdl.save(on: database) | |||
| } | |||
| .flatten(on: database.eventLoop) | |||
| } | |||
| func revert(on database: Database) -> EventLoopFuture<Void> { | |||
| mdlContactType.query(on: database).delete() | |||
| } | |||
| } | |||
| } | |||
| @@ -1,8 +1,79 @@ | |||
| // | |||
| // File.swift | |||
| // | |||
| // ComparisonType.swift | |||
| // | |||
| // Created by Michiel Carman on 1/25/24. | |||
| // | |||
| // Created by Michiel Carman on 1/24/24. | |||
| // | |||
| import Fluent | |||
| import Vapor | |||
| import Foundation | |||
| import FluentKit | |||
| final class mdlDataType: Model, Content { | |||
| static let schema = "dataType" | |||
| @ID(custom: "id", generatedBy: .database) var id: Int? | |||
| @Field(key: "name") var name: String? | |||
| @Field(key: "description") var description: String? | |||
| @Children(for: \.$datatype) var units: [mdlUnit] | |||
| @Timestamp(key: "createDate", on: .create) var createdate: Date? | |||
| @Field(key: "createUserId") var createuserid: Int? | |||
| @Timestamp(key: "updateDate", on: .update) var updatedate: Date? | |||
| @Field(key: "updateUserId") var updateuserid: Int? | |||
| init() { } | |||
| init(id: Int? = nil, name: String? = nil, description: String? = nil, createuserid: Int? = nil, updateuserid: Int? = nil) { | |||
| self.id = id | |||
| self.name = name | |||
| self.description = description | |||
| self.createuserid = createuserid | |||
| self.updateuserid = updateuserid | |||
| } | |||
| } | |||
| extension mdlDataType{ | |||
| struct Create: AsyncMigration { | |||
| func prepare(on database: Database) async throws { | |||
| try await database.schema("dataType") | |||
| .field("id", .int, .identifier(auto: true)) | |||
| .field("name", .string) | |||
| .field("description", .string) | |||
| .field("createDate", .datetime) | |||
| .field("createUserId", .int) | |||
| .field("updateDate", .datetime) | |||
| .field("updateUserId", .int) | |||
| .create() | |||
| } | |||
| func revert(on database: Database) async throws { | |||
| try await database.schema("dataType").delete() | |||
| } | |||
| } | |||
| struct Seed: Migration{ | |||
| func prepare(on database: Database) -> EventLoopFuture<Void> { | |||
| let mdls: [mdlDataType] = [ | |||
| .init(id: 1, name: "String", description: nil, createuserid: -1, updateuserid: -1), | |||
| .init(id: 2, name: "Integer", description: nil, createuserid: -1, updateuserid: -1), | |||
| .init(id: 3, name: "Decimal", description: nil, createuserid: -1, updateuserid: -1), | |||
| .init(id: 4, name: "Date Time", description: nil, createuserid: -1, updateuserid: -1), | |||
| .init(id: 5, name: "Boolean", description: nil, createuserid: -1, updateuserid: -1) | |||
| ] | |||
| return mdls.map { mdl in | |||
| mdl.save(on: database) | |||
| } | |||
| .flatten(on: database.eventLoop) | |||
| } | |||
| func revert(on database: Database) -> EventLoopFuture<Void> { | |||
| mdlDataType.query(on: database).delete() | |||
| } | |||
| } | |||
| } | |||
| @@ -19,6 +19,9 @@ final class mdlDivision: Model, Content { | |||
| @Field(key: "description") var description: String? | |||
| @Field(key: "isActive") var isactive: Bool? | |||
| @Children(for: \.$division) var users: [mdlUser] | |||
| @Timestamp(key: "createDate", on: .create) var createdate: Date? | |||
| @Field(key: "createUserId") var createuserid: Int? | |||
| @Timestamp(key: "updateDate", on: .update) var updatedate: Date? | |||
| @@ -1,8 +1,74 @@ | |||
| // | |||
| // File.swift | |||
| // | |||
| // EquipmentType.swift | |||
| // | |||
| // Created by Michiel Carman on 1/31/24. | |||
| // | |||
| // Created by Michiel Carman on 1/24/24. | |||
| // | |||
| import Fluent | |||
| import Vapor | |||
| import Foundation | |||
| import FluentKit | |||
| final class mdlEquipmentType: Model, Content { | |||
| static let schema = "equipmentType" | |||
| @ID(custom: "id", generatedBy: .database) var id: Int? | |||
| @Field(key: "name") var name: String? | |||
| @Field(key: "description") var description: String? | |||
| @Field(key: "isActive") var isactive: Bool? | |||
| @Timestamp(key: "createDate", on: .create) var createdate: Date? | |||
| @Field(key: "createUserId") var createuserid: Int? | |||
| @Timestamp(key: "updateDate", on: .update) var updatedate: Date? | |||
| @Field(key: "updateUserId") var updateuserid: Int? | |||
| init() { } | |||
| init(id: Int? = nil, name: String? = nil, description: String? = nil, isactive: Bool? = nil, createuserid: Int? = nil, updateuserid: Int? = nil) { | |||
| self.id = id | |||
| self.name = name | |||
| self.description = description | |||
| self.isactive = isactive | |||
| self.createuserid = createuserid | |||
| self.updateuserid = updateuserid | |||
| } | |||
| } | |||
| extension mdlEquipmentType{ | |||
| struct Create: AsyncMigration { | |||
| func prepare(on database: Database) async throws { | |||
| try await database.schema("equipmentType") | |||
| .field("id", .int, .identifier(auto: true)) | |||
| .field("name", .string) | |||
| .field("description", .string) | |||
| .field("isActive", .bool) | |||
| .field("createDate", .datetime) | |||
| .field("createUserId", .int) | |||
| .field("updateDate", .datetime) | |||
| .field("updateUserId", .int) | |||
| .create() | |||
| } | |||
| func revert(on database: Database) async throws { | |||
| try await database.schema("equipmentType").delete() | |||
| } | |||
| } | |||
| struct Seed: Migration{ | |||
| func prepare(on database: Database) -> EventLoopFuture<Void> { | |||
| let mdls: [mdlEquipmentType] = [ | |||
| .init(id: nil, name: "Prime", description: nil, createuserid: -1, updateuserid: -1), | |||
| .init(id: nil, name: "Attachment", description: nil, createuserid: -1, updateuserid: -1) | |||
| ] | |||
| return mdls.map { mdl in | |||
| mdl.save(on: database) | |||
| } | |||
| .flatten(on: database.eventLoop) | |||
| } | |||
| func revert(on database: Database) -> EventLoopFuture<Void> { | |||
| mdlEquipmentType.query(on: database).delete() | |||
| } | |||
| } | |||
| } | |||
| @@ -20,6 +20,8 @@ final class mdlFuel: Model, Content { | |||
| @Field(key: "sortOrder") var sortorder: Int? | |||
| @Field(key: "isActive") var isactive: Bool? | |||
| @Children(for: \.$fuel) var workorders: [mdlWorkOrder] | |||
| @Timestamp(key: "createDate", on: .create) var createdate: Date? | |||
| @Field(key: "createUserId") var createuserid: Int? | |||
| @Timestamp(key: "updateDate", on: .update) var updatedate: Date? | |||
| @@ -1,8 +1,66 @@ | |||
| // | |||
| // File.swift | |||
| // | |||
| // | |||
| // Created by Michiel Carman on 1/26/24. | |||
| // | |||
| // mdlGate.swift | |||
| // | |||
| // | |||
| // Created by Michiel Carman on 1/24/24. | |||
| // | |||
| import Fluent | |||
| import Vapor | |||
| import Foundation | |||
| import FluentKit | |||
| final class mdlGate: Model, Content { | |||
| static let schema = "gate" | |||
| @ID(custom: "id", generatedBy: .database) var id: Int? | |||
| @Field(key: "name") var name: String? | |||
| @Field(key: "description") var description: String? | |||
| @Field(key: "isActive") var isactive: Bool? | |||
| @Children(for: \.$gate) var users: [mdlUser] | |||
| @Timestamp(key: "createDate", on: .create) var createdate: Date? | |||
| @Field(key: "createUserId") var createuserid: Int? | |||
| @Timestamp(key: "updateDate", on: .update) var updatedate: Date? | |||
| @Field(key: "updateUserId") var updateuserid: Int? | |||
| init() { } | |||
| init(id: Int? = nil, name: String? = nil, description: String? = nil, isactive: Bool? = nil, createuserid: Int? = nil, updateuserid: Int? = nil) { | |||
| self.id = id | |||
| self.name = name | |||
| self.description = description | |||
| self.isactive = isactive | |||
| self.createuserid = createuserid | |||
| self.updateuserid = updateuserid | |||
| } | |||
| } | |||
| extension mdlGate{ | |||
| struct Create: AsyncMigration { | |||
| func prepare(on database: Database) async throws { | |||
| try await database.schema("gate") | |||
| .field("id", .int, .identifier(auto: true)) | |||
| .field("name", .string) | |||
| .field("description", .string) | |||
| .field("isActive", .bool) | |||
| .field("createDate", .datetime) | |||
| .field("createUserId", .int) | |||
| .field("updateDate", .datetime) | |||
| .field("updateUserId", .int) | |||
| .create() | |||
| } | |||
| func revert(on database: Database) async throws { | |||
| try await database.schema("gate").delete() | |||
| } | |||
| } | |||
| } | |||
| import Foundation | |||
| @@ -19,6 +19,8 @@ final class mdlIncompleteReason: Model, Content { | |||
| @Field(key: "description") var description: String? | |||
| @Field(key: "isActive") var isactive: Bool? | |||
| @Children(for: \.$incompletereason) var workorders: [mdlWorkOrder] | |||
| @Timestamp(key: "createDate", on: .create) var createdate: Date? | |||
| @Field(key: "createUserId") var createuserid: Int? | |||
| @Timestamp(key: "updateDate", on: .update) var updatedate: Date? | |||
| @@ -1,8 +1,76 @@ | |||
| // | |||
| // File.swift | |||
| // | |||
| // mdlInputType.swift | |||
| // | |||
| // Created by Michiel Carman on 1/25/24. | |||
| // | |||
| // Created by Michiel Carman on 1/24/24. | |||
| // | |||
| import Fluent | |||
| import Vapor | |||
| import Foundation | |||
| import FluentKit | |||
| final class mdlInputType: Model, Content { | |||
| static let schema = "inputType" | |||
| @ID(custom: "id", generatedBy: .database) var id: Int? | |||
| @Field(key: "name") var name: String? | |||
| @Field(key: "description") var description: String? | |||
| @Timestamp(key: "createDate", on: .create) var createdate: Date? | |||
| @Field(key: "createUserId") var createuserid: Int? | |||
| @Timestamp(key: "updateDate", on: .update) var updatedate: Date? | |||
| @Field(key: "updateUserId") var updateuserid: Int? | |||
| init() { } | |||
| init(id: Int? = nil, name: String? = nil, description: String? = nil, createuserid: Int? = nil, updateuserid: Int? = nil) { | |||
| self.id = id | |||
| self.name = name | |||
| self.description = description | |||
| self.createuserid = createuserid | |||
| self.updateuserid = updateuserid | |||
| } | |||
| } | |||
| extension mdlInputType{ | |||
| struct Create: AsyncMigration { | |||
| func prepare(on database: Database) async throws { | |||
| try await database.schema("inputType") | |||
| .field("id", .int, .identifier(auto: true)) | |||
| .field("name", .string) | |||
| .field("description", .string) | |||
| .field("createDate", .datetime) | |||
| .field("createUserId", .int) | |||
| .field("updateDate", .datetime) | |||
| .field("updateUserId", .int) | |||
| .create() | |||
| } | |||
| func revert(on database: Database) async throws { | |||
| try await database.schema("inputType").delete() | |||
| } | |||
| } | |||
| struct Seed: Migration{ | |||
| func prepare(on database: Database) -> EventLoopFuture<Void> { | |||
| let mdls: [mdlInputType] = [ | |||
| .init(id: 1, name: "None", description: nil, createuserid: -1, updateuserid: -1), | |||
| .init(id: 2, name: "Radio Button List", description: nil, createuserid: -1, updateuserid: -1), | |||
| .init(id: 3, name: "Dropdown List", description: nil, createuserid: -1, updateuserid: -1), | |||
| .init(id: 4, name: "Freeform", description: nil, createuserid: -1, updateuserid: -1) | |||
| ] | |||
| return mdls.map { mdl in | |||
| mdl.save(on: database) | |||
| } | |||
| .flatten(on: database.eventLoop) | |||
| } | |||
| func revert(on database: Database) -> EventLoopFuture<Void> { | |||
| mdlInputType.query(on: database).delete() | |||
| } | |||
| } | |||
| } | |||
| @@ -1,8 +1,78 @@ | |||
| // | |||
| // File.swift | |||
| // | |||
| // mdlJobSite.swift | |||
| // | |||
| // Created by Michiel Carman on 1/25/24. | |||
| // | |||
| // Created by Michiel Carman on 1/24/24. | |||
| // | |||
| import Fluent | |||
| import Vapor | |||
| import Foundation | |||
| import FluentKit | |||
| final class mdlJobSite: Model, Content { | |||
| static let schema = "jobSite" | |||
| @ID(custom: "id", generatedBy: .database) var id: Int? | |||
| @Field(key: "name") var name: String? | |||
| @Field(key: "description") var description: String? | |||
| @Field(key: "sortOrder") var sortorder: Int? | |||
| @Timestamp(key: "createDate", on: .create) var createdate: Date? | |||
| @Field(key: "createUserId") var createuserid: Int? | |||
| @Timestamp(key: "updateDate", on: .update) var updatedate: Date? | |||
| @Field(key: "updateUserId") var updateuserid: Int? | |||
| init() { } | |||
| init(id: Int? = nil, name: String? = nil, description: String? = nil, sortorder: Int? = nil, createuserid: Int? = nil, updateuserid: Int? = nil) { | |||
| self.id = id | |||
| self.name = name | |||
| self.description = description | |||
| self.sortorder = sortorder | |||
| self.createuserid = createuserid | |||
| self.updateuserid = updateuserid | |||
| } | |||
| } | |||
| extension mdlJobSite{ | |||
| struct Create: AsyncMigration { | |||
| func prepare(on database: Database) async throws { | |||
| try await database.schema("jobSite") | |||
| .field("id", .int, .identifier(auto: true)) | |||
| .field("name", .string) | |||
| .field("description", .string) | |||
| .field("sortOrder", .int) | |||
| .field("createDate", .datetime) | |||
| .field("createUserId", .int) | |||
| .field("updateDate", .datetime) | |||
| .field("updateUserId", .int) | |||
| .create() | |||
| } | |||
| func revert(on database: Database) async throws { | |||
| try await database.schema("jobSite").delete() | |||
| } | |||
| } | |||
| struct Seed: Migration{ | |||
| func prepare(on database: Database) -> EventLoopFuture<Void> { | |||
| let mdls: [mdlJobSite] = [ | |||
| .init(id: 1, name: "HEAVY", description: "Heavy usage, difficult terrain/material", sortorder: 1, createuserid: -1, updateuserid: -1), | |||
| .init(id: 2, name: "MEDIUM", description: "Average usage, terrain/material", sortorder: 2, createuserid: -1, updateuserid: -1), | |||
| .init(id: 3, name: "LIGHT", description: "Light usage, easy terrain/material", sortorder: 3, createuserid: -1, updateuserid: -1) | |||
| ] | |||
| return mdls.map { mdl in | |||
| mdl.save(on: database) | |||
| } | |||
| .flatten(on: database.eventLoop) | |||
| } | |||
| func revert(on database: Database) -> EventLoopFuture<Void> { | |||
| mdlJobSite.query(on: database).delete() | |||
| } | |||
| } | |||
| } | |||
| @@ -24,9 +24,12 @@ final class mdlLocation: Model, Content { | |||
| @Field(key: "fileLocation") var filelocation: String? | |||
| @Field(key: "isAcrtive") var isactive: Bool? | |||
| @Parent(key: "stateId") var state: mdlState | |||
| @OptionalParent(key: "unitId") var unit: mdlUnit? | |||
| @OptionalParent(key: "labSettingId") var labsetting: mdlLabSetting? | |||
| @Children(for: \.$location) var users: [mdlUser] | |||
| @Timestamp(key: "createDate", on: .create) var createdate: Date? | |||
| @Field(key: "createUserId") var createuserid: Int? | |||
| @@ -1,8 +1,81 @@ | |||
| // | |||
| // File.swift | |||
| // | |||
| // mdlPriority.swift | |||
| // | |||
| // Created by Michiel Carman on 1/25/24. | |||
| // | |||
| // Created by Michiel Carman on 1/24/24. | |||
| // | |||
| import Fluent | |||
| import Vapor | |||
| import Foundation | |||
| import FluentKit | |||
| final class mdlPriority: Model, Content { | |||
| static let schema = "priority" | |||
| @ID(custom: "id", generatedBy: .database) var id: Int? | |||
| @Field(key: "name") var name: String? | |||
| @Field(key: "description") var description: String? | |||
| @Children(for: \.$priority) var workorders: [mdlWorkOrder] | |||
| @Timestamp(key: "createDate", on: .create) var createdate: Date? | |||
| @Field(key: "createUserId") var createuserid: Int? | |||
| @Timestamp(key: "updateDate", on: .update) var updatedate: Date? | |||
| @Field(key: "updateUserId") var updateuserid: Int? | |||
| init() { } | |||
| init(id: Int? = nil, name: String? = nil, description: String? = nil, createuserid: Int? = nil, updateuserid: Int? = nil) { | |||
| self.id = id | |||
| self.name = name | |||
| self.description = description | |||
| self.createuserid = createuserid | |||
| self.updateuserid = updateuserid | |||
| } | |||
| } | |||
| extension mdlPriority{ | |||
| struct Create: AsyncMigration { | |||
| func prepare(on database: Database) async throws { | |||
| try await database.schema("priority") | |||
| .field("id", .int, .identifier(auto: true)) | |||
| .field("name", .string) | |||
| .field("description", .string) | |||
| .field("createDate", .datetime) | |||
| .field("createUserId", .int) | |||
| .field("updateDate", .datetime) | |||
| .field("updateUserId", .int) | |||
| .create() | |||
| } | |||
| func revert(on database: Database) async throws { | |||
| try await database.schema("priority").delete() | |||
| } | |||
| } | |||
| struct Seed: Migration{ | |||
| func prepare(on database: Database) -> EventLoopFuture<Void> { | |||
| let mdls: [mdlPriority] = [ | |||
| .init(id: 1, name: "Urgent", description: nil, createuserid: -1, updateuserid: -1), | |||
| .init(id: 2, name: "High", description: nil, createuserid: -1, updateuserid: -1), | |||
| .init(id: 3, name: "Medium", description: nil, createuserid: -1, updateuserid: -1), | |||
| .init(id: 4, name: "Low", description: nil, createuserid: -1, updateuserid: -1) | |||
| ] | |||
| return mdls.map { mdl in | |||
| mdl.save(on: database) | |||
| } | |||
| .flatten(on: database.eventLoop) | |||
| } | |||
| func revert(on database: Database) -> EventLoopFuture<Void> { | |||
| mdlPriority.query(on: database).delete() | |||
| } | |||
| } | |||
| } | |||
| @@ -1,8 +1,65 @@ | |||
| // | |||
| // File.swift | |||
| // | |||
| // mdlReason.swift | |||
| // | |||
| // Created by Michiel Carman on 1/26/24. | |||
| // | |||
| // Created by Michiel Carman on 1/24/24. | |||
| // | |||
| import Fluent | |||
| import Vapor | |||
| import Foundation | |||
| import FluentKit | |||
| final class mdlReason: Model, Content { | |||
| static let schema = "reason" | |||
| @ID(custom: "id", generatedBy: .database) var id: Int? | |||
| @Field(key: "name") var name: String? | |||
| @Field(key: "description") var description: String? | |||
| @Field(key: "isActive") var isactive: Bool? | |||
| @Children(for: \.$reason) var workorders: [mdlWorkOrder] | |||
| @Timestamp(key: "createDate", on: .create) var createdate: Date? | |||
| @Field(key: "createUserId") var createuserid: Int? | |||
| @Timestamp(key: "updateDate", on: .update) var updatedate: Date? | |||
| @Field(key: "updateUserId") var updateuserid: Int? | |||
| init() { } | |||
| init(id: Int? = nil, name: String? = nil, description: String? = nil, isactive: Bool? = true, createuserid: Int? = nil, updateuserid: Int? = nil) { | |||
| self.id = id | |||
| self.name = name | |||
| self.description = description | |||
| self.isactive = isactive | |||
| self.createuserid = createuserid | |||
| self.updateuserid = updateuserid | |||
| } | |||
| } | |||
| extension mdlReason{ | |||
| struct Create: AsyncMigration { | |||
| func prepare(on database: Database) async throws { | |||
| try await database.schema("reason") | |||
| .field("id", .int, .identifier(auto: true)) | |||
| .field("name", .string) | |||
| .field("description", .string) | |||
| .field("isActive", .bool) | |||
| .field("createDate", .datetime) | |||
| .field("createUserId", .int) | |||
| .field("updateDate", .datetime) | |||
| .field("updateUserId", .int) | |||
| .create() | |||
| } | |||
| func revert(on database: Database) async throws { | |||
| try await database.schema("reason").delete() | |||
| } | |||
| } | |||
| } | |||
| @@ -1,8 +1,85 @@ | |||
| // | |||
| // File.swift | |||
| // | |||
| // mdlRepairType.swift | |||
| // | |||
| // Created by Michiel Carman on 1/25/24. | |||
| // | |||
| // Created by Michiel Carman on 1/24/24. | |||
| // | |||
| import Fluent | |||
| import Vapor | |||
| import Foundation | |||
| import FluentKit | |||
| final class mdlRepairType: Model, Content { | |||
| static let schema = "repairType" | |||
| @ID(custom: "id", generatedBy: .database) var id: Int? | |||
| @Field(key: "name") var name: String? | |||
| @Field(key: "description") var description: String? | |||
| @Field(key: "color") var color: String? | |||
| @Children(for: \.$repairtype) var units: [mdlResponseType] | |||
| @Timestamp(key: "createDate", on: .create) var createdate: Date? | |||
| @Field(key: "createUserId") var createuserid: Int? | |||
| @Timestamp(key: "updateDate", on: .update) var updatedate: Date? | |||
| @Field(key: "updateUserId") var updateuserid: Int? | |||
| init() { } | |||
| init(id: Int? = nil, name: String? = nil, description: String? = nil, color: String? = nil, createuserid: Int? = nil, updateuserid: Int? = nil) { | |||
| self.id = id | |||
| self.name = name | |||
| self.description = description | |||
| self.color = color | |||
| self.createuserid = createuserid | |||
| self.updateuserid = updateuserid | |||
| } | |||
| } | |||
| extension mdlRepairType{ | |||
| struct Create: AsyncMigration { | |||
| func prepare(on database: Database) async throws { | |||
| try await database.schema("repairType") | |||
| .field("id", .int, .identifier(auto: true)) | |||
| .field("name", .string) | |||
| .field("description", .string) | |||
| .field("color", .string) | |||
| .field("createDate", .datetime) | |||
| .field("createUserId", .int) | |||
| .field("updateDate", .datetime) | |||
| .field("updateUserId", .int) | |||
| .create() | |||
| } | |||
| func revert(on database: Database) async throws { | |||
| try await database.schema("repairType").delete() | |||
| } | |||
| } | |||
| struct Seed: Migration{ | |||
| func prepare(on database: Database) -> EventLoopFuture<Void> { | |||
| let mdls: [mdlRepairType] = [ | |||
| .init(id: 1, name: "None", description: nil, color: "#000000", createuserid: -1, updateuserid: -1), | |||
| .init(id: 2, name: "Recommended", description: nil, color: "#FFCC00", createuserid: -1, updateuserid: -1), | |||
| .init(id: 3, name: "Urgent", description: nil, color: "#FF0000", createuserid: -1, updateuserid: -1), | |||
| .init(id: 4, name: "NA", description: nil, color: "#000000", createuserid: -1, updateuserid: -1) | |||
| ] | |||
| return mdls.map { mdl in | |||
| mdl.save(on: database) | |||
| } | |||
| .flatten(on: database.eventLoop) | |||
| } | |||
| func revert(on database: Database) -> EventLoopFuture<Void> { | |||
| mdlRepairType.query(on: database).delete() | |||
| } | |||
| } | |||
| } | |||
| @@ -1,8 +1,63 @@ | |||
| // | |||
| // File.swift | |||
| // | |||
| // mdlSMSCCode.swift | |||
| // | |||
| // Created by Michiel Carman on 1/31/24. | |||
| // | |||
| // Created by Michiel Carman on 1/24/24. | |||
| // | |||
| import Fluent | |||
| import Vapor | |||
| import Foundation | |||
| import FluentKit | |||
| final class mdlSMSCCode: Model, Content { | |||
| static let schema = "smscCode" | |||
| @ID(custom: "id", generatedBy: .database) var id: Int? | |||
| @Field(key: "name") var name: String? | |||
| @Field(key: "description") var description: String? | |||
| @Field(key: "isActive") var isactive: Bool? | |||
| @Timestamp(key: "createDate", on: .create) var createdate: Date? | |||
| @Field(key: "createUserId") var createuserid: Int? | |||
| @Timestamp(key: "updateDate", on: .update) var updatedate: Date? | |||
| @Field(key: "updateUserId") var updateuserid: Int? | |||
| init() { } | |||
| init(id: Int? = nil, name: String? = nil, description: String? = nil, isactive: Bool? = true, createuserid: Int? = nil, updateuserid: Int? = nil) { | |||
| self.id = id | |||
| self.name = name | |||
| self.description = description | |||
| self.isactive = isactive | |||
| self.createuserid = createuserid | |||
| self.updateuserid = updateuserid | |||
| } | |||
| } | |||
| extension mdlSMSCCode{ | |||
| struct Create: AsyncMigration { | |||
| func prepare(on database: Database) async throws { | |||
| try await database.schema("smscCode") | |||
| .field("id", .int, .identifier(auto: true)) | |||
| .field("name", .string) | |||
| .field("description", .string) | |||
| .field("isActive", .bool) | |||
| .field("createDate", .datetime) | |||
| .field("createUserId", .int) | |||
| .field("updateDate", .datetime) | |||
| .field("updateUserId", .int) | |||
| .create() | |||
| } | |||
| func revert(on database: Database) async throws { | |||
| try await database.schema("smscCode").delete() | |||
| } | |||
| } | |||
| } | |||
| @@ -1,8 +1,63 @@ | |||
| // | |||
| // File.swift | |||
| // | |||
| // mdlSignatureType.swift | |||
| // | |||
| // Created by Michiel Carman on 1/26/24. | |||
| // | |||
| // Created by Michiel Carman on 1/24/24. | |||
| // | |||
| import Fluent | |||
| import Vapor | |||
| import Foundation | |||
| import FluentKit | |||
| final class mdlSignatureType: Model, Content { | |||
| static let schema = "signatureType" | |||
| @ID(custom: "id", generatedBy: .database) var id: Int? | |||
| @Field(key: "name") var name: String? | |||
| @Field(key: "description") var description: String? | |||
| @Field(key: "isActive") var isactive: Bool? | |||
| @Timestamp(key: "createDate", on: .create) var createdate: Date? | |||
| @Field(key: "createUserId") var createuserid: Int? | |||
| @Timestamp(key: "updateDate", on: .update) var updatedate: Date? | |||
| @Field(key: "updateUserId") var updateuserid: Int? | |||
| init() { } | |||
| init(id: Int? = nil, name: String? = nil, description: String? = nil, isactive: Bool? = true, createuserid: Int? = nil, updateuserid: Int? = nil) { | |||
| self.id = id | |||
| self.name = name | |||
| self.description = description | |||
| self.isactive = isactive | |||
| self.createuserid = createuserid | |||
| self.updateuserid = updateuserid | |||
| } | |||
| } | |||
| extension mdlSignatureType{ | |||
| struct Create: AsyncMigration { | |||
| func prepare(on database: Database) async throws { | |||
| try await database.schema("signatureType") | |||
| .field("id", .int, .identifier(auto: true)) | |||
| .field("name", .string) | |||
| .field("description", .string) | |||
| .field("isActive", .bool) | |||
| .field("createDate", .datetime) | |||
| .field("createUserId", .int) | |||
| .field("updateDate", .datetime) | |||
| .field("updateUserId", .int) | |||
| .create() | |||
| } | |||
| func revert(on database: Database) async throws { | |||
| try await database.schema("signatureType").delete() | |||
| } | |||
| } | |||
| } | |||
| @@ -1,8 +1,133 @@ | |||
| // | |||
| // File.swift | |||
| // | |||
| // mdlState.swift | |||
| // | |||
| // Created by Michiel Carman on 1/25/24. | |||
| // | |||
| // Created by Michiel Carman on 1/24/24. | |||
| // | |||
| import Fluent | |||
| import Vapor | |||
| import Foundation | |||
| import FluentKit | |||
| final class mdlState: Model, Content { | |||
| static let schema = "state" | |||
| @ID(custom: "id", generatedBy: .database) var id: Int? | |||
| @Field(key: "name") var name: String? | |||
| @Field(key: "abreviation") var abreviation: String? | |||
| @Children(for: \.$state) var locations: [mdlLocation] | |||
| @Timestamp(key: "createDate", on: .create) var createdate: Date? | |||
| @Field(key: "createUserId") var createuserid: Int? | |||
| @Timestamp(key: "updateDate", on: .update) var updatedate: Date? | |||
| @Field(key: "updateUserId") var updateuserid: Int? | |||
| init() { } | |||
| init(id: Int? = nil, name: String? = nil, abreviation: String? = nil, createuserid: Int? = nil, updateuserid: Int? = nil) { | |||
| self.id = id | |||
| self.name = name | |||
| self.abreviation = abreviation | |||
| self.createuserid = createuserid | |||
| self.updateuserid = updateuserid | |||
| } | |||
| } | |||
| extension mdlState{ | |||
| struct Create: AsyncMigration { | |||
| func prepare(on database: Database) async throws { | |||
| try await database.schema("state") | |||
| .field("id", .int, .identifier(auto: true)) | |||
| .field("name", .string) | |||
| .field("abreviation", .string) | |||
| .field("createDate", .datetime) | |||
| .field("createUserId", .int) | |||
| .field("updateDate", .datetime) | |||
| .field("updateUserId", .int) | |||
| .create() | |||
| } | |||
| func revert(on database: Database) async throws { | |||
| try await database.schema("state").delete() | |||
| } | |||
| } | |||
| struct Seed: Migration{ | |||
| func prepare(on database: Database) -> EventLoopFuture<Void> { | |||
| let mdls: [mdlState] = [ | |||
| .init(id: 1, name: "Alabama", abreviation: "AL", createuserid: -1, updateuserid: -1), | |||
| .init(id: 2, name: "Alaska", abreviation: "AK", createuserid: -1, updateuserid: -1), | |||
| .init(id: 3, name: "Arizona", abreviation: "AZ", createuserid: -1, updateuserid: -1), | |||
| .init(id: 4, name: "Arkansas", abreviation: "AR", createuserid: -1, updateuserid: -1), | |||
| .init(id: 5, name: "California", abreviation: "CA", createuserid: -1, updateuserid: -1), | |||
| .init(id: 6, name: "Colorado", abreviation: "CO", createuserid: -1, updateuserid: -1), | |||
| .init(id: 7, name: "Connecticut", abreviation: "CT", createuserid: -1, updateuserid: -1), | |||
| .init(id: 8, name: "Deleware", abreviation: "DE", createuserid: -1, updateuserid: -1), | |||
| .init(id: 9, name: "Florida", abreviation: "FL", createuserid: -1, updateuserid: -1), | |||
| .init(id: 10, name: "Georgia", abreviation: "GA", createuserid: -1, updateuserid: -1), | |||
| .init(id: 11, name: "Hawaii", abreviation: "HI", createuserid: -1, updateuserid: -1), | |||
| .init(id: 12, name: "Idaho", abreviation: "ID", createuserid: -1, updateuserid: -1), | |||
| .init(id: 13, name: "Illinois", abreviation: "IL", createuserid: -1, updateuserid: -1), | |||
| .init(id: 14, name: "Indiana", abreviation: "IN", createuserid: -1, updateuserid: -1), | |||
| .init(id: 15, name: "Iowa", abreviation: "IA", createuserid: -1, updateuserid: -1), | |||
| .init(id: 16, name: "Kansas", abreviation: "KS", createuserid: -1, updateuserid: -1), | |||
| .init(id: 17, name: "Kentucky", abreviation: "KY", createuserid: -1, updateuserid: -1), | |||
| .init(id: 18, name: "Louisiana", abreviation: "LA", createuserid: -1, updateuserid: -1), | |||
| .init(id: 19, name: "Maine", abreviation: "ME", createuserid: -1, updateuserid: -1), | |||
| .init(id: 20, name: "Maryland", abreviation: "MD", createuserid: -1, updateuserid: -1), | |||
| .init(id: 21, name: "Massachusetts", abreviation: "MA", createuserid: -1, updateuserid: -1), | |||
| .init(id: 22, name: "Michigan", abreviation: "MI", createuserid: -1, updateuserid: -1), | |||
| .init(id: 23, name: "Minnesota", abreviation: "MN", createuserid: -1, updateuserid: -1), | |||
| .init(id: 24, name: "Mississippi", abreviation: "MS", createuserid: -1, updateuserid: -1), | |||
| .init(id: 25, name: "Missouri", abreviation: "MO", createuserid: -1, updateuserid: -1), | |||
| .init(id: 26, name: "Montana", abreviation: "MT", createuserid: -1, updateuserid: -1), | |||
| .init(id: 27, name: "Nebraska", abreviation: "NE", createuserid: -1, updateuserid: -1), | |||
| .init(id: 28, name: "Nevada", abreviation: "NV", createuserid: -1, updateuserid: -1), | |||
| .init(id: 29, name: "New Hampshire", abreviation: "NH", createuserid: -1, updateuserid: -1), | |||
| .init(id: 30, name: "New Jersey", abreviation: "NJ", createuserid: -1, updateuserid: -1), | |||
| .init(id: 31, name: "New Mexico", abreviation: "NM", createuserid: -1, updateuserid: -1), | |||
| .init(id: 32, name: "New York", abreviation: "NY", createuserid: -1, updateuserid: -1), | |||
| .init(id: 33, name: "North Carolina", abreviation: "NC", createuserid: -1, updateuserid: -1), | |||
| .init(id: 34, name: "North Dakota", abreviation: "ND", createuserid: -1, updateuserid: -1), | |||
| .init(id: 35, name: "Ohio", abreviation: "OH", createuserid: -1, updateuserid: -1), | |||
| .init(id: 36, name: "Oklahoma", abreviation: "OK", createuserid: -1, updateuserid: -1), | |||
| .init(id: 37, name: "Oregon", abreviation: "OR", createuserid: -1, updateuserid: -1), | |||
| .init(id: 38, name: "Pennsylvania", abreviation: "PA", createuserid: -1, updateuserid: -1), | |||
| .init(id: 39, name: "Rhode Island", abreviation: "RI", createuserid: -1, updateuserid: -1), | |||
| .init(id: 40, name: "South Carolina", abreviation: "SC", createuserid: -1, updateuserid: -1), | |||
| .init(id: 41, name: "South Dakota", abreviation: "SD", createuserid: -1, updateuserid: -1), | |||
| .init(id: 42, name: "Tennessee", abreviation: "TN", createuserid: -1, updateuserid: -1), | |||
| .init(id: 43, name: "Texas", abreviation: "TX", createuserid: -1, updateuserid: -1), | |||
| .init(id: 44, name: "Utah", abreviation: "UT", createuserid: -1, updateuserid: -1), | |||
| .init(id: 45, name: "Vermont", abreviation: "VT", createuserid: -1, updateuserid: -1), | |||
| .init(id: 46, name: "Virginia", abreviation: "VA", createuserid: -1, updateuserid: -1), | |||
| .init(id: 47, name: "Washington", abreviation: "WA", createuserid: -1, updateuserid: -1), | |||
| .init(id: 48, name: "West Virginia", abreviation: "WV", createuserid: -1, updateuserid: -1), | |||
| .init(id: 49, name: "Wisconsin", abreviation: "WI", createuserid: -1, updateuserid: -1), | |||
| .init(id: 50, name: "Wyoming", abreviation: "WY", createuserid: -1, updateuserid: -1) | |||
| ] | |||
| return mdls.map { mdl in | |||
| mdl.save(on: database) | |||
| } | |||
| .flatten(on: database.eventLoop) | |||
| } | |||
| func revert(on database: Database) -> EventLoopFuture<Void> { | |||
| mdlState.query(on: database).delete() | |||
| } | |||
| } | |||
| } | |||
| @@ -1,8 +1,86 @@ | |||
| // | |||
| // File.swift | |||
| // | |||
| // mdlStatus.swift | |||
| // | |||
| // Created by Michiel Carman on 1/25/24. | |||
| // | |||
| // Created by Michiel Carman on 1/24/24. | |||
| // | |||
| import Fluent | |||
| import Vapor | |||
| import Foundation | |||
| import FluentKit | |||
| final class mdlStatus: Model, Content { | |||
| static let schema = "status" | |||
| @ID(custom: "id", generatedBy: .database) var id: Int? | |||
| @Field(key: "name") var name: String? | |||
| @Field(key: "description") var description: String? | |||
| @Children(for: \.$status) var workorders: [mdlWorkOrder] | |||
| @Timestamp(key: "createDate", on: .create) var createdate: Date? | |||
| @Field(key: "createUserId") var createuserid: Int? | |||
| @Timestamp(key: "updateDate", on: .update) var updatedate: Date? | |||
| @Field(key: "updateUserId") var updateuserid: Int? | |||
| init() { } | |||
| init(id: Int? = nil, name: String? = nil, description: String? = nil, createuserid: Int? = nil, updateuserid: Int? = nil) { | |||
| self.id = id | |||
| self.name = name | |||
| self.description = description | |||
| self.createuserid = createuserid | |||
| self.updateuserid = updateuserid | |||
| } | |||
| } | |||
| extension mdlStatus{ | |||
| struct Create: AsyncMigration { | |||
| func prepare(on database: Database) async throws { | |||
| try await database.schema("status") | |||
| .field("id", .int, .identifier(auto: true)) | |||
| .field("name", .string) | |||
| .field("description", .string) | |||
| .field("createDate", .datetime) | |||
| .field("createUserId", .int) | |||
| .field("updateDate", .datetime) | |||
| .field("updateUserId", .int) | |||
| .create() | |||
| } | |||
| func revert(on database: Database) async throws { | |||
| try await database.schema("status").delete() | |||
| } | |||
| } | |||
| struct Seed: Migration{ | |||
| func prepare(on database: Database) -> EventLoopFuture<Void> { | |||
| let mdls: [mdlStatus] = [ | |||
| .init(id: 1, name: "Open", description: nil, createuserid: -1, updateuserid: -1), | |||
| .init(id: 2, name: "Synced", description: nil, createuserid: -1, updateuserid: -1), | |||
| .init(id: 3, name: "Completed", description: nil, createuserid: -1, updateuserid: -1), | |||
| .init(id: 4, name: "Approved", description: nil, createuserid: -1, updateuserid: -1), | |||
| .init(id: 5, name: "Incomplete", description: nil, createuserid: -1, updateuserid: -1), | |||
| .init(id: 6, name: "Reassigned", description: nil, createuserid: -1, updateuserid: -1), | |||
| .init(id: 7, name: "Pending", description: nil, createuserid: -1, updateuserid: -1), | |||
| .init(id: 8, name: "Deleted", description: nil, createuserid: -1, updateuserid: -1) | |||
| ] | |||
| return mdls.map { mdl in | |||
| mdl.save(on: database) | |||
| } | |||
| .flatten(on: database.eventLoop) | |||
| } | |||
| func revert(on database: Database) -> EventLoopFuture<Void> { | |||
| mdlStatus.query(on: database).delete() | |||
| } | |||
| } | |||
| } | |||
| @@ -1,8 +1,80 @@ | |||
| // | |||
| // File.swift | |||
| // | |||
| // mdlValueType.swift | |||
| // | |||
| // Created by Michiel Carman on 1/25/24. | |||
| // | |||
| // Created by Michiel Carman on 1/24/24. | |||
| // | |||
| import Fluent | |||
| import Vapor | |||
| import Foundation | |||
| import FluentKit | |||
| final class mdlValueType: Model, Content { | |||
| static let schema = "valueType" | |||
| @ID(custom: "id", generatedBy: .database) var id: Int? | |||
| @Field(key: "name") var name: String? | |||
| @Field(key: "description") var description: String? | |||
| @Timestamp(key: "createDate", on: .create) var createdate: Date? | |||
| @Field(key: "createUserId") var createuserid: Int? | |||
| @Timestamp(key: "updateDate", on: .update) var updatedate: Date? | |||
| @Field(key: "updateUserId") var updateuserid: Int? | |||
| init() { } | |||
| init(id: Int? = nil, name: String? = nil, description: String? = nil, createuserid: Int? = nil, updateuserid: Int? = nil) { | |||
| self.id = id | |||
| self.name = name | |||
| self.description = description | |||
| self.createuserid = createuserid | |||
| self.updateuserid = updateuserid | |||
| } | |||
| } | |||
| extension mdlValueType{ | |||
| struct Create: AsyncMigration { | |||
| func prepare(on database: Database) async throws { | |||
| try await database.schema("valueType") | |||
| .field("id", .int, .identifier(auto: true)) | |||
| .field("name", .string) | |||
| .field("description", .string) | |||
| .field("createDate", .datetime) | |||
| .field("createUserId", .int) | |||
| .field("updateDate", .datetime) | |||
| .field("updateUserId", .int) | |||
| .create() | |||
| } | |||
| func revert(on database: Database) async throws { | |||
| try await database.schema("valueType").delete() | |||
| } | |||
| } | |||
| struct Seed: Migration{ | |||
| func prepare(on database: Database) -> EventLoopFuture<Void> { | |||
| let mdls: [mdlValueType] = [ | |||
| .init(id: 1, name: "Base", description: nil, createuserid: -1, updateuserid: -1), | |||
| .init(id: 2, name: "Max", description: nil, createuserid: -1, updateuserid: -1), | |||
| .init(id: 3, name: "Min", description: nil, createuserid: -1, updateuserid: -1), | |||
| .init(id: 4, name: "Variance", description: nil, createuserid: -1, updateuserid: -1) | |||
| ] | |||
| return mdls.map { mdl in | |||
| mdl.save(on: database) | |||
| } | |||
| .flatten(on: database.eventLoop) | |||
| } | |||
| func revert(on database: Database) -> EventLoopFuture<Void> { | |||
| mdlValueType.query(on: database).delete() | |||
| } | |||
| } | |||
| } | |||
| @@ -1,8 +1,63 @@ | |||
| // | |||
| // File.swift | |||
| // | |||
| // mdlViscosity.swift | |||
| // | |||
| // Created by Michiel Carman on 1/26/24. | |||
| // | |||
| // Created by Michiel Carman on 1/24/24. | |||
| // | |||
| import Fluent | |||
| import Vapor | |||
| import Foundation | |||
| import FluentKit | |||
| final class mdlViscosity: Model, Content { | |||
| static let schema = "viscosity" | |||
| @ID(custom: "id", generatedBy: .database) var id: Int? | |||
| @Field(key: "name") var name: String? | |||
| @Field(key: "description") var description: String? | |||
| @Field(key: "isActive") var isactive: Bool? | |||
| @Timestamp(key: "createDate", on: .create) var createdate: Date? | |||
| @Field(key: "createUserId") var createuserid: Int? | |||
| @Timestamp(key: "updateDate", on: .update) var updatedate: Date? | |||
| @Field(key: "updateUserId") var updateuserid: Int? | |||
| init() { } | |||
| init(id: Int? = nil, name: String? = nil, description: String? = nil, isactive: Bool? = true, createuserid: Int? = nil, updateuserid: Int? = nil) { | |||
| self.id = id | |||
| self.name = name | |||
| self.description = description | |||
| self.isactive = isactive | |||
| self.createuserid = createuserid | |||
| self.updateuserid = updateuserid | |||
| } | |||
| } | |||
| extension mdlViscosity{ | |||
| struct Create: AsyncMigration { | |||
| func prepare(on database: Database) async throws { | |||
| try await database.schema("viscosity") | |||
| .field("id", .int, .identifier(auto: true)) | |||
| .field("name", .string) | |||
| .field("description", .string) | |||
| .field("isActive", .bool) | |||
| .field("createDate", .datetime) | |||
| .field("createUserId", .int) | |||
| .field("updateDate", .datetime) | |||
| .field("updateUserId", .int) | |||
| .create() | |||
| } | |||
| func revert(on database: Database) async throws { | |||
| try await database.schema("viscosity").delete() | |||
| } | |||
| } | |||
| } | |||
| @@ -7,8 +7,10 @@ | |||
| import Fluent | |||
| import Vapor | |||
| import Foundation | |||
| import FluentKit | |||
| final class Compartment: Model, Content { | |||
| final class mdlCompartment: Model, Content { | |||
| static let schema = "compartment" | |||
| @ID(custom: "id", generatedBy: .database) var id: Int? | |||
| @@ -39,3 +41,25 @@ final class Compartment: Model, Content { | |||
| self.updateuserid = updateuserid | |||
| } | |||
| } | |||
| extension mdlCompartment{ | |||
| struct Create: AsyncMigration { | |||
| func prepare(on database: Database) async throws { | |||
| try await database.schema("compartment") | |||
| .field("id", .int, .identifier(auto: true)) | |||
| .field("name", .string) | |||
| .field("description", .string) | |||
| .field("code", .string) | |||
| .field("sortOrder", .int) | |||
| .field("isActive", .bool) | |||
| .field("createDate", .datetime) | |||
| .field("createUserId", .int) | |||
| .field("updateDate", .datetime) | |||
| .field("updateUserId", .int) | |||
| .create() | |||
| } | |||
| func revert(on database: Database) async throws { | |||
| try await database.schema("compartment").delete() | |||
| } | |||
| } | |||
| } | |||
| @@ -4,11 +4,12 @@ | |||
| // | |||
| // Created by Michiel Carman on 1/24/24. | |||
| // | |||
| import Fluent | |||
| import Vapor | |||
| import Foundation | |||
| import FluentKit | |||
| final class CompartmentLocation: Model, Content { | |||
| final class mdlCompartmentLocation: Model, Content { | |||
| static let schema = "compartmentLocation" | |||
| @ID(custom: "id", generatedBy: .database) var id: Int? | |||
| @@ -39,3 +40,27 @@ final class CompartmentLocation: Model, Content { | |||
| self.updateuserid = updateuserid | |||
| } | |||
| } | |||
| extension mdlCompartmentLocation{ | |||
| struct Create: AsyncMigration { | |||
| func prepare(on database: Database) async throws { | |||
| try await database.schema("compartmentLocation") | |||
| .field("id", .int, .identifier(auto: true)) | |||
| .field("name", .string) | |||
| .field("description", .string) | |||
| .field("code", .string) | |||
| .field("sortOrder", .int) | |||
| .field("isActive", .bool) | |||
| .field("createDate", .datetime) | |||
| .field("createUserId", .int) | |||
| .field("updateDate", .datetime) | |||
| .field("updateUserId", .int) | |||
| .create() | |||
| } | |||
| func revert(on database: Database) async throws { | |||
| try await database.schema("compartmentLocation").delete() | |||
| } | |||
| } | |||
| } | |||
| @@ -1,8 +1,80 @@ | |||
| // | |||
| // File.swift | |||
| // | |||
| // mdlContact.swift | |||
| // | |||
| // Created by Michiel Carman on 1/26/24. | |||
| // | |||
| // Created by Michiel Carman on 1/24/24. | |||
| // | |||
| import Fluent | |||
| import Vapor | |||
| import Foundation | |||
| import FluentKit | |||
| final class mdlContact: Model, Content { | |||
| static let schema = "contact" | |||
| @ID(custom: "id", generatedBy: .database) var id: Int? | |||
| @Field(key: "firstName") var firstname: String? | |||
| @Field(key: "lastName") var lastname: String? | |||
| @Field(key: "description") var description: String? | |||
| @Field(key: "isActive") var isactive: Bool? | |||
| @Parent(key: "customerId") var customer: mdlCustomer | |||
| @Timestamp(key: "createDate", on: .create) var createdate: Date? | |||
| @Field(key: "createUserId") var createuserid: Int? | |||
| @Timestamp(key: "updateDate", on: .update) var updatedate: Date? | |||
| @Field(key: "updateUserId") var updateuserid: Int? | |||
| init() { } | |||
| init(id: Int? = nil, firstname: String? = nil, lastname: String? = nil, isactive: Bool? = nil, createuserid: Int? = nil, updateuserid: Int? = nil, customerid: Int? = nil) { | |||
| self.id = id | |||
| self.firstname = firstname | |||
| self.lastname = lastname | |||
| self.isactive = isactive | |||
| self.$customer.$id.value = customerid! | |||
| self.createuserid = createuserid | |||
| self.updateuserid = updateuserid | |||
| } | |||
| } | |||
| extension mdlContact{ | |||
| struct Create: AsyncMigration { | |||
| func prepare(on database: Database) async throws { | |||
| try await database.schema("contact") | |||
| .field("id", .int, .identifier(auto: true)) | |||
| .field("firstName", .string) | |||
| .field("lastName", .string) | |||
| .field("isActive", .bool) | |||
| .field("createDate", .datetime) | |||
| .field("createUserId", .int) | |||
| .field("updateDate", .datetime) | |||
| .field("updateUserId", .int) | |||
| .create() | |||
| } | |||
| func revert(on database: Database) async throws { | |||
| try await database.schema("contact").delete() | |||
| } | |||
| } | |||
| struct makeParentCustomer: AsyncMigration{ | |||
| func prepare(on database: Database) async throws { | |||
| try await database.schema("contact") | |||
| .field("customerId", .int, .references("customer", "id")) | |||
| .update() | |||
| } | |||
| func revert(on database: Database) async throws { | |||
| try await database.schema("contact") | |||
| .deleteField("customerId" ) | |||
| .update() | |||
| } | |||
| } | |||
| } | |||
| @@ -1,8 +1,66 @@ | |||
| // | |||
| // File.swift | |||
| // | |||
| // mdlContactInfo.swift | |||
| // | |||
| // Created by Michiel Carman on 1/26/24. | |||
| // | |||
| // Created by Michiel Carman on 1/24/24. | |||
| // | |||
| import Fluent | |||
| import Vapor | |||
| import Foundation | |||
| import FluentKit | |||
| final class mdlContactInfo: Model, Content { | |||
| static let schema = "contactInfo" | |||
| @ID(custom: "id", generatedBy: .database) var id: Int? | |||
| @Field(key: "value") var value: String? | |||
| @Field(key: "isActive") var isactive: Bool? | |||
| @Parent(key: "contactTypeId") var contacttype: mdlContactType | |||
| @Timestamp(key: "createDate", on: .create) var createdate: Date? | |||
| @Field(key: "createUserId") var createuserid: Int? | |||
| @Timestamp(key: "updateDate", on: .update) var updatedate: Date? | |||
| @Field(key: "updateUserId") var updateuserid: Int? | |||
| init() { } | |||
| init(id: Int? = nil, value: String? = nil, isactive: Bool? = nil, createuserid: Int? = nil, updateuserid: Int? = nil, contacttypeid: Int? = nil) { | |||
| self.id = id | |||
| self.value = value | |||
| self.isactive = isactive | |||
| self.$contacttype.$id.value = contacttypeid! | |||
| self.createuserid = createuserid | |||
| self.updateuserid = updateuserid | |||
| } | |||
| } | |||
| extension mdlContactInfo{ | |||
| struct Create: AsyncMigration { | |||
| func prepare(on database: Database) async throws { | |||
| try await database.schema("contactInfo") | |||
| .field("id", .int, .identifier(auto: true)) | |||
| .field("value", .string) | |||
| .field("isActive", .bool) | |||
| .field("contactTypeId", .int, .references("contactType", "id")) | |||
| .field("createDate", .datetime) | |||
| .field("createUserId", .int) | |||
| .field("updateDate", .datetime) | |||
| .field("updateUserId", .int) | |||
| .create() | |||
| } | |||
| func revert(on database: Database) async throws { | |||
| try await database.schema("contactInfo").delete() | |||
| } | |||
| } | |||
| } | |||
| @@ -1,8 +1,65 @@ | |||
| // | |||
| // File.swift | |||
| // | |||
| // mdlCustomer.swift | |||
| // | |||
| // Created by Michiel Carman on 1/26/24. | |||
| // | |||
| // Created by Michiel Carman on 1/24/24. | |||
| // | |||
| import Fluent | |||
| import Vapor | |||
| import Foundation | |||
| import FluentKit | |||
| final class mdlCustomer: Model, Content { | |||
| static let schema = "customer" | |||
| @ID(custom: "id", generatedBy: .database) var id: Int? | |||
| @Field(key: "name") var name: String? | |||
| @Field(key: "number") var number: String? | |||
| @Field(key: "isActive") var isactive: Bool? | |||
| @Children(for: \.$customer) var contacts: [mdlContact] | |||
| @Children(for: \.$customer) var workorders: [mdlWorkOrder] | |||
| @Timestamp(key: "createDate", on: .create) var createdate: Date? | |||
| @Field(key: "createUserId") var createuserid: Int? | |||
| @Timestamp(key: "updateDate", on: .update) var updatedate: Date? | |||
| @Field(key: "updateUserId") var updateuserid: Int? | |||
| init() { } | |||
| init(id: Int? = nil, name: String? = nil, number: String? = nil, isactive: Bool? = nil, createuserid: Int? = nil, updateuserid: Int? = nil) { | |||
| self.id = id | |||
| self.number = number | |||
| self.isactive = isactive | |||
| self.createuserid = createuserid | |||
| self.updateuserid = updateuserid | |||
| } | |||
| } | |||
| extension mdlCustomer{ | |||
| struct Create: AsyncMigration { | |||
| func prepare(on database: Database) async throws { | |||
| try await database.schema("customer") | |||
| .field("id", .int, .identifier(auto: true)) | |||
| .field("name", .string) | |||
| .field("number", .string) | |||
| .field("isActive", .bool) | |||
| .field("createDate", .datetime) | |||
| .field("createUserId", .int) | |||
| .field("updateDate", .datetime) | |||
| .field("updateUserId", .int) | |||
| .create() | |||
| } | |||
| func revert(on database: Database) async throws { | |||
| try await database.schema("customer").delete() | |||
| } | |||
| } | |||
| } | |||
| @@ -1,8 +1,87 @@ | |||
| // | |||
| // File.swift | |||
| // | |||
| // mdlEquipment.swift | |||
| // | |||
| // Created by Michiel Carman on 1/31/24. | |||
| // | |||
| // Created by Michiel Carman on 1/24/24. | |||
| // | |||
| import Fluent | |||
| import Vapor | |||
| import Foundation | |||
| import FluentKit | |||
| final class mdlEquipment: Model, Content { | |||
| static let schema = "equipment" | |||
| @ID(custom: "id", generatedBy: .database) var id: Int? | |||
| @Field(key: "number") var number: String? | |||
| @Field(key: "isActive") var isactive: Bool? | |||
| @OptionalParent(key: "customerId") var customer: mdlCustomer? | |||
| @Parent(key: "modelId") var model: mdlModel | |||
| @Parent(key: "equipmentTypeId") var equipmenttype: mdlEquipmentType | |||
| @OptionalParent(key: "parentId") var parent: mdlEquipment? | |||
| @Children(for: \.$equipment) var properties: [mdlObjProperty] | |||
| @Timestamp(key: "createDate", on: .create) var createdate: Date? | |||
| @Field(key: "createUserId") var createuserid: Int? | |||
| @Timestamp(key: "updateDate", on: .update) var updatedate: Date? | |||
| @Field(key: "updateUserId") var updateuserid: Int? | |||
| init() { } | |||
| init(id: Int? = nil, number: String? = nil, isactive: Bool? = nil, createuserid: Int? = nil, updateuserid: Int? = nil, customerid: Int? = nil, modelid: Int? = nil, equipmenttypeid: Int? = nil, parentid: Int? = nil) { | |||
| self.id = id | |||
| self.number = number | |||
| self.isactive = isactive | |||
| self.$customer.$id.value = customerid! | |||
| self.$model.$id.value = modelid! | |||
| self.$equipmenttype.$id.value = equipmenttypeid! | |||
| self.$parent.$id.value = parentid | |||
| self.createuserid = createuserid | |||
| self.updateuserid = updateuserid | |||
| } | |||
| } | |||
| extension mdlEquipment{ | |||
| struct Create: AsyncMigration { | |||
| func prepare(on database: Database) async throws { | |||
| try await database.schema("equipment") | |||
| .field("id", .int, .identifier(auto: true)) | |||
| .field("number", .string) | |||
| .field("isActive", .bool) | |||
| .field("customerId", .int, .references("customer", "id")) | |||
| .field("modelId", .int, .references("model", "id")) | |||
| .field("equipmentTypeId", .int, .references("equipmentType", "id")) | |||
| .field("createDate", .datetime) | |||
| .field("createUserId", .int) | |||
| .field("updateDate", .datetime) | |||
| .field("updateUserId", .int) | |||
| .create() | |||
| } | |||
| func revert(on database: Database) async throws { | |||
| try await database.schema("equipment").delete() | |||
| } | |||
| } | |||
| struct AddParent: AsyncMigration { | |||
| func prepare(on database: Database) async throws { | |||
| try await database.schema("equipment") | |||
| .field("parentId", .int, .references("equipment", "id")) | |||
| .update() | |||
| } | |||
| func revert(on database: Database) async throws { | |||
| try await database.schema("equipment") | |||
| .deleteField("parentId") | |||
| .update() | |||
| } | |||
| } | |||
| } | |||
| @@ -1,8 +1,63 @@ | |||
| // | |||
| // File.swift | |||
| // | |||
| // mdlMake.swift | |||
| // | |||
| // Created by Michiel Carman on 1/31/24. | |||
| // | |||
| // Created by Michiel Carman on 1/24/24. | |||
| // | |||
| import Fluent | |||
| import Vapor | |||
| import Foundation | |||
| import FluentKit | |||
| final class mdlMake: Model, Content { | |||
| static let schema = "make" | |||
| @ID(custom: "id", generatedBy: .database) var id: Int? | |||
| @Field(key: "name") var name: String? | |||
| @Field(key: "description") var description: String? | |||
| @Field(key: "isActive") var isactive: Bool? | |||
| @Timestamp(key: "createDate", on: .create) var createdate: Date? | |||
| @Field(key: "createUserId") var createuserid: Int? | |||
| @Timestamp(key: "updateDate", on: .update) var updatedate: Date? | |||
| @Field(key: "updateUserId") var updateuserid: Int? | |||
| init() { } | |||
| init(id: Int? = nil, name: String? = nil, description: String? = nil, isactive: Bool? = nil, createuserid: Int? = nil, updateuserid: Int? = nil) { | |||
| self.id = id | |||
| self.description = description | |||
| self.isactive = isactive | |||
| self.createuserid = createuserid | |||
| self.updateuserid = updateuserid | |||
| } | |||
| } | |||
| extension mdlMake{ | |||
| struct Create: AsyncMigration { | |||
| func prepare(on database: Database) async throws { | |||
| try await database.schema("make") | |||
| .field("id", .int, .identifier(auto: true)) | |||
| .field("name", .string) | |||
| .field("description", .string) | |||
| .field("isActive", .bool) | |||
| .field("createDate", .datetime) | |||
| .field("createUserId", .int) | |||
| .field("updateDate", .datetime) | |||
| .field("updateUserId", .int) | |||
| .create() | |||
| } | |||
| func revert(on database: Database) async throws { | |||
| try await database.schema("make").delete() | |||
| } | |||
| } | |||
| } | |||
| @@ -1,8 +1,71 @@ | |||
| // | |||
| // File.swift | |||
| // | |||
| // mdlModel.swift | |||
| // | |||
| // Created by Michiel Carman on 1/31/24. | |||
| // | |||
| // Created by Michiel Carman on 1/24/24. | |||
| // | |||
| import Fluent | |||
| import Vapor | |||
| import Foundation | |||
| import FluentKit | |||
| final class mdlModel: Model, Content { | |||
| static let schema = "model" | |||
| @ID(custom: "id", generatedBy: .database) var id: Int? | |||
| @Field(key: "name") var name: String? | |||
| @Field(key: "description") var description: String? | |||
| @Field(key: "isActive") var isactive: Bool? | |||
| @Parent(key: "productId") var product: mdlProduct | |||
| @Parent(key: "makeId") var make: mdlMake | |||
| @Timestamp(key: "createDate", on: .create) var createdate: Date? | |||
| @Field(key: "createUserId") var createuserid: Int? | |||
| @Timestamp(key: "updateDate", on: .update) var updatedate: Date? | |||
| @Field(key: "updateUserId") var updateuserid: Int? | |||
| init() { } | |||
| init(id: Int? = nil, name: String? = nil, description: String? = nil, isactive: Bool? = nil, createuserid: Int? = nil, updateuserid: Int? = nil, productid: Int? = nil, makeid: Int? = nil) { | |||
| self.id = id | |||
| self.name = name | |||
| self.description = description | |||
| self.isactive = isactive | |||
| self.$product.$id.value = productid! | |||
| self.$make.$id.value = makeid! | |||
| self.createuserid = createuserid | |||
| self.updateuserid = updateuserid | |||
| } | |||
| } | |||
| extension mdlModel{ | |||
| struct Create: AsyncMigration { | |||
| func prepare(on database: Database) async throws { | |||
| try await database.schema("model") | |||
| .field("id", .int, .identifier(auto: true)) | |||
| .field("name", .string) | |||
| .field("description", .string) | |||
| .field("productId", .int, .references("product", "id")) | |||
| .field("makeId", .int, .references("make", "id")) | |||
| .field("isActive", .bool) | |||
| .field("createDate", .datetime) | |||
| .field("createUserId", .int) | |||
| .field("updateDate", .datetime) | |||
| .field("updateUserId", .int) | |||
| .create() | |||
| } | |||
| func revert(on database: Database) async throws { | |||
| try await database.schema("model").delete() | |||
| } | |||
| } | |||
| } | |||
| @@ -1,8 +1,66 @@ | |||
| // | |||
| // File.swift | |||
| // | |||
| // mdlObjProperty.swift | |||
| // | |||
| // Created by Michiel Carman on 1/31/24. | |||
| // | |||
| // Created by Michiel Carman on 1/24/24. | |||
| // | |||
| import Fluent | |||
| import Vapor | |||
| import Foundation | |||
| import FluentKit | |||
| final class mdlObjProperty: Model, Content { | |||
| static let schema = "objProperty" | |||
| @ID(custom: "id", generatedBy: .database) var id: Int? | |||
| @Field(key: "label") var label: String? | |||
| @Field(key: "value") var value: String? | |||
| @Field(key: "isActive") var isactive: Bool? | |||
| @Parent(key: "equipmentId") var equipment: mdlEquipment | |||
| @Timestamp(key: "createDate", on: .create) var createdate: Date? | |||
| @Field(key: "createUserId") var createuserid: Int? | |||
| @Timestamp(key: "updateDate", on: .update) var updatedate: Date? | |||
| @Field(key: "updateUserId") var updateuserid: Int? | |||
| init() { } | |||
| init(id: Int? = nil, label: String? = nil, value: String? = nil, isactive: Bool? = nil, createuserid: Int? = nil, updateuserid: Int? = nil, equipmentid: Int? = nil) { | |||
| self.id = id | |||
| self.label = label | |||
| self.value = value | |||
| self.isactive = isactive | |||
| self.$equipment.$id.value = equipmentid | |||
| self.createuserid = createuserid | |||
| self.updateuserid = updateuserid | |||
| } | |||
| } | |||
| extension mdlObjProperty{ | |||
| struct Create: AsyncMigration { | |||
| func prepare(on database: Database) async throws { | |||
| try await database.schema("objProperty") | |||
| .field("id", .int, .identifier(auto: true)) | |||
| .field("label", .string) | |||
| .field("value", .string) | |||
| .field("isActive", .bool) | |||
| .field("equipmentId", .int, .references("equipment", "id")) | |||
| .field("createDate", .datetime) | |||
| .field("createUserId", .int) | |||
| .field("updateDate", .datetime) | |||
| .field("updateUserId", .int) | |||
| .create() | |||
| } | |||
| func revert(on database: Database) async throws { | |||
| try await database.schema("objProperty").delete() | |||
| } | |||
| } | |||
| } | |||
| @@ -1,8 +1,63 @@ | |||
| // | |||
| // File.swift | |||
| // | |||
| // mdlProduct.swift | |||
| // | |||
| // Created by Michiel Carman on 1/31/24. | |||
| // | |||
| // Created by Michiel Carman on 1/24/24. | |||
| // | |||
| import Fluent | |||
| import Vapor | |||
| import Foundation | |||
| import FluentKit | |||
| final class mdlProduct: Model, Content { | |||
| static let schema = "product" | |||
| @ID(custom: "id", generatedBy: .database) var id: Int? | |||
| @Field(key: "name") var name: String? | |||
| @Field(key: "description") var description: String? | |||
| @Field(key: "isActive") var isactive: Bool? | |||
| @Timestamp(key: "createDate", on: .create) var createdate: Date? | |||
| @Field(key: "createUserId") var createuserid: Int? | |||
| @Timestamp(key: "updateDate", on: .update) var updatedate: Date? | |||
| @Field(key: "updateUserId") var updateuserid: Int? | |||
| init() { } | |||
| init(id: Int? = nil, name: String? = nil, description: String? = nil, isactive: Bool? = nil, createuserid: Int? = nil, updateuserid: Int? = nil) { | |||
| self.id = id | |||
| self.description = description | |||
| self.isactive = isactive | |||
| self.createuserid = createuserid | |||
| self.updateuserid = updateuserid | |||
| } | |||
| } | |||
| extension mdlProduct{ | |||
| struct Create: AsyncMigration { | |||
| func prepare(on database: Database) async throws { | |||
| try await database.schema("product") | |||
| .field("id", .int, .identifier(auto: true)) | |||
| .field("name", .string) | |||
| .field("description", .string) | |||
| .field("isActive", .bool) | |||
| .field("createDate", .datetime) | |||
| .field("createUserId", .int) | |||
| .field("updateDate", .datetime) | |||
| .field("updateUserId", .int) | |||
| .create() | |||
| } | |||
| func revert(on database: Database) async throws { | |||
| try await database.schema("product").delete() | |||
| } | |||
| } | |||
| } | |||
| @@ -1,8 +1,63 @@ | |||
| // | |||
| // File.swift | |||
| // | |||
| // mdlItem.swift | |||
| // | |||
| // Created by Michiel Carman on 1/31/24. | |||
| // | |||
| // Created by Michiel Carman on 1/24/24. | |||
| // | |||
| import Fluent | |||
| import Vapor | |||
| import Foundation | |||
| import FluentKit | |||
| final class mdlItem: Model, Content { | |||
| static let schema = "item" | |||
| @ID(custom: "id", generatedBy: .database) var id: Int? | |||
| @Field(key: "name") var name: String? | |||
| @Field(key: "description") var description: String? | |||
| @Field(key: "isActive") var isactive: Bool? | |||
| @Timestamp(key: "createDate", on: .create) var createdate: Date? | |||
| @Field(key: "createUserId") var createuserid: Int? | |||
| @Timestamp(key: "updateDate", on: .update) var updatedate: Date? | |||
| @Field(key: "updateUserId") var updateuserid: Int? | |||
| init() { } | |||
| init(id: Int? = nil, name: String? = nil, description: String? = nil, isactive: Bool? = true, createuserid: Int? = nil, updateuserid: Int? = nil) { | |||
| self.id = id | |||
| self.name = name | |||
| self.description = description | |||
| self.isactive = isactive | |||
| self.createuserid = createuserid | |||
| self.updateuserid = updateuserid | |||
| } | |||
| } | |||
| extension mdlItem{ | |||
| struct Create: AsyncMigration { | |||
| func prepare(on database: Database) async throws { | |||
| try await database.schema("item") | |||
| .field("id", .int, .identifier(auto: true)) | |||
| .field("name", .string) | |||
| .field("description", .string) | |||
| .field("isActive", .bool) | |||
| .field("createDate", .datetime) | |||
| .field("createUserId", .int) | |||
| .field("updateDate", .datetime) | |||
| .field("updateUserId", .int) | |||
| .create() | |||
| } | |||
| func revert(on database: Database) async throws { | |||
| try await database.schema("item").delete() | |||
| } | |||
| } | |||
| } | |||
| @@ -1,8 +1,63 @@ | |||
| // | |||
| // File.swift | |||
| // | |||
| // mdlItemResponseType.swift | |||
| // | |||
| // Created by Michiel Carman on 1/31/24. | |||
| // | |||
| // Created by Michiel Carman on 1/24/24. | |||
| // | |||
| import Fluent | |||
| import Vapor | |||
| import Foundation | |||
| import FluentKit | |||
| final class mdlItemResponseType: Model, Content { | |||
| static let schema = "itemResponseType" | |||
| @ID(custom: "id", generatedBy: .database) var id: Int? | |||
| @Parent(key: "itemId") var item: mdlItem | |||
| @Parent(key: "responseTypeId") var responsetype: mdlResponseType | |||
| @Field(key: "isActive") var isactive: Bool? | |||
| @Timestamp(key: "createDate", on: .create) var createdate: Date? | |||
| @Field(key: "createUserId") var createuserid: Int? | |||
| @Timestamp(key: "updateDate", on: .update) var updatedate: Date? | |||
| @Field(key: "updateUserId") var updateuserid: Int? | |||
| init() { } | |||
| init(id: Int? = nil, itemid: Int? = nil, responsetypeid: Int? = nil, isactive: Bool? = true, createuserid: Int? = nil, updateuserid: Int? = nil) { | |||
| self.id = id | |||
| self.$item.$id.value = itemid! | |||
| self.$responsetype.$id.value = responsetypeid! | |||
| self.isactive = isactive | |||
| self.createuserid = createuserid | |||
| self.updateuserid = updateuserid | |||
| } | |||
| } | |||
| extension mdlItemResponseType{ | |||
| struct Create: AsyncMigration { | |||
| func prepare(on database: Database) async throws { | |||
| try await database.schema("itemResponseType") | |||
| .field("id", .int, .identifier(auto: true)) | |||
| .field("itemId", .int, .references("item", "id")) | |||
| .field("responseTypeId", .int, .references("responseType", "id")) | |||
| .field("isActive", .bool) | |||
| .field("createDate", .datetime) | |||
| .field("createUserId", .int) | |||
| .field("updateDate", .datetime) | |||
| .field("updateUserId", .int) | |||
| .create() | |||
| } | |||
| func revert(on database: Database) async throws { | |||
| try await database.schema("itemResponseType").delete() | |||
| } | |||
| } | |||
| } | |||
| @@ -1,8 +1,73 @@ | |||
| // | |||
| // File.swift | |||
| // | |||
| // mdlLabSetting.swift | |||
| // | |||
| // Created by Michiel Carman on 1/26/24. | |||
| // | |||
| // Created by Michiel Carman on 1/24/24. | |||
| // | |||
| import Fluent | |||
| import Vapor | |||
| import Foundation | |||
| import FluentKit | |||
| final class mdlLabSetting: Model, Content { | |||
| static let schema = "labSetting" | |||
| @ID(custom: "id", generatedBy: .database) var id: Int? | |||
| @Field(key: "name") var name: String? | |||
| @Field(key: "description") var description: String? | |||
| @Field(key: "barcodeDelimeter") var barcodedelimeter: String? | |||
| @Field(key: "barcodeActive") var barcodeactive: Bool? | |||
| @Field(key: "textActive") var textactive: Bool? | |||
| @Field(key: "logoActive") var logoactive: Bool? | |||
| @Timestamp(key: "createDate", on: .create) var createdate: Date? | |||
| @Field(key: "createUserId") var createuserid: Int? | |||
| @Timestamp(key: "updateDate", on: .update) var updatedate: Date? | |||
| @Field(key: "updateUserId") var updateuserid: Int? | |||
| init() { } | |||
| init(id: Int? = nil, name: String? = nil, description: String? = nil, barcodedelimeter: String? = nil, barcodeactive: Bool? = nil, textactive: Bool? = nil, logoactive: Bool? = nil, createuserid: Int? = nil, updateuserid: Int? = nil) { | |||
| self.id = id | |||
| self.name = name | |||
| self.description = description | |||
| self.barcodedelimeter = barcodedelimeter | |||
| self.barcodeactive = barcodeactive | |||
| self.textactive = textactive | |||
| self.logoactive = logoactive | |||
| self.createuserid = createuserid | |||
| self.updateuserid = updateuserid | |||
| } | |||
| } | |||
| extension mdlLabSetting{ | |||
| struct Create: AsyncMigration { | |||
| func prepare(on database: Database) async throws { | |||
| try await database.schema("labSetting") | |||
| .field("id", .int, .identifier(auto: true)) | |||
| .field("name", .string) | |||
| .field("description", .string) | |||
| .field("barcodeDelimeter", .string) | |||
| .field("barcodeActive", .bool) | |||
| .field("textActive", .bool) | |||
| .field("logoActive", .bool) | |||
| .field("createDate", .datetime) | |||
| .field("createUserId", .int) | |||
| .field("updateDate", .datetime) | |||
| .field("updateUserId", .int) | |||
| .create() | |||
| } | |||
| func revert(on database: Database) async throws { | |||
| try await database.schema("labSetting").delete() | |||
| } | |||
| } | |||
| } | |||
| @@ -1,8 +1,67 @@ | |||
| // | |||
| // File.swift | |||
| // | |||
| // XFluidViscosity.swift | |||
| // | |||
| // | |||
| // Created by Michiel Carman on 1/31/24. | |||
| // | |||
| import Fluent | |||
| import Vapor | |||
| import Foundation | |||
| import FluentKit | |||
| final class mdlXFluidViscosity: Model, Content { | |||
| static let schema = "xFluidViscosity" | |||
| @ID(custom: "id", generatedBy: .database) var id: Int? | |||
| @Parent(key: "userId") var user: mdlUser | |||
| @Parent(key: "roleId") var role: mdlRole | |||
| @Field(key: "sortOrder") var sortorder: Int? | |||
| @Timestamp(key: "createDate", on: .create) var createdate: Date? | |||
| @Field(key: "createUserId") var createuserid: Int? | |||
| @Timestamp(key: "updateDate", on: .update) var updatedate: Date? | |||
| @Field(key: "updateUserId") var updateuserid: Int? | |||
| init(){} | |||
| init(id: Int? = nil, userid: Int, roleid: Int, sortorder: Int? = nil, createdate: Date? = nil, createuserid: Int? = nil, updatedate: Date? = nil, updateuserid: Int? = nil) { | |||
| self.id = id | |||
| self.user.$id.value = userid | |||
| self.role.$id.value = roleid | |||
| self.sortorder = sortorder | |||
| self.createdate = createdate | |||
| self.createuserid = createuserid | |||
| self.updatedate = updatedate | |||
| self.updateuserid = updateuserid | |||
| } | |||
| } | |||
| extension mdlXFluidViscosity{ | |||
| struct Create: AsyncMigration { | |||
| func prepare(on database: Database) async throws { | |||
| try await database.schema("xFluidViscosity") | |||
| .field("id", .int, .identifier(auto: true)) | |||
| .field("userId", .int, .references("user", "id")) | |||
| .field("roleid", .int, .references("role", "id")) | |||
| .field("sortOrder", .int) | |||
| .field("createDate", .datetime) | |||
| .field("createUserId", .int) | |||
| .field("updateDate", .datetime) | |||
| .field("updateUserId", .int) | |||
| .create() | |||
| } | |||
| func revert(on database: Database) async throws { | |||
| try await database.schema("user").delete() | |||
| } | |||
| } | |||
| } | |||
| @@ -1,8 +1,77 @@ | |||
| // | |||
| // File.swift | |||
| // XUserRole.swift | |||
| // | |||
| // | |||
| // Created by Michiel Carman on 1/31/24. | |||
| // | |||
| import Fluent | |||
| import Vapor | |||
| import Foundation | |||
| import FluentKit | |||
| final class mdlXUserRole: Model, Content { | |||
| static let schema = "xUserRole" | |||
| @ID(custom: "id", generatedBy: .database) var id: Int? | |||
| @Parent(key: "userId") var user: mdlUser | |||
| @Parent(key: "roleId") var role: mdlRole | |||
| @Timestamp(key: "createDate", on: .create) var createdate: Date? | |||
| @Field(key: "createUserId") var createuserid: Int? | |||
| @Timestamp(key: "updateDate", on: .update) var updatedate: Date? | |||
| @Field(key: "updateUserId") var updateuserid: Int? | |||
| init(){} | |||
| init(id: Int? = nil, userid: Int, roleid: Int, createdate: Date? = nil, createuserid: Int? = nil, updatedate: Date? = nil, updateuserid: Int? = nil) { | |||
| self.id = id | |||
| self.user.$id.value = userid | |||
| self.role.$id.value = roleid | |||
| self.createdate = createdate | |||
| self.createuserid = createuserid | |||
| self.updatedate = updatedate | |||
| self.updateuserid = updateuserid | |||
| } | |||
| } | |||
| extension mdlXUserRole{ | |||
| struct Create: AsyncMigration { | |||
| func prepare(on database: Database) async throws { | |||
| try await database.schema("xUserRole") | |||
| .field("id", .int, .identifier(auto: true)) | |||
| .field("userId", .int, .references("user", "id")) | |||
| .field("roleid", .int, .references("role", "id")) | |||
| .field("createDate", .datetime) | |||
| .field("createUserId", .int) | |||
| .field("updateDate", .datetime) | |||
| .field("updateUserId", .int) | |||
| .create() | |||
| } | |||
| func revert(on database: Database) async throws { | |||
| try await database.schema("user").delete() | |||
| } | |||
| } | |||
| struct FixRoleId: AsyncMigration{ | |||
| func prepare(on database: Database) async throws{ | |||
| try await database.schema("xUserRole") | |||
| .deleteField("roleid") | |||
| .field("roleId", .int, .references("role", "id")) | |||
| .update() | |||
| } | |||
| func revert(on database: Database) async throws { | |||
| try await database.schema("xUserRole") | |||
| .deleteField("roleId") | |||
| .field("roleid", .int, .references("role", "id")) | |||
| .update() | |||
| } | |||
| } | |||
| } | |||
| @@ -1,8 +1,63 @@ | |||
| // | |||
| // File.swift | |||
| // | |||
| // XWorkOrderSegment.swift | |||
| // | |||
| // Created by Michiel Carman on 2/1/24. | |||
| // | |||
| // Created by Michiel Carman on 1/31/24. | |||
| // | |||
| import Fluent | |||
| import Vapor | |||
| import Foundation | |||
| import FluentKit | |||
| final class mdlXWorkOrderSegment: Model, Content { | |||
| static let schema = "xWorkOrderSegment" | |||
| @ID(custom: "id", generatedBy: .database) var id: Int? | |||
| @Parent(key: "workOrderId") var workorder: mdlWorkOrder | |||
| @Parent(key: "segmentId") var segment: mdlSegment | |||
| @Timestamp(key: "createDate", on: .create) var createdate: Date? | |||
| @Field(key: "createUserId") var createuserid: Int? | |||
| @Timestamp(key: "updateDate", on: .update) var updatedate: Date? | |||
| @Field(key: "updateUserId") var updateuserid: Int? | |||
| init(){} | |||
| init(id: Int? = nil, workorderid: Int, segmentid: Int, createdate: Date? = nil, createuserid: Int? = nil, updatedate: Date? = nil, updateuserid: Int? = nil) { | |||
| self.id = id | |||
| self.$workorder.$id.value = workorderid | |||
| self.$segment.$id.value = segmentid | |||
| self.createdate = createdate | |||
| self.createuserid = createuserid | |||
| self.updatedate = updatedate | |||
| self.updateuserid = updateuserid | |||
| } | |||
| } | |||
| extension mdlXWorkOrderSegment{ | |||
| struct Create: AsyncMigration { | |||
| func prepare(on database: Database) async throws { | |||
| try await database.schema("xWorkOrderSegment") | |||
| .field("id", .int, .identifier(auto: true)) | |||
| .field("workOrderId", .int, .references("workOrder", "id")) | |||
| .field("segmentId", .int, .references("segment", "id")) | |||
| .field("createDate", .datetime) | |||
| .field("createUserId", .int) | |||
| .field("updateDate", .datetime) | |||
| .field("updateUserId", .int) | |||
| .create() | |||
| } | |||
| func revert(on database: Database) async throws { | |||
| try await database.schema("user").delete() | |||
| } | |||
| } | |||
| } | |||
| @@ -1,8 +1,110 @@ | |||
| // | |||
| // File.swift | |||
| // | |||
| // OilSample.swift | |||
| // | |||
| // Created by Michiel Carman on 2/1/24. | |||
| // | |||
| // Created by Michiel Carman on 1/24/24. | |||
| // | |||
| import Fluent | |||
| import Vapor | |||
| import Foundation | |||
| import FluentKit | |||
| final class mdlOilSample: Model, Content { | |||
| static let schema = "oilSample" | |||
| @ID(custom: "id", generatedBy: .database) var id: Int? | |||
| @Parent(key: "segmentId") var segment: mdlSegment | |||
| @Field(key: "name") var name: String? | |||
| @Field(key: "code") var code: String? | |||
| @Field(key: "l1Name") var l1name: String? | |||
| @Field(key: "l1Code") var l1code: String? | |||
| @Field(key: "l2Name") var l2name: String? | |||
| @Field(key: "l2Code") var l2code: String? | |||
| @Field(key: "meterReading") var meterreading: Decimal? | |||
| @Field(key: "previousMeterReading") var previousmeterreading: Decimal? | |||
| @Field(key: "hoursOnOil") var hoursonoil: Decimal? | |||
| @Field(key: "oilAdded") var oiladded: Decimal? | |||
| @Field(key: "unit") var unit: String? | |||
| @Field(key: "jobSite") var jobsite: String? | |||
| @Field(key: "fluid") var fluid: String? | |||
| @Field(key: "viscosity") var viscosity: String? | |||
| @Field(key: "oilChanged") var oilchanged: Bool? | |||
| @Field(key: "filterChanged") var filterchanged: Bool? | |||
| @Field(key: "level") var level: String? | |||
| @Field(key: "comment") var comment: String? | |||
| @Field(key: "sortOrder") var sortorder: Int? | |||
| @Timestamp(key: "createDate", on: .create) var createdate: Date? | |||
| @Field(key: "createUserId") var createuserid: Int? | |||
| @Timestamp(key: "updateDate", on: .update) var updatedate: Date? | |||
| @Field(key: "updateUserId") var updateuserid: Int? | |||
| init() { } | |||
| init(id: Int? = nil, segmentid: Int? = nil, 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) { | |||
| self.id = id | |||
| self.$segment.$id.value = segmentid! | |||
| self.name = name | |||
| self.code = code | |||
| self.l1name = l1name | |||
| self.l1code = l1code | |||
| self.l2name = l2name | |||
| self.l2code = l2code | |||
| self.meterreading = meterreading | |||
| self.previousmeterreading = previousmeterreading | |||
| self.hoursonoil = hoursonoil | |||
| self.oiladded = oiladded | |||
| self.unit = unit | |||
| self.jobsite = jobsite | |||
| self.fluid = fluid | |||
| self.viscosity = viscosity | |||
| self.oilchanged = oilchanged | |||
| self.filterchanged = filterchanged | |||
| self.level = level | |||
| self.comment = comment | |||
| self.sortorder = sortorder | |||
| self.createuserid = createuserid | |||
| self.updateuserid = updateuserid | |||
| } | |||
| } | |||
| extension mdlOilSample{ | |||
| struct Create: AsyncMigration { | |||
| func prepare(on database: Database) async throws { | |||
| try await database.schema("oilSample") | |||
| .field("id", .int, .identifier(auto: true)) | |||
| .field("segmentId", .int, .references("segment", "id")) | |||
| .field("name", .string) | |||
| .field("code", .string) | |||
| .field("l1Name", .string) | |||
| .field("l1Code", .string) | |||
| .field("l2Name", .string) | |||
| .field("l2Code", .string) | |||
| .field("meterReading", .float) | |||
| .field("previousMeterReading", .float) | |||
| .field("hoursOnOil", .float) | |||
| .field("oilAdded", .float) | |||
| .field("unit", .string) | |||
| .field("jobSite", .string) | |||
| .field("fluid", .string) | |||
| .field("viscosity", .string) | |||
| .field("oilChanged", .bool) | |||
| .field("filterChanged", .bool) | |||
| .field("level", .string) | |||
| .field("comment", .string) | |||
| .field("createDate", .datetime) | |||
| .field("createUserId", .int) | |||
| .field("updateDate", .datetime) | |||
| .field("updateUserId", .int) | |||
| .create() | |||
| } | |||
| func revert(on database: Database) async throws { | |||
| try await database.schema("oilSample").delete() | |||
| } | |||
| } | |||
| } | |||
| @@ -1,8 +1,68 @@ | |||
| // | |||
| // File.swift | |||
| // | |||
| // mdlSpec.swift | |||
| // | |||
| // Created by Michiel Carman on 1/31/24. | |||
| // | |||
| // Created by Michiel Carman on 1/24/24. | |||
| // | |||
| import Fluent | |||
| import Vapor | |||
| import Foundation | |||
| import FluentKit | |||
| final class mdlSpec: Model, Content { | |||
| static let schema = "spec" | |||
| @ID(custom: "id", generatedBy: .database) var id: Int? | |||
| @Field(key: "name") var name: String? | |||
| @Field(key: "numberOfTests") var numberoftests: Int? | |||
| @Field(key: "isActive") var isactive: Bool? | |||
| @Parent(key: "itemId") var item: mdlItem | |||
| @Children(for: \.$spec) var specitems: [mdlSpecItem] | |||
| @Timestamp(key: "createDate", on: .create) var createdate: Date? | |||
| @Field(key: "createUserId") var createuserid: Int? | |||
| @Timestamp(key: "updateDate", on: .update) var updatedate: Date? | |||
| @Field(key: "updateUserId") var updateuserid: Int? | |||
| init() { } | |||
| init(id: Int? = nil, name: String? = nil, numberoftests: Int? = nil, isactive: Bool? = true, createuserid: Int? = nil, updateuserid: Int? = nil, itemid: Int? = nil) { | |||
| self.id = id | |||
| self.name = name | |||
| self.numberoftests = numberoftests | |||
| self.$item.$id.value = itemid! | |||
| self.isactive = isactive | |||
| self.createuserid = createuserid | |||
| self.updateuserid = updateuserid | |||
| } | |||
| } | |||
| extension mdlSpec{ | |||
| struct Create: AsyncMigration { | |||
| func prepare(on database: Database) async throws { | |||
| try await database.schema("spec") | |||
| .field("id", .int, .identifier(auto: true)) | |||
| .field("name", .string) | |||
| .field("numberOfTests", .int) | |||
| .field("itemId", .int, .references("item", "id")) | |||
| .field("isActive", .bool) | |||
| .field("createDate", .datetime) | |||
| .field("createUserId", .int) | |||
| .field("updateDate", .datetime) | |||
| .field("updateUserId", .int) | |||
| .create() | |||
| } | |||
| func revert(on database: Database) async throws { | |||
| try await database.schema("spec").delete() | |||
| } | |||
| } | |||
| } | |||
| @@ -1,8 +1,78 @@ | |||
| // | |||
| // File.swift | |||
| // | |||
| // mdlSpecItem.swift | |||
| // | |||
| // Created by Michiel Carman on 1/31/24. | |||
| // | |||
| // Created by Michiel Carman on 1/24/24. | |||
| // | |||
| import Fluent | |||
| import Vapor | |||
| import Foundation | |||
| import FluentKit | |||
| final class mdlSpecItem: Model, Content { | |||
| static let schema = "specItem" | |||
| @ID(custom: "id", generatedBy: .database) var id: Int? | |||
| @Field(key: "name") var name: String? | |||
| @Field(key: "qualifier") var qualifier: String? | |||
| @Field(key: "sortOrder") var sortorder: Int? | |||
| @Field(key: "isActive") var isactive: Bool? | |||
| @Parent(key: "specId") var spec: mdlSpec | |||
| @Parent(key: "comparisonTypeId") var comparisontype: mdlComparisonType | |||
| @Parent(key: "unitId") var unit: mdlUnit | |||
| @Children(for: \.$specitem) var values: [mdlSpecItemValue] | |||
| @Timestamp(key: "createDate", on: .create) var createdate: Date? | |||
| @Field(key: "createUserId") var createuserid: Int? | |||
| @Timestamp(key: "updateDate", on: .update) var updatedate: Date? | |||
| @Field(key: "updateUserId") var updateuserid: Int? | |||
| init() { } | |||
| init(id: Int? = nil, name: String? = nil, qualifier: String? = nil, isactive: Bool? = true, createuserid: Int? = nil, sortorder: Int? = nil, updateuserid: Int? = nil, specid: Int? = nil, comparisontypeid: Int? = nil, unitid: Int? = nil) { | |||
| self.id = id | |||
| self.name = name | |||
| self.qualifier = qualifier | |||
| self.sortorder = sortorder | |||
| self.$spec.$id.value = specid! | |||
| self.$comparisontype.$id.value = comparisontypeid! | |||
| self.$unit.$id.value = unitid! | |||
| self.isactive = isactive | |||
| self.createuserid = createuserid | |||
| self.updateuserid = updateuserid | |||
| } | |||
| } | |||
| extension mdlSpecItem{ | |||
| struct Create: AsyncMigration { | |||
| func prepare(on database: Database) async throws { | |||
| try await database.schema("specItem") | |||
| .field("id", .int, .identifier(auto: true)) | |||
| .field("name", .string) | |||
| .field("qualifier", .string) | |||
| .field("sortOrder", .int) | |||
| .field("specId", .int, .references("spec", "id")) | |||
| .field("comparisonTypeId", .int, .references("comparisonType", "id")) | |||
| .field("unitId", .int, .references("unit", "id")) | |||
| .field("isActive", .bool) | |||
| .field("createDate", .datetime) | |||
| .field("createUserId", .int) | |||
| .field("updateDate", .datetime) | |||
| .field("updateUserId", .int) | |||
| .create() | |||
| } | |||
| func revert(on database: Database) async throws { | |||
| try await database.schema("specItem").delete() | |||
| } | |||
| } | |||
| } | |||
| @@ -1,8 +1,68 @@ | |||
| // | |||
| // File.swift | |||
| // | |||
| // mdlSpecItemValue.swift | |||
| // | |||
| // Created by Michiel Carman on 1/31/24. | |||
| // | |||
| // Created by Michiel Carman on 1/24/24. | |||
| // | |||
| import Fluent | |||
| import Vapor | |||
| import Foundation | |||
| import FluentKit | |||
| final class mdlSpecItemValue: Model, Content { | |||
| static let schema = "specItemValue" | |||
| @ID(custom: "id", generatedBy: .database) var id: Int? | |||
| @Field(key: "value") var value: String? | |||
| @Field(key: "sortOrder") var sortorder: Int? | |||
| @Field(key: "isActive") var isactive: Bool? | |||
| @Parent(key: "specItemId") var specitem: mdlSpecItem | |||
| @Parent(key: "valueTypeId") var valuetype: mdlValueType | |||
| @Timestamp(key: "createDate", on: .create) var createdate: Date? | |||
| @Field(key: "createUserId") var createuserid: Int? | |||
| @Timestamp(key: "updateDate", on: .update) var updatedate: Date? | |||
| @Field(key: "updateUserId") var updateuserid: Int? | |||
| init() { } | |||
| init(id: Int? = nil, value: String? = nil, sortorder: Int? = nil, isactive: Bool? = true, createuserid: Int? = nil, updateuserid: Int? = nil, specitemid: Int? = nil, valuetypeid: Int? = nil) { | |||
| self.id = id | |||
| self.value = value | |||
| self.sortorder = sortorder | |||
| self.$specitem.$id.value = specitemid! | |||
| self.$valuetype.$id.value = valuetypeid! | |||
| self.isactive = isactive | |||
| self.createuserid = createuserid | |||
| self.updateuserid = updateuserid | |||
| } | |||
| } | |||
| extension mdlSpecItemValue{ | |||
| struct Create: AsyncMigration { | |||
| func prepare(on database: Database) async throws { | |||
| try await database.schema("specItemValue") | |||
| .field("id", .int, .identifier(auto: true)) | |||
| .field("value", .string) | |||
| .field("sortOrder", .int) | |||
| .field("itemId", .int, .references("item", "id"))//need to fix | |||
| .field("isActive", .bool) | |||
| .field("createDate", .datetime) | |||
| .field("createUserId", .int) | |||
| .field("updateDate", .datetime) | |||
| .field("updateUserId", .int) | |||
| .create() | |||
| } | |||
| func revert(on database: Database) async throws { | |||
| try await database.schema("specItemValue").delete() | |||
| } | |||
| } | |||
| } | |||
| @@ -1,8 +1,122 @@ | |||
| // | |||
| // File.swift | |||
| // | |||
| // mdlWorkOrder.swift | |||
| // | |||
| // Created by Michiel Carman on 1/31/24. | |||
| // | |||
| // Created by Michiel Carman on 1/24/24. | |||
| // | |||
| import Fluent | |||
| import Vapor | |||
| import Foundation | |||
| import FluentKit | |||
| final class mdlWorkOrder: Model, Content { | |||
| static let schema = "workOrder" | |||
| @ID(custom: "id", generatedBy: .database) var id: Int? | |||
| @Field(key: "number") var number: String? | |||
| @Field(key: "meterReading") var meterreading: Decimal? | |||
| @Field(key: "specialInstructions") var specialinstructions: String? | |||
| @Field(key: "scheduledStartDate") var scheduledstartdate: Date? | |||
| @Field(key: "scheduledEndDate") var scheduledenddate: Date? | |||
| @Field(key: "startDate") var startdate: Date? | |||
| @Field(key: "endDate") var enddate: Date? | |||
| @Field(key: "approvedDate") var approveddate: Date? | |||
| @OptionalParent(key: "customerId") var customer: mdlCustomer? | |||
| @OptionalParent(key: "equipmentId") var equipment: mdlEquipment? | |||
| @OptionalParent(key: "statusId") var status: mdlStatus? | |||
| @OptionalParent(key: "priorityId") var priority: mdlPriority? | |||
| @OptionalParent(key: "technicianUserId") var technician: mdlUser? | |||
| @OptionalParent(key: "reasonId") var reason: mdlReason? | |||
| @OptionalParent(key: "incompleteReasonId") var incompletereason: mdlIncompleteReason? | |||
| @OptionalParent(key: "fuelId") var fuel: mdlFuel? | |||
| @Siblings(through: mdlXWorkOrderSegment.self, from: \.$workorder, to: \.$segment) var segments: [mdlSegment] | |||
| @Timestamp(key: "createDate", on: .create) var createdate: Date? | |||
| @Field(key: "createUserId") var createuserid: Int? | |||
| @Timestamp(key: "updateDate", on: .update) var updatedate: Date? | |||
| @Field(key: "updateUserId") var updateuserid: Int? | |||
| init() { } | |||
| init(id: Int? = nil | |||
| , number: String? = nil | |||
| , meterreading: Decimal? = nil | |||
| , specialinstructions: String? = nil | |||
| , scheduledstartdate: Date? = nil | |||
| , scheduledenddate: Date? = nil | |||
| , startdate: Date? = nil | |||
| , enddate: Date? = nil | |||
| , approveddate: Date? = nil | |||
| , customerid: Int? = nil | |||
| , equipmentid: Int? = nil | |||
| , statusid: Int? = nil | |||
| , priorityid: Int? = nil | |||
| , technicianuserid: Int? = nil | |||
| , reasonid: Int? = nil | |||
| , incompletereasonid: Int? = nil | |||
| , fuelid: Int? = nil | |||
| , createuserid: Int? = nil | |||
| , updateuserid: Int? = nil | |||
| ) { | |||
| self.id = id | |||
| self.number = number | |||
| self.meterreading = meterreading | |||
| self.specialinstructions = specialinstructions | |||
| self.scheduledenddate = scheduledstartdate | |||
| self.scheduledenddate = scheduledenddate | |||
| self.startdate = startdate | |||
| self.enddate = enddate | |||
| self.approveddate = approveddate | |||
| self.$customer.$id.value = customerid! | |||
| self.$equipment.$id.value = equipmentid! | |||
| self.$status.$id.value = statusid! | |||
| self.$priority.$id.value = priorityid! | |||
| self.$technician.$id.value = technicianuserid! | |||
| self.$reason.$id.value = reasonid! | |||
| self.$incompletereason.$id.value = incompletereasonid! | |||
| self.$fuel.$id.value = fuelid! | |||
| self.createuserid = createuserid ?? -1 | |||
| self.updateuserid = updateuserid ?? -1 | |||
| } | |||
| } | |||
| extension mdlWorkOrder{ | |||
| struct Create: AsyncMigration { | |||
| func prepare(on database: Database) async throws { | |||
| try await database.schema("workOrder") | |||
| .field("id", .int, .identifier(auto: true)) | |||
| .field("number", .string) | |||
| .field("meterReading", .float) | |||
| .field("specialInstructions", .string) | |||
| .field("scheduledStartDate", .datetime) | |||
| .field("scheduledEndDate", .datetime) | |||
| .field("startDate", .datetime) | |||
| .field("endDate", .datetime) | |||
| .field("approvedDate", .datetime) | |||
| .field("customerId", .int) | |||
| .field("equipmentId", .int) | |||
| .field("statusId", .int) | |||
| .field("priorityId", .int) | |||
| .field("technicianUserId", .int) | |||
| .field("reasonId", .int) | |||
| .field("incompleteReasonId", .int) | |||
| .field("fuelId", .int) | |||
| .field("createDate", .datetime) | |||
| .field("createUserId", .int) | |||
| .field("updateDate", .datetime) | |||
| .field("updateUserId", .int) | |||
| .create() | |||
| } | |||
| func revert(on database: Database) async throws { | |||
| try await database.schema("workOrder").delete() | |||
| } | |||
| } | |||
| } | |||
| @@ -6,18 +6,101 @@ import Vapor | |||
| // configures your application | |||
| public func configure(_ app: Application) async throws { | |||
| // uncomment to serve files from /Public folder | |||
| // app.middleware.use(FileMiddleware(publicDirectory: app.directory.publicDirectory)) | |||
| app.middleware.use(CORSMiddleware()) | |||
| let corsConfiguration = CORSMiddleware.Configuration( | |||
| allowedOrigin: .all, | |||
| allowedMethods: [.GET, .POST, .PUT, .OPTIONS, .DELETE, .PATCH], | |||
| allowedHeaders: [.accept, .authorization, .contentType, .origin, .xRequestedWith, .userAgent, .accessControlAllowOrigin] | |||
| ) | |||
| let cors = CORSMiddleware(configuration: corsConfiguration) | |||
| // cors middleware should come before default error middleware using `at: .beginning` | |||
| app.middleware.use(cors, at: .beginning) | |||
| app.http.server.configuration.port = 3003 | |||
| app.databases.use(DatabaseConfigurationFactory.postgres(configuration: .init( | |||
| hostname: Environment.get("DATABASE_HOST") ?? "localhost", | |||
| port: Environment.get("DATABASE_PORT").flatMap(Int.init(_:)) ?? SQLPostgresConfiguration.ianaPortNumber, | |||
| username: Environment.get("DATABASE_USERNAME") ?? "vapor_username", | |||
| password: Environment.get("DATABASE_PASSWORD") ?? "vapor_password", | |||
| database: Environment.get("DATABASE_NAME") ?? "vapor_database", | |||
| username: Environment.get("DATABASE_USERNAME") ?? "mcarman", | |||
| password: Environment.get("DATABASE_PASSWORD") ?? "@ng31F@rm0823262", | |||
| database: Environment.get("DATABASE_NAME") ?? "cm", | |||
| tls: .prefer(try .init(configuration: .clientDefault))) | |||
| ), as: .psql) | |||
| let timeout = HTTPClient.Configuration.Timeout(connect: .seconds(300), read: .seconds(300) ) | |||
| app.http.client.configuration.timeout = timeout | |||
| app.migrations.add(CreateTodo()) | |||
| app.migrations.add(mdlCategory.Create()) | |||
| app.migrations.add(mdlComparisonType.Create()) | |||
| app.migrations.add(mdlComparisonType.Seed()) | |||
| app.migrations.add(mdlCompartment.Create()) | |||
| app.migrations.add(mdlCompartmentLocation.Create()) | |||
| app.migrations.add(mdlDataType.Create()) | |||
| app.migrations.add(mdlDataType.Seed()) | |||
| app.migrations.add(mdlUnit.Create()) | |||
| app.migrations.add(mdlValueType.Create()) | |||
| app.migrations.add(mdlValueType.Seed()) | |||
| app.migrations.add(mdlInputType.Create()) | |||
| app.migrations.add(mdlInputType.Seed()) | |||
| app.migrations.add(mdlJobSite.Create()) | |||
| app.migrations.add(mdlJobSite.Seed()) | |||
| app.migrations.add(mdlPriority.Create()) | |||
| app.migrations.add(mdlPriority.Seed()) | |||
| app.migrations.add(mdlRepairType.Create()) | |||
| app.migrations.add(mdlRepairType.Seed()) | |||
| app.migrations.add(mdlRole.Create()) | |||
| app.migrations.add(mdlRole.Seed()) | |||
| app.migrations.add(mdlState.Create()) | |||
| app.migrations.add(mdlState.Seed()) | |||
| app.migrations.add(mdlStatus.Create()) | |||
| app.migrations.add(mdlStatus.Seed()) | |||
| app.migrations.add(mdlDivision.Create()) | |||
| app.migrations.add(mdlLabSetting.Create()) | |||
| app.migrations.add(mdlLocation.Create()) | |||
| app.migrations.add(mdlFluid.Create()) | |||
| app.migrations.add(mdlFuel.Create()) | |||
| app.migrations.add(mdlIncompleteReason.Create()) | |||
| app.migrations.add(mdlLevel.Create()) | |||
| app.migrations.add(mdlNoteType.Create()) | |||
| app.migrations.add(mdlPart.Create()) | |||
| app.migrations.add(mdlSignatureType.Create()) | |||
| app.migrations.add(mdlReason.Create()) | |||
| app.migrations.add(mdlViscosity.Create()) | |||
| app.migrations.add(mdlGate.Create()) | |||
| app.migrations.add(mdlCustomer.Create()) | |||
| app.migrations.add(mdlContactType.Create()) | |||
| app.migrations.add(mdlContactType.Seed()) | |||
| app.migrations.add(mdlContact.Create()) | |||
| app.migrations.add(mdlContactInfo.Create()) | |||
| app.migrations.add(mdlContact.makeParentCustomer()) | |||
| app.migrations.add(mdlResponseType.Create()) | |||
| app.migrations.add(mdlSMSCCode.Create()) | |||
| app.migrations.add(mdlUser.Create()) | |||
| app.migrations.add(mdlXUserRole.Create()) | |||
| app.migrations.add(mdlXFluidViscosity.Create()) | |||
| app.migrations.add(mdlEquipmentType.Create()) | |||
| app.migrations.add(mdlEquipmentType.Seed()) | |||
| app.migrations.add(mdlProduct.Create()) | |||
| app.migrations.add(mdlMake.Create()) | |||
| app.migrations.add(mdlModel.Create()) | |||
| app.migrations.add(mdlEquipment.Create()) | |||
| app.migrations.add(mdlObjProperty.Create()) | |||
| app.migrations.add(mdlEquipment.AddParent()) | |||
| app.migrations.add(mdlItem.Create()) | |||
| app.migrations.add(mdlItemResponseType.Create()) | |||
| app.migrations.add(mdlSpec.Create()) | |||
| app.migrations.add(mdlSpecItem.Create()) | |||
| app.migrations.add(mdlSpecItemValue.Create()) | |||
| app.migrations.add(mdlWorkOrder.Create()) | |||
| app.migrations.add(mdlSegment.Create()) | |||
| app.migrations.add(mdlSegment.Seed()) | |||
| app.migrations.add(mdlOilSample.Create()) | |||
| app.migrations.add(mdlXWorkOrderSegment.Create()) | |||
| app.migrations.add(mdlXUserRole.FixRoleId()) | |||
| app.logger.logLevel = .debug | |||
| try await app.autoMigrate() | |||
| // register routes | |||
| try routes(app) | |||
| @@ -2,13 +2,16 @@ import Fluent | |||
| import Vapor | |||
| func routes(_ app: Application) throws { | |||
| app.get { req async in | |||
| "It works!" | |||
| app.routes.caseInsensitive = true | |||
| app.routes.defaultMaxBodySize = "64mb"; | |||
| let baseApp = app.grouped("api").grouped("v2.0") | |||
| baseApp.get { req async in | |||
| "Connexion Mobile Services Version 2.0" | |||
| } | |||
| try baseApp.register(collection: cntrlCategory()) | |||
| try baseApp.register(collection: cntrlValueType()) | |||
| try baseApp.register(collection: cntrlDataTypes()) | |||
| try baseApp.register(collection: cntrlRole()) | |||
| try baseApp.register(collection: cntrlUser()) | |||
| app.get("hello") { req async -> String in | |||
| "Hello, world!" | |||
| } | |||
| try app.register(collection: TodoController()) | |||
| } | |||