// // mdlSysUOM.swift // // // Created by Michiel Carman on 2/16/24. // import Fluent import Vapor import Foundation import FluentKit final class mdlSysUOM: Model, Content { static let schema = "sysUOM" @ID(custom: "id", generatedBy: .database) var id: Int? @Field(key: "name") var name: String? @Field(key: "description") var description: String? @Parent(key: "sysOfMeasureId") var sys: mdlSysOfMeasure @Parent(key: "sysCategoryId") var syscat: mdlSysCategory @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, sysid: Int, syscatid: Int, createuserid: Int? = nil, updateuserid: Int? = nil ) { self.id = id self.name = name self.description = description self.$sys.$id.value = sysid self.$syscat.$id.value = syscatid self.createuserid = createuserid self.updateuserid = updateuserid } } extension mdlSysUOM{ struct Create: AsyncMigration { func prepare(on database: Database) async throws { try await database.schema("sysUOM") .field("id", .int, .identifier(auto: true)) .field("name", .string) .field("description", .string) .field("sysOfMeasureId", .int, .references("sysOfMeasure", "id")) .field("sysCategoryId", .int, .references("sysCategory", "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("sysUOM").delete() } } struct Seed: AsyncMigration{ func prepare(on database: FluentKit.Database) async throws { let sys = try await mdlSysOfMeasure.query(on: database).all() let u = try await mdlSysCategory.query(on: database).all() var mdls: [mdlSysUOM] = [] for s in sys{ _ = s.id! for c in u{ _ = c.id! if(c.name == "LENGTH"){ if(s.id == 1){ mdls.append( .init(id: nil, name: "M", description: "Meter", sysid: s.id!, syscatid: c.id!, createuserid: -1, updateuserid: -1 ) ) mdls.append( .init(id: nil, name: "cm", description: "centiMeter", sysid: s.id!, syscatid: c.id!, createuserid: -1, updateuserid: -1 ) ) mdls.append( .init(id: nil, name: "mm", description: "Milimeter", sysid: s.id!, syscatid: c.id!, createuserid: -1, updateuserid: -1 ) ) mdls.append( .init(id: nil, name: "nm", description: "Nanometer", sysid: s.id!, syscatid: c.id!, createuserid: -1, updateuserid: -1 ) ) mdls.append( .init(id: nil, name: "KM", description: "Kilometer", sysid: s.id!, syscatid: c.id!, createuserid: -1, updateuserid: -1 ) ) } } if(c.name == "WEIGHT"){ } if(c.name == "CAPACITY"){ } if(c.name == "VOLUME"){ } if(c.name == "AREA"){ } if(c.name == "TEMPERATURE"){ } } } // let mdls: [mdlSysUOM] = [ // .init(id: 1, // name: "Built motor", // description: "d", // createuserid: -1, // updateuserid: -1) // ] for mdl in mdls{ try await mdl.save(on: database) } } func revert(on database: Database) async throws { try await mdlSysUOM.query(on: database).delete() } } }