// // File.swift // // // Created by Michiel Carman on 10/24/21. // import Foundation import Vapor import Fluent import FluentPostgresDriver final class mdlCustomer: Model, Content{ struct Input: Content{ let id: Int? let number: String let name: String let address: String let address2: String let city: String let state: String let zip: String let phone1: String let phone2: String let fax: String let isactive: Bool let createdate: Date? let createuserid: Int? let updatedate: Date? let updateuserid: Int? let contacts: [mdlContact]? let machines: [mdlMachine]? let templates: [mdlTemplate]? let workorders: [mdlWorkOrder]? } struct Output: Content{ let id: Int? let number: String let name: String let address: String let address2: String let city: String let state: String let zip: String let phone1: String let phone2: String let fax: String let isactive: Bool let createdate: Date? let createuserid: Int? let updatedate: Date? let updateuserid: Int? let contacts: [mdlContact]? let machines: [mdlMachine]? let templates: [mdlTemplate]? let workorders: [mdlWorkOrder]? } static let schema = "Customer" @ID(custom: "id", generatedBy: .database) var id: Int? @Field(key: "number") var number: String @Field(key: "name") var name: String @Field(key: "address") var address: String @Field(key: "address2") var address2: String @Field(key: "city") var city: String @Field(key: "state") var state: String @Field(key: "zip") var zip: String @Field(key: "phone1") var phone1: String @Field(key: "phone2") var phone2: String @Field(key: "fax") var fax: String @Field(key: "isActive") var isactive: Bool @Field(key: "createUserId" ) var createuserid: Int? @Timestamp(key: "createDate", on: .create) var createdate: Date? @Field(key: "updateUserId") var updateuserid: Int? @Timestamp(key: "updateDate", on: .update) var updatedate: Date? @Children(for: \.$customer) var contacts: [mdlContact] @Children(for: \.$customer) var templates: [mdlTemplate] @Children(for: \.$customer) var workorders: [mdlWorkOrder] @Siblings(through: mdlXCustomerMachine.self, from: \.$customer, to: \.$machine) public var machines: [mdlMachine] init(){} init(id: Int? = nil, number: String, name: String, address: String, address2: String, city: String, state: String, zip: String, phone1: String, phone2: String, fax: String, isactive: Bool = true, createuserid: Int? = -1, createdate: Date? = nil, updateuserid: Int? = -1, updatedate: Date? = nil, contacts: [mdlContact]?, machines: [mdlMachine]?, templates: [mdlTemplate]?, workorders: [mdlWorkOrder]?){ self.id = id self.number = number self.name = name self.address = address self.address2 = address2 self.city = city self.state = state self.zip = zip self.phone1 = phone1 self.phone2 = phone2 self.fax = fax self.isactive = isactive self.createuserid = createuserid self.createdate = createdate self.updateuserid = updateuserid self.updatedate = updatedate self.$contacts.value = contacts self.$machines.value = machines self.$templates.value = templates self.$workorders.value = workorders } } extension mdlCustomer { struct create: Migration{ func prepare(on database: Database) -> EventLoopFuture { return database.schema("Customer") .field("id", .int, .identifier(auto: true)) .field("name", .string) .field("number", .string) .field("address", .string) .field("address2", .string) .field("city", .string) .field("state", .string) .field("zip", .string) .field("phone1", .string) .field("phone2", .string) .field("fax", .string) .field("isActive", .bool) .field("createUserId", .int) .field("createDate", .datetime) .field("updateUserId", .int) .field("updateDate", .datetime) .create() } func revert(on database: Database) -> EventLoopFuture { database.schema("Customer").delete() } } }