diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000..c2e5d02 Binary files /dev/null and b/.DS_Store differ diff --git a/.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata b/.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..919434a --- /dev/null +++ b/.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/.swiftpm/xcode/package.xcworkspace/xcuserdata/michielcarman.xcuserdatad/UserInterfaceState.xcuserstate b/.swiftpm/xcode/package.xcworkspace/xcuserdata/michielcarman.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000..288c999 Binary files /dev/null and b/.swiftpm/xcode/package.xcworkspace/xcuserdata/michielcarman.xcuserdatad/UserInterfaceState.xcuserstate differ diff --git a/.swiftpm/xcode/xcuserdata/michielcarman.xcuserdatad/xcschemes/xcschememanagement.plist b/.swiftpm/xcode/xcuserdata/michielcarman.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000..d7c4001 --- /dev/null +++ b/.swiftpm/xcode/xcuserdata/michielcarman.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,14 @@ + + + + + SchemeUserState + + connexion_services.xcscheme_^#shared#^_ + + orderHint + 0 + + + + diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..d0af8ad --- /dev/null +++ b/Dockerfile @@ -0,0 +1,65 @@ +# ================================ +# Build image +# ================================ +FROM swift:5.4-focal as build + +# Install OS updates and, if needed, sqlite3 +RUN export DEBIAN_FRONTEND=noninteractive DEBCONF_NONINTERACTIVE_SEEN=true \ + && apt-get -q update \ + && apt-get -q dist-upgrade -y \ + && rm -rf /var/lib/apt/lists/* + +# Set up a build area +WORKDIR /build + +# First just resolve dependencies. +# This creates a cached layer that can be reused +# as long as your Package.swift/Package.resolved +# files do not change. +COPY ./Package.* ./ +RUN swift package resolve + +# Copy entire repo into container +COPY . . + +# Build everything, with optimizations +RUN swift build -c release + +# Switch to the staging area +WORKDIR /staging + +# Copy main executable to staging area +RUN cp "$(swift build --package-path /build -c release --show-bin-path)/Run" ./ + +# Copy any resouces from the public directory and views directory if the directories exist +# Ensure that by default, neither the directory nor any of its contents are writable. +RUN [ -d /build/Public ] && { mv /build/Public ./Public && chmod -R a-w ./Public; } || true +RUN [ -d /build/Resources ] && { mv /build/Resources ./Resources && chmod -R a-w ./Resources; } || true + +# ================================ +# Run image +# ================================ +FROM swift:5.4-focal-slim + +# Make sure all system packages are up to date. +RUN export DEBIAN_FRONTEND=noninteractive DEBCONF_NONINTERACTIVE_SEEN=true && \ + apt-get -q update && apt-get -q dist-upgrade -y && rm -r /var/lib/apt/lists/* + +# Create a vapor user and group with /app as its home directory +RUN useradd --user-group --create-home --system --skel /dev/null --home-dir /app vapor + +# Switch to the new home directory +WORKDIR /app + +# Copy built executable and any staged resources from builder +COPY --from=build --chown=vapor:vapor /staging /app + +# Ensure all further commands run as the vapor user +USER vapor:vapor + +# Let Docker bind to port 8080 +EXPOSE 8080 + +# Start the Vapor service when the image is run, default to listening on 8080 in production environment +ENTRYPOINT ["./Run"] +CMD ["serve", "--env", "production", "--hostname", "0.0.0.0", "--port", "8080"] diff --git a/Package.resolved b/Package.resolved new file mode 100644 index 0000000..4212869 --- /dev/null +++ b/Package.resolved @@ -0,0 +1,205 @@ +{ + "object": { + "pins": [ + { + "package": "async-http-client", + "repositoryURL": "https://github.com/swift-server/async-http-client.git", + "state": { + "branch": null, + "revision": "1081b0b0541f535ca088acdb56f5ca5598bc6247", + "version": "1.6.3" + } + }, + { + "package": "async-kit", + "repositoryURL": "https://github.com/vapor/async-kit.git", + "state": { + "branch": null, + "revision": "f6f92e6d3704bd72ffb4d00e302c98476fe65854", + "version": "1.9.0" + } + }, + { + "package": "console-kit", + "repositoryURL": "https://github.com/vapor/console-kit.git", + "state": { + "branch": null, + "revision": "75ea3b627d88221440b878e5dfccc73fd06842ed", + "version": "4.2.7" + } + }, + { + "package": "fluent", + "repositoryURL": "https://github.com/vapor/fluent.git", + "state": { + "branch": null, + "revision": "5810a409eb0271a576f68887fa6713dae3985056", + "version": "4.3.1" + } + }, + { + "package": "fluent-kit", + "repositoryURL": "https://github.com/vapor/fluent-kit.git", + "state": { + "branch": null, + "revision": "06a6939ff486cb6abae08b2e025b02291cff0da0", + "version": "1.15.3" + } + }, + { + "package": "fluent-postgres-driver", + "repositoryURL": "https://github.com/vapor/fluent-postgres-driver.git", + "state": { + "branch": null, + "revision": "0b7a43c78b7ae47eafad5736ab0fdc00aa31ca6f", + "version": "2.2.1" + } + }, + { + "package": "multipart-kit", + "repositoryURL": "https://github.com/vapor/multipart-kit.git", + "state": { + "branch": null, + "revision": "82f255699b1de9ba1f34dfc6b99e99aba5a1f8eb", + "version": "4.5.0" + } + }, + { + "package": "postgres-kit", + "repositoryURL": "https://github.com/vapor/postgres-kit.git", + "state": { + "branch": null, + "revision": "a050d338b41531bff65bccc87cf2a42871e87ff5", + "version": "2.3.3" + } + }, + { + "package": "postgres-nio", + "repositoryURL": "https://github.com/vapor/postgres-nio.git", + "state": { + "branch": null, + "revision": "c5eda6cebfdb81959f96d4ad8fcb1e8fc4596a52", + "version": "1.6.3" + } + }, + { + "package": "routing-kit", + "repositoryURL": "https://github.com/vapor/routing-kit.git", + "state": { + "branch": null, + "revision": "a0801a36a6ad501d5ad6285cbcd4774de6b0a734", + "version": "4.3.0" + } + }, + { + "package": "sql-kit", + "repositoryURL": "https://github.com/vapor/sql-kit.git", + "state": { + "branch": null, + "revision": "8587674e7e2499fd2017840973f416182025b02d", + "version": "3.12.1" + } + }, + { + "package": "swift-backtrace", + "repositoryURL": "https://github.com/swift-server/swift-backtrace.git", + "state": { + "branch": null, + "revision": "d3e04a9d4b3833363fb6192065b763310b156d54", + "version": "1.3.1" + } + }, + { + "package": "swift-crypto", + "repositoryURL": "https://github.com/apple/swift-crypto.git", + "state": { + "branch": null, + "revision": "127d3745c37b5705e4bc8d16c7951c48dcc3332c", + "version": "2.0.0" + } + }, + { + "package": "swift-log", + "repositoryURL": "https://github.com/apple/swift-log.git", + "state": { + "branch": null, + "revision": "5d66f7ba25daf4f94100e7022febf3c75e37a6c7", + "version": "1.4.2" + } + }, + { + "package": "swift-metrics", + "repositoryURL": "https://github.com/apple/swift-metrics.git", + "state": { + "branch": null, + "revision": "3edd2f57afc4e68e23c3e4956bc8b65ca6b5b2ff", + "version": "2.2.0" + } + }, + { + "package": "swift-nio", + "repositoryURL": "https://github.com/apple/swift-nio.git", + "state": { + "branch": null, + "revision": "6aa9347d9bc5bbfe6a84983aec955c17ffea96ef", + "version": "2.33.0" + } + }, + { + "package": "swift-nio-extras", + "repositoryURL": "https://github.com/apple/swift-nio-extras.git", + "state": { + "branch": null, + "revision": "f73ca5ee9c6806800243f1ac415fcf82de9a4c91", + "version": "1.10.2" + } + }, + { + "package": "swift-nio-http2", + "repositoryURL": "https://github.com/apple/swift-nio-http2.git", + "state": { + "branch": null, + "revision": "326f7f9a8c8c8402e3691adac04911cac9f9d87f", + "version": "1.18.4" + } + }, + { + "package": "swift-nio-ssl", + "repositoryURL": "https://github.com/apple/swift-nio-ssl.git", + "state": { + "branch": null, + "revision": "5e68c1ded15619bb281b273fa8c2d8fd7f7b2b7d", + "version": "2.16.1" + } + }, + { + "package": "swift-nio-transport-services", + "repositoryURL": "https://github.com/apple/swift-nio-transport-services.git", + "state": { + "branch": null, + "revision": "e7f5278a26442dc46783ba7e063643d524e414a0", + "version": "1.11.3" + } + }, + { + "package": "vapor", + "repositoryURL": "https://github.com/vapor/vapor.git", + "state": { + "branch": null, + "revision": "27119271502bf266be293be5325f0fb72435e8fd", + "version": "4.49.2" + } + }, + { + "package": "websocket-kit", + "repositoryURL": "https://github.com/vapor/websocket-kit.git", + "state": { + "branch": null, + "revision": "b1c4df8f6c848c2e977726903bbe6578eed723ad", + "version": "2.2.0" + } + } + ] + }, + "version": 1 +} diff --git a/Package.swift b/Package.swift new file mode 100644 index 0000000..89cdebe --- /dev/null +++ b/Package.swift @@ -0,0 +1,36 @@ +// swift-tools-version:5.2 +import PackageDescription + +let package = Package( + name: "connexion_services", + platforms: [ + .macOS(.v10_15) + ], + dependencies: [ + // 💧 A server-side Swift web framework. + .package(url: "https://github.com/vapor/vapor.git", from: "4.0.0"), + .package(url: "https://github.com/vapor/fluent.git", from: "4.0.0"), + .package(url: "https://github.com/vapor/fluent-postgres-driver.git", from: "2.0.0"), + ], + targets: [ + .target( + name: "App", + dependencies: [ + .product(name: "Fluent", package: "fluent"), + .product(name: "FluentPostgresDriver", package: "fluent-postgres-driver"), + .product(name: "Vapor", package: "vapor") + ], + swiftSettings: [ + // Enable better optimizations when building in Release configuration. Despite the use of + // the `.unsafeFlags` construct required by SwiftPM, this flag is recommended for Release + // builds. See for details. + .unsafeFlags(["-cross-module-optimization"], .when(configuration: .release)) + ] + ), + .target(name: "Run", dependencies: [.target(name: "App")]), + .testTarget(name: "AppTests", dependencies: [ + .target(name: "App"), + .product(name: "XCTVapor", package: "vapor"), + ]) + ] +) diff --git a/Resources/Views/index.leaf b/Resources/Views/index.leaf new file mode 100644 index 0000000..10cb4f7 --- /dev/null +++ b/Resources/Views/index.leaf @@ -0,0 +1,12 @@ + + + + + + #(title) + + + +

#(title)

+ + \ No newline at end of file diff --git a/Sources/.DS_Store b/Sources/.DS_Store new file mode 100644 index 0000000..886d6c6 Binary files /dev/null and b/Sources/.DS_Store differ diff --git a/Sources/App/.DS_Store b/Sources/App/.DS_Store new file mode 100644 index 0000000..e6d7849 Binary files /dev/null and b/Sources/App/.DS_Store differ diff --git a/Sources/App/Controllers/.gitkeep b/Sources/App/Controllers/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/Sources/App/Controllers/c/CPCLTemplateCommandCtrl.swift b/Sources/App/Controllers/c/CPCLTemplateCommandCtrl.swift new file mode 100644 index 0000000..d4d003a --- /dev/null +++ b/Sources/App/Controllers/c/CPCLTemplateCommandCtrl.swift @@ -0,0 +1,155 @@ +// +// CPCLTemplateCommandCtrl.swift +// +// +// Created by Michiel Carman on 11/11/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class CPCLTemplateCommandCtrl{ + //Create Unit + func create(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlCPCLTemplateCommand.Input.self) + let output = self.createUnit(input) + return self.save(output, req, input) + + } + + //Update Unit + func update(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlCPCLTemplateCommand.Input.self) + return try qbase(req: req).first().unwrap(or: Abort(.notFound)).flatMap{output in self.mapOutput(output, input) + return self.save(output, req: req) + } + } + + //Get all Divisions + func readAll(req: Request) throws -> EventLoopFuture>{ + return try qbase(req: req) + .paginate(for: req) + .map{ + page in page.map{ + self.createRead($0) + } + } + } + //Get 1 Division + func read(req: Request) throws -> EventLoopFuture{ + + return try qbase(req: req).first().unwrap(or: Abort(.internalServerError)).map{self.createRead($0)} + + } + //Delete 1 Division + func delete(req: Request) throws -> EventLoopFuture{ + + guard let id = req.parameters.get("id", as: Int.self) else{ + throw Abort(.badRequest) + } + return mdlCPCLTemplateCommand.find(id, on: req.db).unwrap(or: Abort(.notFound)).flatMap{ $0.delete(on: req.db)}.map{.ok} + } + +} +extension CPCLTemplateCommandCtrl{ + //Query Settings + func qbase(req: Request) throws -> QueryBuilder { + let query = mdlCPCLTemplateCommand.query(on: req.db).with(\.$cpcltemplate) + if let id = req.parameters.get("id", as: Int.self){ + return query.filter(\.$id == id) + } else{ + return query + } + } + //create Output + func createRead(_ output: mdlCPCLTemplateCommand) -> mdlCPCLTemplateCommand.Output { + return mdlCPCLTemplateCommand.Output( + id: output.id!, + cmd: output.cmd, + sortorder: output.sortorder, + isactive: output.isactive, + createdate: output.createdate, + createuserid: output.createuserid, + updatedate: output.updatedate, + updateuserid: output.updateuserid, + cpcltemplate: output.$cpcltemplate.value! + ) + } + + func mapOutput(_ output: Optional.WrappedType, _ input: mdlCPCLTemplateCommand.Input){ + output.cmd = input.cmd; + output.sortorder = input.sortorder; + output.isactive = input.isactive; + output.createdate = input.createdate; + output.updatedate = input.updatedate; + output.createuserid = input.createuserid; + output.updateuserid = input.updateuserid; + output.$cpcltemplate.id = input.cpcltemplate.id! + } + + func createUnit(_ input: mdlCPCLTemplateCommand.Input) -> mdlCPCLTemplateCommand { + return mdlCPCLTemplateCommand( + id: input.id ?? nil + , cmd: input.cmd + , sortorder: input.sortorder + , isactive: input.isactive + , createuserid: input.createuserid ?? -1 + , createdate: input.createdate + , updateuserid: input.updateuserid ?? -1 + , updatedate: input.updatedate + , cpcltemplate: input.cpcltemplate + ) + } + + //update function + func save(_ output: Optional.WrappedType, req: Request) -> EventLoopFuture { + return output + .save(on: req.db) + .map{mdlCPCLTemplateCommand.Output( + id: output.id! + , cmd: output.cmd + , sortorder: output.sortorder + , isactive: output.isactive + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + , cpcltemplate: output.cpcltemplate + ) + } + } + //create function + func save(_ output: mdlCPCLTemplateCommand, _ req: Request, _ input: mdlCPCLTemplateCommand.Input) -> EventLoopFuture { + return output + .save(on: req.db) + .map{ + mdlCPCLTemplateCommand.Output( + id: output.id! + , cmd: output.cmd + , sortorder: output.sortorder + , isactive: output.isactive + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + , cpcltemplate: input.cpcltemplate + ) + + } + } + +} +extension CPCLTemplateCommandCtrl: RouteCollection{ + func boot(routes: RoutesBuilder) throws{ + let apigroup = routes.grouped("cpclcommands") + apigroup.get("", use: readAll) + apigroup.get(":id", use: read) + apigroup.post("", use: create) + apigroup.post(":id", use: update) + apigroup.delete(":id", use: delete) + + + } +} diff --git a/Sources/App/Controllers/c/CPCLTemplateCtrl.swift b/Sources/App/Controllers/c/CPCLTemplateCtrl.swift new file mode 100644 index 0000000..1bb4343 --- /dev/null +++ b/Sources/App/Controllers/c/CPCLTemplateCtrl.swift @@ -0,0 +1,157 @@ +// +// CPCLTemplateCtrl.swift +// +// +// Created by Michiel Carman on 11/11/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class CPCLTemplateCtrl{ + //Create Unit + func create(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlCPCLTemplate.Input.self) + let output = self.createUnit(input) + return self.save(output, req, input) + + } + + //Update Unit + func update(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlCPCLTemplate.Input.self) + return try qbase(req: req).first().unwrap(or: Abort(.notFound)).flatMap{output in self.mapOutput(output, input) + return self.save(output, req: req) + } + } + + //Get all Divisions + func readAll(req: Request) throws -> EventLoopFuture>{ + return try qbase(req: req) + .paginate(for: req) + .map{ + page in page.map{ + self.createRead($0) + } + } + } + //Get 1 Division + func read(req: Request) throws -> EventLoopFuture{ + + return try qbase(req: req).first().unwrap(or: Abort(.internalServerError)).map{self.createRead($0)} + + } + //Delete 1 Division + func delete(req: Request) throws -> EventLoopFuture{ + + guard let id = req.parameters.get("id", as: Int.self) else{ + throw Abort(.badRequest) + } + return mdlCPCLTemplate.find(id, on: req.db).unwrap(or: Abort(.notFound)).flatMap{ $0.delete(on: req.db)}.map{.ok} + } + +} +extension CPCLTemplateCtrl{ + //Query Settings + func qbase(req: Request) throws -> QueryBuilder { + let query = mdlCPCLTemplate.query(on: req.db) + .with(\.$oilsamplelabel) + .with(\.$commands) + if let id = req.parameters.get("id", as: Int.self){ + return query.filter(\.$id == id) + } else{ + return query + } + } + //create Output + func createRead(_ output: mdlCPCLTemplate) -> mdlCPCLTemplate.Output { + return mdlCPCLTemplate.Output( + id: output.id!, + name: output.name, + isactive: output.isactive, + createdate: output.createdate, + createuserid: output.createuserid, + updatedate: output.updatedate, + updateuserid: output.updateuserid, + oilsamplelabel: output.$oilsamplelabel.value!, + commands: output.$commands.value + ) + } + + func mapOutput(_ output: Optional.WrappedType, _ input: mdlCPCLTemplate.Input){ + output.name = input.name; + output.isactive = input.isactive; + output.createdate = input.createdate; + output.updatedate = input.updatedate; + output.createuserid = input.createuserid; + output.updateuserid = input.updateuserid; + output.$oilsamplelabel.id = input.oilsamplelabel.id!; + output.$commands.value = input.commands + } + + func createUnit(_ input: mdlCPCLTemplate.Input) -> mdlCPCLTemplate { + return mdlCPCLTemplate( + id: input.id ?? nil + , name: input.name + , isactive: input.isactive + , createuserid: input.createuserid ?? -1 + , createdate: input.createdate + , updateuserid: input.updateuserid ?? -1 + , updatedate: input.updatedate + , oilsamplelabel: input.oilsamplelabel + , commands: input.commands + ) + } + + //update function + func save(_ output: Optional.WrappedType, req: Request) -> EventLoopFuture { + return output + .save(on: req.db) + .map{mdlCPCLTemplate.Output( + id: output.id! + , name: output.name + , isactive: output.isactive + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + , oilsamplelabel: output.oilsamplelabel + , commands: output.commands + ) + } + } + //create function + func save(_ output: mdlCPCLTemplate, _ req: Request, _ input: mdlCPCLTemplate.Input) -> EventLoopFuture { + return output + .save(on: req.db) + .map{ + mdlCPCLTemplate.Output( + id: output.id! + , name: output.name + , isactive: output.isactive + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + , oilsamplelabel: input.oilsamplelabel + , commands: input.commands + ) + + } + } + +} +extension CPCLTemplateCtrl: RouteCollection{ + func boot(routes: RoutesBuilder) throws{ + let apigroup = routes.grouped("cpcltemplates") + apigroup.get("", use: readAll) + apigroup.get(":id", use: read) + apigroup.post("", use: create) + apigroup.post(":id", use: update) + apigroup.delete(":id", use: delete) + + + } +} diff --git a/Sources/App/Controllers/c/CategoryCtrl.swift b/Sources/App/Controllers/c/CategoryCtrl.swift new file mode 100644 index 0000000..fd7324b --- /dev/null +++ b/Sources/App/Controllers/c/CategoryCtrl.swift @@ -0,0 +1,155 @@ +// +// CategoryCtrl.swift +// +// +// Created by Michiel Carman on 11/9/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class CategoryCtrl{ + //Create Unit + func create(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlCategory.Input.self) + let output = self.createUnit(input) + return self.save(output, req, input) + + } + + //Update Unit + func update(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlCategory.Input.self) + return try qbase(req: req).first().unwrap(or: Abort(.notFound)).flatMap{output in self.mapOutput(output, input) + return self.save(output, req: req) + } + } + + //Get all Divisions + func readAll(req: Request) throws -> EventLoopFuture>{ + return try qbase(req: req) + .paginate(for: req) + .map{ + page in page.map{ + self.createRead($0) + } + } + } + //Get 1 Division + func read(req: Request) throws -> EventLoopFuture{ + + return try qbase(req: req).first().unwrap(or: Abort(.internalServerError)).map{self.createRead($0)} + + } + //Delete 1 Division + func delete(req: Request) throws -> EventLoopFuture{ + + guard let id = req.parameters.get("id", as: Int.self) else{ + throw Abort(.badRequest) + } + return mdlCategory.find(id, on: req.db).unwrap(or: Abort(.notFound)).flatMap{ $0.delete(on: req.db)}.map{.ok} + } + +} +extension CategoryCtrl{ + //Query Settings + func qbase(req: Request) throws -> QueryBuilder { + let query = mdlCategory.query(on: req.db).with(\.$items) + if let id = req.parameters.get("id", as: Int.self){ + return query.filter(\.$id == id) + } else{ + return query + } + } + //create Output + func createRead(_ output: mdlCategory) -> mdlCategory.Output { + return mdlCategory.Output( + id: output.id!, + name: output.name, + description: output.description, + isactive: output.isactive, + createdate: output.createdate, + createuserid: output.createuserid, + updatedate: output.updatedate, + updateuserid: output.updateuserid, + items: output.$items.value! + ) + } + + func mapOutput(_ output: Optional.WrappedType, _ input: mdlCategory.Input){ + output.name = input.name; + output.description = input.description; + output.isactive = input.isactive; + output.createdate = input.createdate; + output.updatedate = input.updatedate; + output.createuserid = input.createuserid; + output.updateuserid = input.updateuserid; + output.$items.value = input.items + } + + func createUnit(_ input: mdlCategory.Input) -> mdlCategory { + return mdlCategory( + id: input.id ?? nil + , name: input.name + , description: input.description + , isactive: input.isactive + , createuserid: input.createuserid ?? -1 + , createdate: input.createdate + , updateuserid: input.updateuserid ?? -1 + , updatedate: input.updatedate + , items: input.items + ) + } + + //update function + func save(_ output: Optional.WrappedType, req: Request) -> EventLoopFuture { + return output + .save(on: req.db) + .map{mdlCategory.Output( + id: output.id! + , name: output.name + , description: output.description + , isactive: output.isactive + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + , items: output.items + ) + } + } + //create function + func save(_ output: mdlCategory, _ req: Request, _ input: mdlCategory.Input) -> EventLoopFuture { + return output + .save(on: req.db) + .map{ + mdlCategory.Output( + id: output.id! + , name: output.name + , description: output.description + , isactive: output.isactive + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + , items: input.items + ) + + } + } + +} +extension CategoryCtrl: RouteCollection{ + func boot(routes: RoutesBuilder) throws{ + let apigroup = routes.grouped("categories") + apigroup.get("", use: readAll) + apigroup.get(":id", use: read) + apigroup.post("", use: create) + apigroup.post(":id", use: update) + apigroup.delete(":id", use: delete) + + + } +} diff --git a/Sources/App/Controllers/c/ComparisonTypeCtrl.swift b/Sources/App/Controllers/c/ComparisonTypeCtrl.swift new file mode 100644 index 0000000..f096359 --- /dev/null +++ b/Sources/App/Controllers/c/ComparisonTypeCtrl.swift @@ -0,0 +1,154 @@ +// +// ComparisonTypeCtrl.swift +// +// +// Created by Michiel Carman on 11/4/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class ComparisonTypeCtrl{ + //Create Unit + func create(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlComparisonType.Input.self) + let output = self.createUnit(input) + return self.save(output, req, input) + + } + + //Update Unit + func update(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlComparisonType.Input.self) + return try qbase(req: req).first().unwrap(or: Abort(.notFound)).flatMap{output in self.mapOutput(output, input) + return self.save(output, req: req) + } + } + + //Get all Divisions + func readAll(req: Request) throws -> EventLoopFuture>{ + return try qbase(req: req) + .paginate(for: req) + .map{ + page in page.map{ + self.createRead($0) + } + } + } + //Get 1 Division + func read(req: Request) throws -> EventLoopFuture{ + + return try qbase(req: req).first().unwrap(or: Abort(.internalServerError)).map{self.createRead($0)} + + } + //Delete 1 Division + func delete(req: Request) throws -> EventLoopFuture{ + + guard let id = req.parameters.get("id", as: Int.self) else{ + throw Abort(.badRequest) + } + return mdlComparisonType.find(id, on: req.db).unwrap(or: Abort(.notFound)).flatMap{ $0.delete(on: req.db)}.map{.ok} + } + +} +extension ComparisonTypeCtrl{ + //Query Settings + func qbase(req: Request) throws -> QueryBuilder { + let query = mdlComparisonType.query(on: req.db).with(\.$specitems).with(\.$inspectioncategoryitemspecitems) + if let id = req.parameters.get("id", as: Int.self){ + return query.filter(\.$id == id) + } else{ + return query + } + } + //create Output + func createRead(_ output: mdlComparisonType) -> mdlComparisonType.Output { + return mdlComparisonType.Output( + id: output.id!, + name: output.name, + description: output.description, + createdate: output.createdate, + createuserid: output.createuserid, + updatedate: output.updatedate, + updateuserid: output.updateuserid, + specitems: output.$specitems.value!, + inspectioncategoryitemspecitems: output.$inspectioncategoryitemspecitems.value! + ) + } + + func mapOutput(_ output: Optional.WrappedType, _ input: mdlComparisonType.Input){ + output.name = input.name; + output.description = input.description; + output.createdate = input.createdate; + output.updatedate = input.updatedate; + output.createuserid = input.createuserid; + output.updateuserid = input.updateuserid; + output.$specitems.value = input.specitems; + output.$inspectioncategoryitemspecitems.value = input.inspectioncategoryitemspecitems + } + + func createUnit(_ input: mdlComparisonType.Input) -> mdlComparisonType { + return mdlComparisonType( + id: input.id ?? nil + , name: input.name + , description: input.description + , createuserid: input.createuserid ?? -1 + , createdate: input.createdate + , updateuserid: input.updateuserid ?? -1 + , updatedate: input.updatedate + , specitems: input.specitems + , inspectioncategoryitemspecitems: input.inspectioncategoryitemspecitems + ) + } + + //update function + func save(_ output: Optional.WrappedType, req: Request) -> EventLoopFuture { + return output + .save(on: req.db) + .map{mdlComparisonType.Output( + id: output.id! + , name: output.name + , description: output.description + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + , specitems: output.specitems + , inspectioncategoryitemspecitems: output.inspectioncategoryitemspecitems + ) + } + } + //create function + func save(_ output: mdlComparisonType, _ req: Request, _ input: mdlComparisonType.Input) -> EventLoopFuture { + return output + .save(on: req.db) + .map{ + mdlComparisonType.Output( + id: output.id! + , name: output.name + , description: output.description + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + , specitems: input.specitems + , inspectioncategoryitemspecitems: input.inspectioncategoryitemspecitems + ) + } + } + +} +extension ComparisonTypeCtrl: RouteCollection{ + func boot(routes: RoutesBuilder) throws{ + let apigroup = routes.grouped("comparisontypes") + apigroup.get("", use: readAll) + apigroup.get(":id", use: read) + apigroup.post("", use: create) + apigroup.post(":id", use: update) + apigroup.delete(":id", use: delete) + + + } +} diff --git a/Sources/App/Controllers/c/CompartmentCtrl.swift b/Sources/App/Controllers/c/CompartmentCtrl.swift new file mode 100644 index 0000000..ca31e27 --- /dev/null +++ b/Sources/App/Controllers/c/CompartmentCtrl.swift @@ -0,0 +1,160 @@ +// +// CompartmentCtrl.swift +// +// +// Created by Michiel Carman on 11/4/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class CompartmentCtrl{ + //Create Unit + func create(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlCompartment.Input.self) + let output = self.createUnit(input) + return self.save(output, req, input) + + } + + //Update Unit + func update(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlCompartment.Input.self) + return try qbase(req: req).first().unwrap(or: Abort(.notFound)).flatMap{output in self.mapOutput(output, input) + return self.save(output, req: req) + } + } + + //Get all Divisions + func readAll(req: Request) throws -> EventLoopFuture>{ + return try qbase(req: req) + .paginate(for: req) + .map{ + page in page.map{ + self.createRead($0) + } + } + } + //Get 1 Division + func read(req: Request) throws -> EventLoopFuture{ + + return try qbase(req: req).first().unwrap(or: Abort(.internalServerError)).map{self.createRead($0)} + + } + //Delete 1 Division + func delete(req: Request) throws -> EventLoopFuture{ + + guard let id = req.parameters.get("id", as: Int.self) else{ + throw Abort(.badRequest) + } + return mdlCompartment.find(id, on: req.db).unwrap(or: Abort(.notFound)).flatMap{ $0.delete(on: req.db)}.map{.ok} + } + +} +extension CompartmentCtrl{ + //Query Settings + func qbase(req: Request) throws -> QueryBuilder { + let query = mdlCompartment.query(on: req.db) + if let id = req.parameters.get("id", as: Int.self){ + return query.filter(\.$id == id) + } else{ + return query + } + } + //create Output + func createRead(_ output: mdlCompartment) -> mdlCompartment.Output { + return mdlCompartment.Output( + id: output.id!, + name: output.name, + description: output.description, + code: output.code, + sortorder: output.sortorder, + isactive: output.isactive, + createdate: output.createdate, + createuserid: output.createuserid, + updatedate: output.updatedate, + updateuserid: output.updateuserid + ) + } + + func mapOutput(_ output: Optional.WrappedType, _ input: mdlCompartment.Input){ + output.name = input.name; + output.description = input.description; + output.code = input.code; + output.sortorder = input.sortorder; + output.isactive = input.isactive; + output.createdate = input.createdate; + output.updatedate = input.updatedate; + output.createuserid = input.createuserid; + output.updateuserid = input.updateuserid; + } + + func createUnit(_ input: mdlCompartment.Input) -> mdlCompartment { + return mdlCompartment( + id: input.id ?? nil + , name: input.name + , description: input.description + , code: input.code + , sortorder: input.sortorder + , isactive: input.isactive + , createuserid: input.createuserid ?? -1 + , createdate: input.createdate + , updateuserid: input.updateuserid ?? -1 + , updatedate: input.updatedate + ) + } + + //update function + func save(_ output: Optional.WrappedType, req: Request) -> EventLoopFuture { + return output + .save(on: req.db) + .map{mdlCompartment.Output( + id: output.id! + , name: output.name + , description: output.description + , code: output.code + , sortorder: output.sortorder + , isactive: output.isactive + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + ) + } + } + //create function + func save(_ output: mdlCompartment, _ req: Request, _ input: mdlCompartment.Input) -> EventLoopFuture { + return output + .save(on: req.db) + .map{ + mdlCompartment.Output( + id: output.id! + , name: output.name + , description: output.description + , code: output.code + , sortorder: output.sortorder + , isactive: output.isactive + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + ) + + } + } + +} +extension CompartmentCtrl: RouteCollection{ + func boot(routes: RoutesBuilder) throws{ + let apigroup = routes.grouped("compartments") + apigroup.get("", use: readAll) + apigroup.get(":id", use: read) + apigroup.post("", use: create) + apigroup.post(":id", use: update) + apigroup.delete(":id", use: delete) + + + } +} diff --git a/Sources/App/Controllers/c/CompartmentGroupCtrl.swift b/Sources/App/Controllers/c/CompartmentGroupCtrl.swift new file mode 100644 index 0000000..2b2865a --- /dev/null +++ b/Sources/App/Controllers/c/CompartmentGroupCtrl.swift @@ -0,0 +1,155 @@ +// +// CompartmentGroupCtrl.swift +// +// +// Created by Michiel Carman on 11/4/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class CompartmentGroupCtrl{ + //Create Unit + func create(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlCompartmentGroup.Input.self) + let output = self.createUnit(input) + return self.save(output, req, input) + + } + + //Update Unit + func update(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlCompartmentGroup.Input.self) + return try qbase(req: req).first().unwrap(or: Abort(.notFound)).flatMap{output in self.mapOutput(output, input) + return self.save(output, req: req) + } + } + + //Get all Divisions + func readAll(req: Request) throws -> EventLoopFuture>{ + return try qbase(req: req) + .paginate(for: req) + .map{ + page in page.map{ + self.createRead($0) + } + } + } + //Get 1 Division + func read(req: Request) throws -> EventLoopFuture{ + + return try qbase(req: req).first().unwrap(or: Abort(.internalServerError)).map{self.createRead($0)} + + } + //Delete 1 Division + func delete(req: Request) throws -> EventLoopFuture{ + + guard let id = req.parameters.get("id", as: Int.self) else{ + throw Abort(.badRequest) + } + return mdlCompartmentGroup.find(id, on: req.db).unwrap(or: Abort(.notFound)).flatMap{ $0.delete(on: req.db)}.map{.ok} + } + +} +extension CompartmentGroupCtrl{ + //Query Settings + func qbase(req: Request) throws -> QueryBuilder { + let query = mdlCompartmentGroup.query(on: req.db) + if let id = req.parameters.get("id", as: Int.self){ + return query.filter(\.$id == id) + } else{ + return query + } + } + //create Output + func createRead(_ output: mdlCompartmentGroup) -> mdlCompartmentGroup.Output { + return mdlCompartmentGroup.Output( + id: output.id!, + name: output.name, + description: output.description, + sortorder: output.sortorder, + isactive: output.isactive, + createdate: output.createdate, + createuserid: output.createuserid, + updatedate: output.updatedate, + updateuserid: output.updateuserid + ) + } + + func mapOutput(_ output: Optional.WrappedType, _ input: mdlCompartmentGroup.Input){ + output.name = input.name; + output.description = input.description; + output.sortorder = input.sortorder; + output.isactive = input.isactive; + output.createdate = input.createdate; + output.updatedate = input.updatedate; + output.createuserid = input.createuserid; + output.updateuserid = input.updateuserid; + } + + func createUnit(_ input: mdlCompartmentGroup.Input) -> mdlCompartmentGroup { + return mdlCompartmentGroup( + id: input.id ?? nil + , name: input.name + , description: input.description + , sortorder: input.sortorder + , isactive: input.isactive + , createuserid: input.createuserid ?? -1 + , createdate: input.createdate + , updateuserid: input.updateuserid ?? -1 + , updatedate: input.updatedate + ) + } + + //update function + func save(_ output: Optional.WrappedType, req: Request) -> EventLoopFuture { + return output + .save(on: req.db) + .map{mdlCompartmentGroup.Output( + id: output.id! + , name: output.name + , description: output.description + , sortorder: output.sortorder + , isactive: output.isactive + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + ) + } + } + //create function + func save(_ output: mdlCompartmentGroup, _ req: Request, _ input: mdlCompartmentGroup.Input) -> EventLoopFuture { + return output + .save(on: req.db) + .map{ + mdlCompartmentGroup.Output( + id: output.id! + , name: output.name + , description: output.description + , sortorder: output.sortorder + , isactive: output.isactive + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + ) + + } + } + +} +extension CompartmentGroupCtrl: RouteCollection{ + func boot(routes: RoutesBuilder) throws{ + let apigroup = routes.grouped("compartmentgroups") + apigroup.get("", use: readAll) + apigroup.get(":id", use: read) + apigroup.post("", use: create) + apigroup.post(":id", use: update) + apigroup.delete(":id", use: delete) + + + } +} diff --git a/Sources/App/Controllers/c/CompartmentLocationCtrl.swift b/Sources/App/Controllers/c/CompartmentLocationCtrl.swift new file mode 100644 index 0000000..27b8417 --- /dev/null +++ b/Sources/App/Controllers/c/CompartmentLocationCtrl.swift @@ -0,0 +1,161 @@ +// +// CompartmentLocationCtrl.swift +// +// +// Created by Michiel Carman on 11/4/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class CompartmentLocationCtrl{ + //Create Unit + func create(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlCompartmentLocation.Input.self) + let output = self.createUnit(input) + return self.save(output, req, input) + + } + + //Update Unit + func update(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlCompartmentLocation.Input.self) + return try qbase(req: req).first().unwrap(or: Abort(.notFound)).flatMap{output in self.mapOutput(output, input) + return self.save(output, req: req) + } + } + + //Get all Divisions + func readAll(req: Request) throws -> EventLoopFuture>{ + return try qbase(req: req) + .paginate(for: req) + .map{ + page in page.map{ + self.createRead($0) + } + } + } + //Get 1 Division + func read(req: Request) throws -> EventLoopFuture{ + + return try qbase(req: req).first().unwrap(or: Abort(.internalServerError)).map{self.createRead($0)} + + } + //Delete 1 Division + func delete(req: Request) throws -> EventLoopFuture{ + + guard let id = req.parameters.get("id", as: Int.self) else{ + throw Abort(.badRequest) + } + return mdlCompartmentLocation.find(id, on: req.db).unwrap(or: Abort(.notFound)).flatMap{ $0.delete(on: req.db)}.map{.ok} + } + +} +extension CompartmentLocationCtrl{ + //Query Settings + func qbase(req: Request) throws -> QueryBuilder { + let query = mdlCompartmentLocation.query(on: req.db) + if let id = req.parameters.get("id", as: Int.self){ + return query.filter(\.$id == id) + } else{ + return query + } + } + //create Output + func createRead(_ output: mdlCompartmentLocation) -> mdlCompartmentLocation.Output { + return mdlCompartmentLocation.Output( + id: output.id!, + name: output.name, + description: output.description, + code: output.code, + sortorder: output.sortorder, + isactive: output.isactive, + createdate: output.createdate, + createuserid: output.createuserid, + updatedate: output.updatedate, + updateuserid: output.updateuserid + ) + } + + func mapOutput(_ output: Optional.WrappedType, _ input: mdlCompartmentLocation.Input){ + output.name = input.name; + output.description = input.description; + output.code = input.code; + output.sortorder = input.sortorder; + output.isactive = input.isactive; + output.createdate = input.createdate; + output.updatedate = input.updatedate; + output.createuserid = input.createuserid; + output.updateuserid = input.updateuserid; + } + + func createUnit(_ input: mdlCompartmentLocation.Input) -> mdlCompartmentLocation { + return mdlCompartmentLocation( + id: input.id ?? nil + , name: input.name + , description: input.description + , code: input.code + + , sortorder: input.sortorder + , isactive: input.isactive + , createuserid: input.createuserid ?? -1 + , createdate: input.createdate + , updateuserid: input.updateuserid ?? -1 + , updatedate: input.updatedate + ) + } + + //update function + func save(_ output: Optional.WrappedType, req: Request) -> EventLoopFuture { + return output + .save(on: req.db) + .map{mdlCompartmentLocation.Output( + id: output.id! + , name: output.name + , description: output.description + , code: output.code + , sortorder: output.sortorder + , isactive: output.isactive + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + ) + } + } + //create function + func save(_ output: mdlCompartmentLocation, _ req: Request, _ input: mdlCompartmentLocation.Input) -> EventLoopFuture { + return output + .save(on: req.db) + .map{ + mdlCompartmentLocation.Output( + id: output.id! + , name: output.name + , description: output.description + , code: output.code + , sortorder: output.sortorder + , isactive: output.isactive + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + ) + + } + } + +} +extension CompartmentLocationCtrl: RouteCollection{ + func boot(routes: RoutesBuilder) throws{ + let apigroup = routes.grouped("compartmentlocations") + apigroup.get("", use: readAll) + apigroup.get(":id", use: read) + apigroup.post("", use: create) + apigroup.post(":id", use: update) + apigroup.delete(":id", use: delete) + + + } +} diff --git a/Sources/App/Controllers/c/ContactCtrl.swift b/Sources/App/Controllers/c/ContactCtrl.swift new file mode 100644 index 0000000..aa6bcb5 --- /dev/null +++ b/Sources/App/Controllers/c/ContactCtrl.swift @@ -0,0 +1,170 @@ +// +// ContractCtrl.swift +// +// +// Created by Michiel Carman on 11/5/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class ContactCtrl{ + //Create Unit + func create(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlContact.Input.self) + let output = self.createUnit(input) + return self.save(output, req, input) + + } + + //Update Unit + func update(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlContact.Input.self) + return try qbase(req: req).first().unwrap(or: Abort(.notFound)).flatMap{output in self.mapOutput(output, input) + return self.save(output, req: req) + } + } + + //Get all Divisions + func readAll(req: Request) throws -> EventLoopFuture>{ + return try qbase(req: req) + .paginate(for: req) + .map{ + page in page.map{ + self.createRead($0) + } + } + } + //Get 1 Division + func read(req: Request) throws -> EventLoopFuture{ + + return try qbase(req: req).first().unwrap(or: Abort(.internalServerError)).map{self.createRead($0)} + + } + //Delete 1 Division + func delete(req: Request) throws -> EventLoopFuture{ + + guard let id = req.parameters.get("id", as: Int.self) else{ + throw Abort(.badRequest) + } + return mdlContact.find(id, on: req.db).unwrap(or: Abort(.notFound)).flatMap{ $0.delete(on: req.db)}.map{.ok} + } + +} +extension ContactCtrl{ + //Query Settings + func qbase(req: Request) throws -> QueryBuilder { + let query = mdlContact.query(on: req.db).with(\.$customer).with(\.$location).with(\.$contacttypes).with(\.$files) + if let id = req.parameters.get("id", as: Int.self){ + return query.filter(\.$id == id) + } else{ + return query + } + } + //create Output + func createRead(_ output: mdlContact) -> mdlContact.Output { + return mdlContact.Output( + id: output.id!, + firstname: output.firstname, + lastname: output.lastname, + isactive: output.isactive, + createdate: output.createdate, + createuserid: output.createuserid, + updatedate: output.updatedate, + updateuserid: output.updateuserid, + customer: output.$customer.value!, + location: output.$location.value!, + contacttypes: output.$contacttypes.value!, + files: output.$files.value! + ) + } + + func mapOutput(_ output: Optional.WrappedType, _ input: mdlContact.Input){ + output.firstname = input.firstname; + output.lastname = input.lastname; + output.isactive = input.isactive; + output.createdate = input.createdate; + output.updatedate = input.updatedate; + output.createuserid = input.createuserid; + output.updateuserid = input.updateuserid; + output.$customer.id = input.customer.id!; + output.$location.id = input.location.id!; + output.$contacttypes.value = input.contacttypes; + output.$files.value = input.files + } + + func createUnit(_ input: mdlContact.Input) -> mdlContact { + return mdlContact( + id: input.id ?? nil + , firstname: input.firstname + , lastname: input.lastname + , isactive: input.isactive + , createuserid: input.createuserid ?? -1 + , createdate: input.createdate + , updateuserid: input.updateuserid ?? -1 + , updatedate: input.updatedate + , customer: input.customer + , location: input.location + , contacttypes: input.contacttypes + , files: input.files + ) + } + + //update function + func save(_ output: Optional.WrappedType, req: Request) -> EventLoopFuture { + return output + .save(on: req.db) + .map{mdlContact.Output( + id: output.id! + , firstname: output.firstname + , lastname: output.lastname + , isactive: output.isactive + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + , customer: output.customer + , location: output.location + , contacttypes: output.contacttypes + , files: output.files + ) + } + } + //create function + func save(_ output: mdlContact, _ req: Request, _ input: mdlContact.Input) -> EventLoopFuture { + return output + .save(on: req.db) + .map{ + mdlContact.Output( + id: output.id! + , firstname: output.firstname + , lastname: output.lastname + , isactive: output.isactive + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + , customer: input.customer + , location: input.location + , contacttypes: input.contacttypes + , files: input.files + ) + + } + } + +} +extension ContactCtrl: RouteCollection{ + func boot(routes: RoutesBuilder) throws{ + let apigroup = routes.grouped("contacts") + apigroup.get("", use: readAll) + apigroup.get(":id", use: read) + apigroup.post("", use: create) + apigroup.post(":id", use: update) + apigroup.delete(":id", use: delete) + + + } +} diff --git a/Sources/App/Controllers/c/ContactMethodCtrl.swift b/Sources/App/Controllers/c/ContactMethodCtrl.swift new file mode 100644 index 0000000..7be246f --- /dev/null +++ b/Sources/App/Controllers/c/ContactMethodCtrl.swift @@ -0,0 +1,174 @@ +// +// ContactMethodCtrl.swift +// +// +// Created by Michiel Carman on 11/5/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class ContactMethodCtrl{ + //Create Unit + func create(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlContactMethod.Input.self) + let output = self.createUnit(input) + return self.save(output, req, input) + + } + + //Update Unit + func update(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlContactMethod.Input.self) + return try qbase(req: req).first().unwrap(or: Abort(.notFound)).flatMap{output in self.mapOutput(output, input) + return self.save(output, req: req) + } + } + + //Get all Divisions + func readAll(req: Request) throws -> EventLoopFuture>{ + return try qbase(req: req) + .paginate(for: req) + .map{ + page in page.map{ + self.createRead($0) + } + } + } + //Get 1 Division + func read(req: Request) throws -> EventLoopFuture{ + + return try qbase(req: req).first().unwrap(or: Abort(.internalServerError)).map{self.createRead($0)} + + } + //Delete 1 Division + func delete(req: Request) throws -> EventLoopFuture{ + + guard let id = req.parameters.get("id", as: Int.self) else{ + throw Abort(.badRequest) + } + return mdlContactMethod.find(id, on: req.db).unwrap(or: Abort(.notFound)).flatMap{ $0.delete(on: req.db)}.map{.ok} + } + +} +extension ContactMethodCtrl{ + //Query Settings + func qbase(req: Request) throws -> QueryBuilder { + let query = mdlContactMethod.query(on: req.db).with(\.$contact) + if let id = req.parameters.get("id", as: Int.self){ + return query.filter(\.$id == id) + } else{ + return query + } + } + //create Output + func createRead(_ output: mdlContactMethod) -> mdlContactMethod.Output { + return mdlContactMethod.Output( + id: output.id!, + name: output.name, + description: output.description, + line1: output.line1, + line2: output.line2, + line3: output.line3, + line4: output.line4, + primary: output.primary, + createdate: output.createdate, + createuserid: output.createuserid, + updatedate: output.updatedate, + updateuserid: output.updateuserid, + contact: output.$contact.value! + ) + } + + func mapOutput(_ output: Optional.WrappedType, _ input: mdlContactMethod.Input){ + output.name = input.name; + output.description = input.description; + output.line1 = input.line1; + output.line2 = input.line2; + output.line3 = input.line3; + output.line4 = input.line4; + output.primary = input.primary; + output.createdate = input.createdate; + output.updatedate = input.updatedate; + output.createuserid = input.createuserid; + output.updateuserid = input.updateuserid; + output.$contact.id = input.contact.id! + } + + func createUnit(_ input: mdlContactMethod.Input) -> mdlContactMethod { + return mdlContactMethod( + id: input.id ?? nil + , name: input.name + , description: input.description + , line1: input.line1 + , line2: input.line2 + , line3: input.line3 + , line4: input.line4 + , createuserid: input.createuserid ?? -1 + , createdate: input.createdate + , updateuserid: input.updateuserid ?? -1 + , updatedate: input.updatedate + , contact: input.contact + ) + } + + //update function + func save(_ output: Optional.WrappedType, req: Request) -> EventLoopFuture { + return output + .save(on: req.db) + .map{mdlContactMethod.Output( + id: output.id! + , name: output.name + , description: output.description + , line1: output.line1 + , line2: output.line2 + , line3: output.line3 + , line4: output.line4 + , primary: output.primary + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + , contact: output.contact + ) + } + } + //create function + func save(_ output: mdlContactMethod, _ req: Request, _ input: mdlContactMethod.Input) -> EventLoopFuture { + return output + .save(on: req.db) + .map{ + mdlContactMethod.Output( + id: output.id! + , name: output.name + , description: output.description + , line1: output.line1 + , line2: output.line2 + , line3: output.line3 + , line4: output.line4 + , primary: output.primary + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + , contact: input.contact + ) + + } + } + +} +extension ContactMethodCtrl: RouteCollection{ + func boot(routes: RoutesBuilder) throws{ + let apigroup = routes.grouped("contactmethods") + apigroup.get("", use: readAll) + apigroup.get(":id", use: read) + apigroup.post("", use: create) + apigroup.post(":id", use: update) + apigroup.delete(":id", use: delete) + + + } +} diff --git a/Sources/App/Controllers/c/CustomerCtrl.swift b/Sources/App/Controllers/c/CustomerCtrl.swift new file mode 100644 index 0000000..cf9931e --- /dev/null +++ b/Sources/App/Controllers/c/CustomerCtrl.swift @@ -0,0 +1,214 @@ +// +// CustomerCtrl.swift +// +// +// Created by Michiel Carman on 11/4/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class CustomerCtrl{ + //Create Unit + func create(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlCustomer.Input.self) + let output = self.createUnit(input) + return self.save(output, req, input) + + } + + //Update Unit + func update(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlCustomer.Input.self) + return try qbase(req: req).first().unwrap(or: Abort(.notFound)).flatMap{output in self.mapOutput(output, input) + return self.save(output, req: req) + } + } + + //Get all Divisions + func readAll(req: Request) throws -> EventLoopFuture>{ + return try qbase(req: req) + .paginate(for: req) + .map{ + page in page.map{ + self.createRead($0) + } + } + } + //Get 1 Division + func read(req: Request) throws -> EventLoopFuture{ + + return try qbase(req: req).first().unwrap(or: Abort(.internalServerError)).map{self.createRead($0)} + + } + //Delete 1 Division + func delete(req: Request) throws -> EventLoopFuture{ + + guard let id = req.parameters.get("id", as: Int.self) else{ + throw Abort(.badRequest) + } + return mdlCustomer.find(id, on: req.db).unwrap(or: Abort(.notFound)).flatMap{ $0.delete(on: req.db)}.map{.ok} + } + +} +extension CustomerCtrl{ + //Query Settings + func qbase(req: Request) throws -> QueryBuilder { + let query = mdlCustomer.query(on: req.db) + .with(\.$contacts) + .with(\.$templates) + .with(\.$workorders) + .with(\.$machines) + if let id = req.parameters.get("id", as: Int.self){ + return query.filter(\.$id == id) + } else{ + return query + } + } + //create Output + func createRead(_ output: mdlCustomer) -> mdlCustomer.Output { + return mdlCustomer.Output( + id: output.id!, + number: output.number, + name: output.name, + address: output.address, + address2: output.address2, + city: output.city, + state: output.state, + zip: output.zip, + phone1: output.phone1, + phone2: output.phone2, + fax: output.fax, + isactive: output.isactive, + createdate: output.createdate, + createuserid: output.createuserid, + updatedate: output.updatedate, + updateuserid: output.updateuserid, + contacts: output.contacts, + machines: output.machines, + templates: output.templates, + workorders: output.workorders + ) + } + + func mapOutput(_ output: Optional.WrappedType, _ input: mdlCustomer.Input){ + output.number = input.number; + output.name = input.name; + output.address = input.address; + output.address2 = input.address2; + output.city = input.city; + output.state = input.state; + output.zip = input.zip; + output.phone1 = input.phone1; + output.phone2 = input.phone2; + output.fax = input.fax; + output.isactive = input.isactive; + output.createdate = input.createdate; + output.updatedate = input.updatedate; + output.createuserid = input.createuserid; + output.updateuserid = input.updateuserid; + output.$contacts.value = input.contacts; + output.$machines.value = input.machines; + output.$templates.value = input.templates; + output.$workorders.value = input.workorders + } + + func createUnit(_ input: mdlCustomer.Input) -> mdlCustomer { + return mdlCustomer( + id: input.id ?? nil + , number: input.number + , name: input.name + , address: input.address + , address2: input.address2 + , city: input.city + , state: input.state + , zip: input.zip + , phone1: input.phone1 + , phone2: input.phone2 + , fax: input.fax + , isactive: input.isactive + , createuserid: input.createuserid ?? -1 + , createdate: input.createdate + , updateuserid: input.updateuserid ?? -1 + , updatedate: input.updatedate + , contacts: input.contacts + , machines: input.machines + , templates: input.templates + , workorders: input.workorders + ) + } + + //update function + func save(_ output: Optional.WrappedType, req: Request) -> EventLoopFuture { + return output + .save(on: req.db) + .map{mdlCustomer.Output( + id: output.id! + , number: output.number + , name: output.name + , address: output.address + , address2: output.address2 + , city: output.city + , state: output.state + , zip: output.zip + , phone1: output.phone1 + , phone2: output.phone2 + , fax: output.fax + , isactive: output.isactive + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + , contacts: output.contacts + , machines: output.machines + , templates: output.templates + , workorders: output.workorders + ) + } + } + //create function + func save(_ output: mdlCustomer, _ req: Request, _ input: mdlCustomer.Input) -> EventLoopFuture { + return output + .save(on: req.db) + .map{ + mdlCustomer.Output( + id: output.id! + , number: output.number + , name: output.name + , address: output.address + , address2: output.address2 + , city: output.city + , state: output.state + , zip: output.zip + , phone1: output.phone1 + , phone2: output.phone2 + , fax: output.fax + , isactive: output.isactive + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + , contacts: input.contacts + , machines: input.machines + , templates: input.templates + , workorders: input.workorders + ) + + } + } + +} +extension CustomerCtrl: RouteCollection{ + func boot(routes: RoutesBuilder) throws{ + let apigroup = routes.grouped("customers") + apigroup.get("", use: readAll) + apigroup.get(":id", use: read) + apigroup.post("", use: create) + apigroup.post(":id", use: update) + apigroup.delete(":id", use: delete) + + + } +} diff --git a/Sources/App/Controllers/d/DataTypeCtrl.swift b/Sources/App/Controllers/d/DataTypeCtrl.swift new file mode 100644 index 0000000..c25f81c --- /dev/null +++ b/Sources/App/Controllers/d/DataTypeCtrl.swift @@ -0,0 +1,130 @@ +// +// DataTypeCtrl.swift +// +// +// Created by Michiel Carman on 11/2/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class DataTypeCtrl{ + //Create Unit + func create(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlDataType.Input.self) + let output = self.createUnit(input) + return self.save(output, req, input) + + } + + //Update Unit + func update(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlDataType.Input.self) + return try qbase(req: req).first().unwrap(or: Abort(.notFound)).flatMap{output in self.mapOutput(output, input) + return self.save(output, req: req) + } + } + + //Get all Divisions + func readAll(req: Request) throws -> EventLoopFuture>{ + return try qbase(req: req) + .paginate(for: req) + .map{ + page in page.map{ + self.createRead($0) + } + } + } + //Get 1 Division + func read(req: Request) throws -> EventLoopFuture{ + + return try qbase(req: req).first().unwrap(or: Abort(.internalServerError)).map{self.createRead($0)} + + } + //Delete 1 Division + func delete(req: Request) throws -> EventLoopFuture{ + + guard let id = req.parameters.get("id", as: Int.self) else{ + throw Abort(.badRequest) + } + return mdlDataType.find(id, on: req.db).unwrap(or: Abort(.notFound)).flatMap{ $0.delete(on: req.db)}.map{.ok} + } + +} + +extension DataTypeCtrl{ + //Query Settings + func qbase(req: Request) throws -> QueryBuilder { + let query = mdlDataType.query(on: req.db).with(\.$units) + if let id = req.parameters.get("id", as: Int.self){ + return query.filter(\.$id == id) + } else{ + return query + } + } + //create Output + func createRead(_ output: mdlDataType) -> mdlDataType.Output { + return mdlDataType.Output( + id: output.id! + , name: output.name + , description: output.description + , units: output.$units.value! + ) + } + + func mapOutput(_ output: Optional.WrappedType, _ input: mdlDataType.Input){ + output.name = input.name; + output.description = input.description; + output.$units.value = input.units + } + + func createUnit(_ input: mdlDataType.Input) -> mdlDataType { + return mdlDataType( + id: input.id ?? nil + , name: input.name + , description: input.description + , units: input.units + ) + } + + //update function + func save(_ output: Optional.WrappedType, req: Request) -> EventLoopFuture { + return output + .save(on: req.db) + .map{mdlDataType.Output( + id: output.id! + , name: output.name + , description: output.description + , units: output.units + ) + } + } + //create function + func save(_ output: mdlDataType, _ req: Request, _ input: mdlDataType.Input) -> EventLoopFuture { + return output + .save(on: req.db) + .map{ + mdlDataType.Output( + id: output.id! + , name: input.name + , description: input.description + , units: input.units + ) + } + } + + } + extension DataTypeCtrl: RouteCollection{ + func boot(routes: RoutesBuilder) throws{ + let apigroup = routes.grouped("datatypes") + apigroup.get("", use: readAll) + apigroup.get(":id", use: read) + apigroup.post("", use: create) + apigroup.post(":id", use: update) + apigroup.delete(":id", use: delete) + + + } + } diff --git a/Sources/App/Controllers/d/DivisionCtrl.swift b/Sources/App/Controllers/d/DivisionCtrl.swift new file mode 100644 index 0000000..a64fe13 --- /dev/null +++ b/Sources/App/Controllers/d/DivisionCtrl.swift @@ -0,0 +1,157 @@ +// +// Division.swift +// +// +// Created by Michiel Carman on 11/2/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class DivisionCtrl{ + //Create Unit + func create(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlDivision.Input.self) + let output = self.createUnit(input) + return self.save(output, req, input) + + } + + //Update Unit + func update(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlDivision.Input.self) + return try qbase(req: req).first().unwrap(or: Abort(.notFound)).flatMap{output in self.mapOutput(output, input) + return self.save(output, req: req) + } + } + + //Get all Divisions + func readAll(req: Request) throws -> EventLoopFuture>{ + return try qbase(req: req) + .paginate(for: req) + .map{ + page in page.map{ + self.createRead($0) + } + } + } + //Get 1 Division + func read(req: Request) throws -> EventLoopFuture{ + + return try qbase(req: req).first().unwrap(or: Abort(.internalServerError)).map{self.createRead($0)} + + } + //Delete 1 Division + func delete(req: Request) throws -> EventLoopFuture{ + + guard let id = req.parameters.get("id", as: Int.self) else{ + throw Abort(.badRequest) + } + return mdlDivision.find(id, on: req.db).unwrap(or: Abort(.notFound)).flatMap{ $0.delete(on: req.db)}.map{.ok} + } + +} + +extension DivisionCtrl{ + //Query Settings + func qbase(req: Request) throws -> QueryBuilder { + let query = mdlDivision.query(on: req.db).with(\.$users) + if let id = req.parameters.get("id", as: Int.self){ + return query.filter(\.$id == id) + } else{ + return query + } + } + //create Output + func createRead(_ output: mdlDivision) -> mdlDivision.Output { + return mdlDivision.Output( + id: output.id!, + name: output.name, + description: output.description, + isactive: output.isactive, + createdate: output.createdate, + createuserid: output.createuserid, + updatedate: output.updatedate, + updateuserid: output.updateuserid, + users: output.$users.value! + ) + } + + func mapOutput(_ output: Optional.WrappedType, _ input: mdlDivision.Input){ + output.name = input.name; + output.description = input.description; + output.isactive = input.isactive; + output.createdate = input.createdate; + output.updatedate = input.updatedate; + output.createuserid = input.createuserid; + output.updateuserid = input.updateuserid; + output.$users.value = input.users + } + + func createUnit(_ input: mdlDivision.Input) -> mdlDivision { + return mdlDivision( + id: input.id ?? nil + , name: input.name + , description: input.description + , isactive: input.isactive + , createuserid: input.createuserid ?? -1 + , createdate: input.createdate + , updateuserid: input.updateuserid ?? -1 + , updatedate: input.updatedate + , users: input.users + ) + } + + //update function + func save(_ output: Optional.WrappedType, req: Request) -> EventLoopFuture { + return output + .save(on: req.db) + .map{mdlDivision.Output( + id: output.id! + , name: output.name + , description: output.description + , isactive: output.isactive + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + , users: output.users + ) + } + } + //create function + func save(_ output: mdlDivision, _ req: Request, _ input: mdlDivision.Input) -> EventLoopFuture { + return output + .save(on: req.db) + .map{ + mdlDivision.Output( + id: output.id! + , name: output.name + , description: output.description + , isactive: output.isactive + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + , users: output.users + ) + + } + } + +} + extension DivisionCtrl: RouteCollection{ + func boot(routes: RoutesBuilder) throws{ + let apigroup = routes.grouped("divisions") + apigroup.get("", use: readAll) + apigroup.get(":id", use: read) + apigroup.post("", use: create) + apigroup.post(":id", use: update) + apigroup.delete(":id", use: delete) + + + } + } + diff --git a/Sources/App/Controllers/f/FileCtrl.swift b/Sources/App/Controllers/f/FileCtrl.swift new file mode 100644 index 0000000..1cc2f7a --- /dev/null +++ b/Sources/App/Controllers/f/FileCtrl.swift @@ -0,0 +1,181 @@ +// +// FileCtrl.swift +// +// +// Created by Michiel Carman on 11/12/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver +import AppKit + +final class FileCtrl{ + //Create Unit + func create(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlFile.Input.self) + let output = self.createUnit(input) + return self.save(output, req, input) + + } + + //Update Unit + func update(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlFile.Input.self) + return try qbase(req: req).first().unwrap(or: Abort(.notFound)).flatMap{output in self.mapOutput(output, input) + return self.save(output, req: req) + } + } + + //Get all Divisions + func readAll(req: Request) throws -> EventLoopFuture>{ + return try qbase(req: req) + .paginate(for: req) + .map{ + page in page.map{ + self.createRead($0) + } + } + } + //Get 1 Division + func read(req: Request) throws -> EventLoopFuture{ + + return try qbase(req: req).first().unwrap(or: Abort(.internalServerError)).map{self.createRead($0)} + + } + //Delete 1 Division + func delete(req: Request) throws -> EventLoopFuture{ + + guard let id = req.parameters.get("id", as: Int.self) else{ + throw Abort(.badRequest) + } + return mdlFile.find(id, on: req.db).unwrap(or: Abort(.notFound)).flatMap{ $0.delete(on: req.db)}.map{.ok} + } + +} +extension FileCtrl{ + //Query Settings + func qbase(req: Request) throws -> QueryBuilder { + let query = mdlFile.query(on: req.db) + .with(\.$workorder) + .with(\.$inspectioncategoryitem) + .with(\.$contact) + if let id = req.parameters.get("id", as: Int.self){ + return query.filter(\.$id == id) + } else{ + return query + } + } + + //create Output + func createRead(_ output: mdlFile) -> mdlFile.Output { + return mdlFile.Output( + id: output.id! + , name: output.name + , filepath: output.filepath + , filedata: String() + + , filetype: output.filetype + , fileextension: output.fileextension + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + , workorder: output.$workorder.value! + , inspectioncategoryitem: output.$inspectioncategoryitem.value! + , contact: output.$contact.value! + ) + } + + func mapOutput(_ output: Optional.WrappedType, _ input: mdlFile.Input){ + output.name = input.name; + output.filepath = input.filepath; + output.filetype = input.filetype; + + output.fileextension = input.fileextension; + output.createdate = input.createdate; + output.updatedate = input.updatedate; + output.createuserid = input.createuserid; + output.updateuserid = input.updateuserid; + output.$workorder.id = input.workorder.id!; + output.$inspectioncategoryitem.id = input.inspectioncategoryitem.id!; + output.$contact.id = input.contact.id!; + } + + func createUnit(_ input: mdlFile.Input) -> mdlFile { + return mdlFile( + id: input.id ?? nil + , name: input.name + , filepath: input.filepath + , filedata: input.filedata + , filetype: input.filetype + , fileextension: input.fileextension + , createuserid: input.createuserid ?? -1 + , createdate: input.createdate + , updateuserid: input.updateuserid ?? -1 + , updatedate: input.updatedate + , workorder: input.workorder + , inspectioncategoryitem: input.inspectioncategoryitem + , contact: input.contact + ) + } + + //update function + func save(_ output: Optional.WrappedType, req: Request) -> EventLoopFuture { + return output + .save(on: req.db) + .map{mdlFile.Output( + id: output.id! + , name: output.name + , filepath: output.filepath + , filedata: String() + , filetype: output.filetype + , fileextension: output.fileextension + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + , workorder: output.workorder + , inspectioncategoryitem: output.inspectioncategoryitem + , contact: output.contact + ) + } + } + //create function + func save(_ output: mdlFile, _ req: Request, _ input: mdlFile.Input) -> EventLoopFuture { + return output + .save(on: req.db) + .map{ + mdlFile.Output( + id: output.id! + , name: output.name + , filepath: output.filepath + , filedata: input.filedata + , filetype: output.filetype + , fileextension: output.fileextension + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + , workorder: input.workorder + , inspectioncategoryitem: input.inspectioncategoryitem + , contact: input.contact + ) + + } + } + +} +extension FileCtrl: RouteCollection{ + func boot(routes: RoutesBuilder) throws{ + let apigroup = routes.grouped("files") + apigroup.get("", use: readAll) + apigroup.get(":id", use: read) + apigroup.post("", use: create) + apigroup.post(":id", use: update) + apigroup.delete(":id", use: delete) + + + } +} diff --git a/Sources/App/Controllers/f/FluidCtrl.swift b/Sources/App/Controllers/f/FluidCtrl.swift new file mode 100644 index 0000000..1e14f76 --- /dev/null +++ b/Sources/App/Controllers/f/FluidCtrl.swift @@ -0,0 +1,160 @@ +// +// FluidCtrl.swift +// +// +// Created by Michiel Carman on 11/9/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class FluidCtrl{ + //Create Unit + func create(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlFluid.Input.self) + let output = self.createUnit(input) + return self.save(output, req, input) + + } + + //Update Unit + func update(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlFluid.Input.self) + return try qbase(req: req).first().unwrap(or: Abort(.notFound)).flatMap{output in self.mapOutput(output, input) + return self.save(output, req: req) + } + } + + //Get all Divisions + func readAll(req: Request) throws -> EventLoopFuture>{ + return try qbase(req: req) + .paginate(for: req) + .map{ + page in page.map{ + self.createRead($0) + } + } + } + //Get 1 Division + func read(req: Request) throws -> EventLoopFuture{ + + return try qbase(req: req).first().unwrap(or: Abort(.internalServerError)).map{self.createRead($0)} + + } + //Delete 1 Division + func delete(req: Request) throws -> EventLoopFuture{ + + guard let id = req.parameters.get("id", as: Int.self) else{ + throw Abort(.badRequest) + } + return mdlFluid.find(id, on: req.db).unwrap(or: Abort(.notFound)).flatMap{ $0.delete(on: req.db)}.map{.ok} + } + +} +extension FluidCtrl{ + //Query Settings + func qbase(req: Request) throws -> QueryBuilder { + let query = mdlFluid.query(on: req.db).with(\.$viscosities) + if let id = req.parameters.get("id", as: Int.self){ + return query.filter(\.$id == id) + } else{ + return query + } + } + //create Output + func createRead(_ output: mdlFluid) -> mdlFluid.Output { + return mdlFluid.Output( + id: output.id!, + name: output.name, + description: output.description, + sortoder: output.sortorder, + isactive: output.isactive, + createdate: output.createdate, + createuserid: output.createuserid, + updatedate: output.updatedate, + updateuserid: output.updateuserid, + viscosities: output.$viscosities.value! + ) + } + + func mapOutput(_ output: Optional.WrappedType, _ input: mdlFluid.Input){ + output.name = input.name; + output.description = input.description; + output.sortorder = input.sortoder; + output.isactive = input.isactive; + output.createdate = input.createdate; + output.updatedate = input.updatedate; + output.createuserid = input.createuserid; + output.updateuserid = input.updateuserid; + output.$viscosities.value = input.viscosities + } + + func createUnit(_ input: mdlFluid.Input) -> mdlFluid { + return mdlFluid( + id: input.id ?? nil + , name: input.name + , description: input.description + , sortorder: input.sortoder + , isactive: input.isactive + , createuserid: input.createuserid ?? -1 + , createdate: input.createdate + , updateuserid: input.updateuserid ?? -1 + , updatedate: input.updatedate + , viscosities: input.viscosities + ) + } + + //update function + func save(_ output: Optional.WrappedType, req: Request) -> EventLoopFuture { + return output + .save(on: req.db) + .map{mdlFluid.Output( + id: output.id! + , name: output.name + , description: output.description + , sortoder: output.sortorder + , isactive: output.isactive + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + , viscosities: output.viscosities + ) + } + } + //create function + func save(_ output: mdlFluid, _ req: Request, _ input: mdlFluid.Input) -> EventLoopFuture { + return output + .save(on: req.db) + .map{ + mdlFluid.Output( + id: output.id! + , name: output.name + , description: output.description + , sortoder: output.sortorder + , isactive: output.isactive + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + , viscosities: input.viscosities + ) + + } + } + +} +extension FluidCtrl: RouteCollection{ + func boot(routes: RoutesBuilder) throws{ + let apigroup = routes.grouped("fluids") + apigroup.get("", use: readAll) + apigroup.get(":id", use: read) + apigroup.post("", use: create) + apigroup.post(":id", use: update) + apigroup.delete(":id", use: delete) + + + } +} diff --git a/Sources/App/Controllers/f/FuelLevelCtrl.swift b/Sources/App/Controllers/f/FuelLevelCtrl.swift new file mode 100644 index 0000000..c3e41b7 --- /dev/null +++ b/Sources/App/Controllers/f/FuelLevelCtrl.swift @@ -0,0 +1,155 @@ +// +// FuelLevelCtrl.swift +// +// +// Created by Michiel Carman on 11/4/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class FuelLevelCtrl{ + //Create Unit + func create(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlFuelLevel.Input.self) + let output = self.createUnit(input) + return self.save(output, req, input) + + } + + //Update Unit + func update(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlFuelLevel.Input.self) + return try qbase(req: req).first().unwrap(or: Abort(.notFound)).flatMap{output in self.mapOutput(output, input) + return self.save(output, req: req) + } + } + + //Get all Divisions + func readAll(req: Request) throws -> EventLoopFuture>{ + return try qbase(req: req) + .paginate(for: req) + .map{ + page in page.map{ + self.createRead($0) + } + } + } + //Get 1 Division + func read(req: Request) throws -> EventLoopFuture{ + + return try qbase(req: req).first().unwrap(or: Abort(.internalServerError)).map{self.createRead($0)} + + } + //Delete 1 Division + func delete(req: Request) throws -> EventLoopFuture{ + + guard let id = req.parameters.get("id", as: Int.self) else{ + throw Abort(.badRequest) + } + return mdlFuelLevel.find(id, on: req.db).unwrap(or: Abort(.notFound)).flatMap{ $0.delete(on: req.db)}.map{.ok} + } + +} +extension FuelLevelCtrl{ + //Query Settings + func qbase(req: Request) throws -> QueryBuilder { + let query = mdlFuelLevel.query(on: req.db) + if let id = req.parameters.get("id", as: Int.self){ + return query.filter(\.$id == id) + } else{ + return query + } + } + //create Output + func createRead(_ output: mdlFuelLevel) -> mdlFuelLevel.Output { + return mdlFuelLevel.Output( + id: output.id!, + name: output.name, + description: output.description, + isactive: output.isactive, + sortorder: output.sortorder, + createdate: output.createdate, + createuserid: output.createuserid, + updatedate: output.updatedate, + updateuserid: output.updateuserid + ) + } + + func mapOutput(_ output: Optional.WrappedType, _ input: mdlFuelLevel.Input){ + output.name = input.name; + output.description = input.description; + output.sortorder = input.sortorder; + output.isactive = input.isactive; + output.createdate = input.createdate; + output.updatedate = input.updatedate; + output.createuserid = input.createuserid; + output.updateuserid = input.updateuserid; + } + + func createUnit(_ input: mdlFuelLevel.Input) -> mdlFuelLevel { + return mdlFuelLevel( + id: input.id ?? nil + , name: input.name + , description: input.description + , isactive: input.isactive + , sortorder: input.sortorder + , createuserid: input.createuserid ?? -1 + , createdate: input.createdate + , updateuserid: input.updateuserid ?? -1 + , updatedate: input.updatedate + ) + } + + //update function + func save(_ output: Optional.WrappedType, req: Request) -> EventLoopFuture { + return output + .save(on: req.db) + .map{mdlFuelLevel.Output( + id: output.id! + , name: output.name + , description: output.description + , isactive: output.isactive + , sortorder: output.sortorder + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + ) + } + } + //create function + func save(_ output: mdlFuelLevel, _ req: Request, _ input: mdlFuelLevel.Input) -> EventLoopFuture { + return output + .save(on: req.db) + .map{ + mdlFuelLevel.Output( + id: output.id! + , name: output.name + , description: output.description + , isactive: output.isactive + , sortorder: output.sortorder + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + ) + + } + } + +} +extension FuelLevelCtrl: RouteCollection{ + func boot(routes: RoutesBuilder) throws{ + let apigroup = routes.grouped("fuellevels") + apigroup.get("", use: readAll) + apigroup.get(":id", use: read) + apigroup.post("", use: create) + apigroup.post(":id", use: update) + apigroup.delete(":id", use: delete) + + + } +} diff --git a/Sources/App/Controllers/g/GateCtrl.swift b/Sources/App/Controllers/g/GateCtrl.swift new file mode 100644 index 0000000..2b031b0 --- /dev/null +++ b/Sources/App/Controllers/g/GateCtrl.swift @@ -0,0 +1,104 @@ +// +// File.swift +// +// +// Created by Michiel Carman on 11/2/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class GateCtrl{ + //Create Division + func create(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlGate.Input.self) + let output = buildObj(input) + return output.save(on: req.db).map{ + self.buildObj(output) + } + } + //Update Division + func update(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlGate.Input.self) + return try qbase(req: req).first().unwrap(or: Abort(.internalServerError)).flatMap{output in self.buildObj(output, input) + return self.save(output, req) + } + } + + //Get all Divisions + func readAll(req: Request) throws -> EventLoopFuture>{ + return try qbase(req: req) + .paginate(for: req) + .map{ + page in page.map{ + self.buildObj($0) + } + } + } + //Get 1 Division + func read(req: Request) throws -> EventLoopFuture{ + + return try qbase(req: req).first().unwrap(or: Abort(.internalServerError)).map{self.buildObj($0)} + + } + //Delete 1 Division + func delete(req: Request) throws -> EventLoopFuture{ + + guard let id = req.parameters.get("id", as: Int.self) else{ + throw Abort(.badRequest) + } + return mdlGate.find(id, on: req.db).unwrap(or: Abort(.notFound)).flatMap{ $0.delete(on: req.db)}.map{.ok} + } + +} + +extension GateCtrl{ + //Query Settings + func qbase(req: Request) throws -> QueryBuilder { + let query = mdlGate.query(on: req.db).with(\.$location) + if let id = req.parameters.get("id", as: Int.self){ + return query.filter(\.$id == id) + } else{ + return query + } + } + //create Input + func buildObj(_ input: mdlGate.Input) -> mdlGate { + return mdlGate(name: input.name, description: input.description, sortorder: input.sortorder, isactive: input.isactive, createuserid: input.createuserid, createdate: input.createdate, updateuserid: input.updateuserid, updatedate: input.updatedate, location: input.location) + } + //create Output + func buildObj(_ output: mdlGate) -> mdlGate.Output { + return mdlGate.Output(id: output.id!, name: output.name, description: output.description, sortorder: output.sortorder, isactive: output.isactive, createdate: output.createdate, createuserid: output.createuserid, updatedate: output.updatedate, updateuserid: output.updateuserid, location: output.location) + } + + func buildObj(_ output: Optional.WrappedType, _ input: mdlGate.Input){ + output.name = input.name; + output.description = input.description; + output.sortorder = input.sortorder; + output.isactive = input.isactive; + output.createdate = input.createdate; + output.createuserid = input.createuserid; + output.updatedate = input.updatedate; + output.updateuserid = input.updateuserid; + output.location = input.location; + } + + func save(_ output: mdlGate, _ req: Request) -> EventLoopFuture{ + return output.save(on: req.db).map{self.buildObj(output)} + } + +} +extension GateCtrl: RouteCollection{ + func boot(routes: RoutesBuilder) throws{ + let apigroup = routes.grouped("gates") + apigroup.get("", use: readAll) + apigroup.get(":id", use: read) + apigroup.post("", use: create) + apigroup.post(":id", use: update) + apigroup.delete(":id", use: delete) + + + } +} diff --git a/Sources/App/Controllers/i/IncompleteReasonCtrl.swift b/Sources/App/Controllers/i/IncompleteReasonCtrl.swift new file mode 100644 index 0000000..d40f627 --- /dev/null +++ b/Sources/App/Controllers/i/IncompleteReasonCtrl.swift @@ -0,0 +1,155 @@ +// +// IncompleteReasonCtrl.swift +// +// +// Created by Michiel Carman on 11/5/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class IncompleteReasonCtrl{ + //Create Unit + func create(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlIncompleteReason.Input.self) + let output = self.createUnit(input) + return self.save(output, req, input) + + } + + //Update Unit + func update(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlIncompleteReason.Input.self) + return try qbase(req: req).first().unwrap(or: Abort(.notFound)).flatMap{output in self.mapOutput(output, input) + return self.save(output, req: req) + } + } + + //Get all Divisions + func readAll(req: Request) throws -> EventLoopFuture>{ + return try qbase(req: req) + .paginate(for: req) + .map{ + page in page.map{ + self.createRead($0) + } + } + } + //Get 1 Division + func read(req: Request) throws -> EventLoopFuture{ + + return try qbase(req: req).first().unwrap(or: Abort(.internalServerError)).map{self.createRead($0)} + + } + //Delete 1 Division + func delete(req: Request) throws -> EventLoopFuture{ + + guard let id = req.parameters.get("id", as: Int.self) else{ + throw Abort(.badRequest) + } + return mdlIncompleteReason.find(id, on: req.db).unwrap(or: Abort(.notFound)).flatMap{ $0.delete(on: req.db)}.map{.ok} + } + +} +extension IncompleteReasonCtrl{ + //Query Settings + func qbase(req: Request) throws -> QueryBuilder { + let query = mdlIncompleteReason.query(on: req.db).with(\.$workorders) + if let id = req.parameters.get("id", as: Int.self){ + return query.filter(\.$id == id) + } else{ + return query + } + } + //create Output + func createRead(_ output: mdlIncompleteReason) -> mdlIncompleteReason.Output { + return mdlIncompleteReason.Output( + id: output.id!, + name: output.name, + description: output.description, + isactive: output.isactive, + createdate: output.createdate, + createuserid: output.createuserid, + updatedate: output.updatedate, + updateuserid: output.updateuserid, + workorders: output.$workorders.value! + ) + } + + func mapOutput(_ output: Optional.WrappedType, _ input: mdlIncompleteReason.Input){ + output.name = input.name; + output.description = input.description; + output.isactive = input.isactive; + output.createdate = input.createdate; + output.updatedate = input.updatedate; + output.createuserid = input.createuserid; + output.updateuserid = input.updateuserid; + output.$workorders.value = input.workorders + } + + func createUnit(_ input: mdlIncompleteReason.Input) -> mdlIncompleteReason { + return mdlIncompleteReason( + id: input.id ?? nil + , name: input.name + , description: input.description + , isactive: input.isactive + , createuserid: input.createuserid ?? -1 + , createdate: input.createdate + , updateuserid: input.updateuserid ?? -1 + , updatedate: input.updatedate + , workorders: input.workorders + ) + } + + //update function + func save(_ output: Optional.WrappedType, req: Request) -> EventLoopFuture { + return output + .save(on: req.db) + .map{mdlIncompleteReason.Output( + id: output.id! + , name: output.name + , description: output.description + , isactive: output.isactive + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + , workorders: output.workorders + ) + } + } + //create function + func save(_ output: mdlIncompleteReason, _ req: Request, _ input: mdlIncompleteReason.Input) -> EventLoopFuture { + return output + .save(on: req.db) + .map{ + mdlIncompleteReason.Output( + id: output.id! + , name: output.name + , description: output.description + , isactive: output.isactive + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + , workorders: input.workorders + ) + + } + } + +} +extension IncompleteReasonCtrl: RouteCollection{ + func boot(routes: RoutesBuilder) throws{ + let apigroup = routes.grouped("incompletereaseons") + apigroup.get("", use: readAll) + apigroup.get(":id", use: read) + apigroup.post("", use: create) + apigroup.post(":id", use: update) + apigroup.delete(":id", use: delete) + + + } +} diff --git a/Sources/App/Controllers/i/InputTypeCtrl.swift b/Sources/App/Controllers/i/InputTypeCtrl.swift new file mode 100644 index 0000000..2c9d248 --- /dev/null +++ b/Sources/App/Controllers/i/InputTypeCtrl.swift @@ -0,0 +1,130 @@ +// +// InputTypeCtrl.swift +// +// +// Created by Michiel Carman on 11/4/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class InputTypeCtrl{ + //Create Unit + func create(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlInputType.Input.self) + let output = self.createUnit(input) + return self.save(output, req, input) + + } + + //Update Unit + func update(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlInputType.Input.self) + return try qbase(req: req).first().unwrap(or: Abort(.notFound)).flatMap{output in self.mapOutput(output, input) + return self.save(output, req: req) + } + } + + //Get all Divisions + func readAll(req: Request) throws -> EventLoopFuture>{ + return try qbase(req: req) + .paginate(for: req) + .map{ + page in page.map{ + self.createRead($0) + } + } + } + //Get 1 Division + func read(req: Request) throws -> EventLoopFuture{ + + return try qbase(req: req).first().unwrap(or: Abort(.internalServerError)).map{self.createRead($0)} + + } + //Delete 1 Division + func delete(req: Request) throws -> EventLoopFuture{ + + guard let id = req.parameters.get("id", as: Int.self) else{ + throw Abort(.badRequest) + } + return mdlInputType.find(id, on: req.db).unwrap(or: Abort(.notFound)).flatMap{ $0.delete(on: req.db)}.map{.ok} + } + +} +extension InputTypeCtrl{ + //Query Settings + func qbase(req: Request) throws -> QueryBuilder { + let query = mdlInputType.query(on: req.db).with(\.$items).with(\.$inspectioncategoryitems) + if let id = req.parameters.get("id", as: Int.self){ + return query.filter(\.$id == id) + } else{ + return query + } + } + //create Output + func createRead(_ output: mdlInputType) -> mdlInputType.Output { + return mdlInputType.Output( + id: output.id!, + name: output.name, + items: output.$items.value!, + inspectioncategoryitems: output.$inspectioncategoryitems.value! + ) + } + + func mapOutput(_ output: Optional.WrappedType, _ input: mdlInputType.Input){ + output.name = input.name; + output.$items.value = input.items!; + output.$inspectioncategoryitems.value = input.inspectioncategoryitems! + } + + func createUnit(_ input: mdlInputType.Input) -> mdlInputType { + return mdlInputType( + id: input.id ?? nil + , name: input.name + , items: input.items + , inspectioncategoryitems: input.inspectioncategoryitems + ) + } + + //update function + func save(_ output: Optional.WrappedType, req: Request) -> EventLoopFuture { + return output + .save(on: req.db) + .map{mdlInputType.Output( + id: output.id! + , name: output.name + , items: output.items + , inspectioncategoryitems: output.inspectioncategoryitems + ) + } + } + //create function + func save(_ output: mdlInputType, _ req: Request, _ input: mdlInputType.Input) -> EventLoopFuture { + return output + .save(on: req.db) + .map{ + mdlInputType.Output( + id: output.id! + , name: output.name + , items: input.items + , inspectioncategoryitems: input.inspectioncategoryitems + ) + + } + } + +} +extension InputTypeCtrl: RouteCollection{ + func boot(routes: RoutesBuilder) throws{ + let apigroup = routes.grouped("inputtypes") + apigroup.get("", use: readAll) + apigroup.get(":id", use: read) + apigroup.post("", use: create) + apigroup.post(":id", use: update) + apigroup.delete(":id", use: delete) + + + } +} diff --git a/Sources/App/Controllers/i/InspectionCategoryCtrl.swift b/Sources/App/Controllers/i/InspectionCategoryCtrl.swift new file mode 100644 index 0000000..70bab28 --- /dev/null +++ b/Sources/App/Controllers/i/InspectionCategoryCtrl.swift @@ -0,0 +1,170 @@ +// +// InspectionCategoryCtrl.swift +// +// +// Created by Michiel Carman on 11/10/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class InspectionCategoryCtrl{ + //Create Unit + func create(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlInspectionCategory.Input.self) + let output = self.createUnit(input) + return self.save(output, req, input) + + } + + //Update Unit + func update(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlInspectionCategory.Input.self) + return try qbase(req: req).first().unwrap(or: Abort(.notFound)).flatMap{output in self.mapOutput(output, input) + return self.save(output, req: req) + } + } + + //Get all Divisions + func readAll(req: Request) throws -> EventLoopFuture>{ + return try qbase(req: req) + .paginate(for: req) + .map{ + page in page.map{ + self.createRead($0) + } + } + } + //Get 1 Division + func read(req: Request) throws -> EventLoopFuture{ + + return try qbase(req: req).first().unwrap(or: Abort(.internalServerError)).map{self.createRead($0)} + + } + //Delete 1 Division + func delete(req: Request) throws -> EventLoopFuture{ + + guard let id = req.parameters.get("id", as: Int.self) else{ + throw Abort(.badRequest) + } + return mdlInspectionCategory.find(id, on: req.db).unwrap(or: Abort(.notFound)).flatMap{ $0.delete(on: req.db)}.map{.ok} + } + +} +extension InspectionCategoryCtrl{ + //Query Settings + func qbase(req: Request) throws -> QueryBuilder { + let query = mdlInspectionCategory.query(on: req.db).with(\.$inspection).with(\.$inspectioncategoryitems) + if let id = req.parameters.get("id", as: Int.self){ + return query.filter(\.$id == id) + } else{ + return query + } + } + //create Output + func createRead(_ output: mdlInspectionCategory) -> mdlInspectionCategory.Output { + return mdlInspectionCategory.Output( + id: output.id!, + summary: output.summary, + sortorder: output.sortorder, + categoryname: output.categoryname, + categorydesription: output.categorydescription, + isactive: output.isactive, + createdate: output.createdate, + createuserid: output.createuserid, + updatedate: output.updatedate, + updateuserid: output.updateuserid, + inspection: output.$inspection.value!, + inspectioncategoryitems: output.$inspectioncategoryitems.value! + ) + } + + func mapOutput(_ output: Optional.WrappedType, _ input: mdlInspectionCategory.Input){ + output.summary = input.summary; + output.sortorder = input.sortorder; + output.categoryname = input.categoryname; + output.categorydescription = input.categorydesription; + output.isactive = input.isactive; + output.createdate = input.createdate; + output.updatedate = input.updatedate; + output.createuserid = input.createuserid; + output.updateuserid = input.updateuserid; + output.$inspection.id = input.inspection.id!; + output.$inspectioncategoryitems.value = input.inspectioncategoryitems! + } + + func createUnit(_ input: mdlInspectionCategory.Input) -> mdlInspectionCategory { + return mdlInspectionCategory( + id: input.id ?? nil + , summary: input.summary + , sortorder: input.sortorder + , categoryname: input.categoryname + , categorydescription: input.categorydesription + , isactive: input.isactive + , createuserid: input.createuserid ?? -1 + , createdate: input.createdate + , updateuserid: input.updateuserid ?? -1 + , updatedate: input.updatedate + , inspection: input.inspection + , inspectioncategoyitems: input.inspectioncategoryitems + ) + } + + //update function + func save(_ output: Optional.WrappedType, req: Request) -> EventLoopFuture { + return output + .save(on: req.db) + .map{mdlInspectionCategory.Output( + id: output.id! + , summary: output.summary + , sortorder: output.sortorder + , categoryname: output.categoryname + , categorydesription: output.categorydescription + , isactive: output.isactive + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + , inspection: output.inspection + , inspectioncategoryitems: output.inspectioncategoryitems + ) + } + } + //create function + func save(_ output: mdlInspectionCategory, _ req: Request, _ input: mdlInspectionCategory.Input) -> EventLoopFuture { + return output + .save(on: req.db) + .map{ + mdlInspectionCategory.Output( + id: output.id! + , summary: output.summary + , sortorder: output.sortorder + , categoryname: output.categoryname + , categorydesription: output.categorydescription + , isactive: output.isactive + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + , inspection: input.inspection + , inspectioncategoryitems: input.inspectioncategoryitems + ) + + } + } + +} +extension InspectionCategoryCtrl: RouteCollection{ + func boot(routes: RoutesBuilder) throws{ + let apigroup = routes.grouped("inspectioncategories") + apigroup.get("", use: readAll) + apigroup.get(":id", use: read) + apigroup.post("", use: create) + apigroup.post(":id", use: update) + apigroup.delete(":id", use: delete) + + + } +} diff --git a/Sources/App/Controllers/i/InspectionCategoryItemCtrl.swift b/Sources/App/Controllers/i/InspectionCategoryItemCtrl.swift new file mode 100644 index 0000000..c5e140c --- /dev/null +++ b/Sources/App/Controllers/i/InspectionCategoryItemCtrl.swift @@ -0,0 +1,217 @@ +// +// InspectionCategoryItemCtrl.swift +// +// +// Created by Michiel Carman on 11/10/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver +import AppKit + +final class InspectionCategoryItemCtrl{ + //Create Unit + func create(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlInspectionCategoryItem.Input.self) + let output = self.createUnit(input) + return self.save(output, req, input) + + } + + //Update Unit + func update(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlInspectionCategoryItem.Input.self) + return try qbase(req: req).first().unwrap(or: Abort(.notFound)).flatMap{output in self.mapOutput(output, input) + return self.save(output, req: req) + } + } + + //Get all Divisions + func readAll(req: Request) throws -> EventLoopFuture>{ + return try qbase(req: req) + .paginate(for: req) + .map{ + page in page.map{ + self.createRead($0) + } + } + } + //Get 1 Division + func read(req: Request) throws -> EventLoopFuture{ + + return try qbase(req: req).first().unwrap(or: Abort(.internalServerError)).map{self.createRead($0)} + + } + //Delete 1 Division + func delete(req: Request) throws -> EventLoopFuture{ + + guard let id = req.parameters.get("id", as: Int.self) else{ + throw Abort(.badRequest) + } + return mdlInspectionCategoryItem.find(id, on: req.db).unwrap(or: Abort(.notFound)).flatMap{ $0.delete(on: req.db)}.map{.ok} + } + +} +extension InspectionCategoryItemCtrl{ + //Query Settings + func qbase(req: Request) throws -> QueryBuilder { + let query = mdlInspectionCategoryItem.query(on: req.db) + .with(\.$item) + .with(\.$inspectioncategory) + .with(\.$userdefinedcode) + .with(\.$inputtype) + .with(\.$currentitem) + .with(\.$parent) + .with(\.$inspectioncategoryitems) + .with(\.$inspectioncategoryitemresponsetypes) + .with(\.$inspectioncategoryitemspecs) + .with(\.$notes) + .with(\.$files) + if let id = req.parameters.get("id", as: Int.self){ + return query.filter(\.$id == id) + } else{ + return query + } + } + //create Output + func createRead(_ output: mdlInspectionCategoryItem) -> mdlInspectionCategoryItem.Output { + return mdlInspectionCategoryItem.Output( + id: output.id!, + name: output.name, + description: output.description, + sortorder: output.sortorder, + createdate: output.createdate, + createuserid: output.createuserid, + updatedate: output.updatedate, + updateuserid: output.updateuserid, + item: output.$item.value!, + inspectioncategory: output.$inspectioncategory.value!, + userdefinedcode: output.$userdefinedcode.value!, + inputtype: output.$inputtype.value!, + currentitem: output.$currentitem.value!, + parent: output.$parent.value!, + inspectioncategoryitems: output.$inspectioncategoryitems.value!, + inspectioncategoryitemresponsetypes: output.$inspectioncategoryitemresponsetypes.value!, + inspectioncategoryitemspecs: output.$inspectioncategoryitemspecs.value!, + notes: output.$notes.value!, + files: output.$files.value! + ) + } + + func mapOutput(_ output: Optional.WrappedType, _ input: mdlInspectionCategoryItem.Input){ + output.name = input.name; + output.description = input.description; + output.sortorder = input.sortorder; + output.createdate = input.createdate; + output.updatedate = input.updatedate; + output.createuserid = input.createuserid; + output.updateuserid = input.updateuserid; + output.$item.id = input.item.id!; + output.$inspectioncategory.id = input.inspectioncategory.id!; + output.$userdefinedcode.id = input.userdefinedcode.id!; + output.$inputtype.id = input.inputtype.id!; + output.$currentitem.id = input.currentitem.id!; + output.$parent.id = input.parent.id!; + output.$inspectioncategoryitems.value = input.inspectioncategoryitems; + output.$inspectioncategoryitemresponsetypes.value = input.inspectioncategoryitemresponsetypes; + output.$inspectioncategoryitemspecs.value = input.inspectioncategoryitemspecs; + output.$notes.value = input.notes; + output.$files.value = input.files; + } + + func createUnit(_ input: mdlInspectionCategoryItem.Input) -> mdlInspectionCategoryItem { + return mdlInspectionCategoryItem( + id: input.id ?? nil + , name: input.name + , description: input.description + , sortorder: input.sortorder + , createuserid: input.createuserid ?? -1 + , createdate: input.createdate + , updateuserid: input.updateuserid ?? -1 + , updatedate: input.updatedate + , item: input.item + , inspectioncategory: input.inspectioncategory + , userdefinedcode: input.userdefinedcode + , inputtype: input.inputtype + , currentitem: input.currentitem + , parent: input.parent + , inspectioncategoryitems: input.inspectioncategoryitems + , inspectioncategoryitemresponsetypes: input.inspectioncategoryitemresponsetypes + , inspectioncategoryitemspecs: input.inspectioncategoryitemspecs + , notes: input.notes + , files: input.files + ) + } + + //update function + func save(_ output: Optional.WrappedType, req: Request) -> EventLoopFuture { + return output + .save(on: req.db) + .map{mdlInspectionCategoryItem.Output( + id: output.id! + , name: output.name + , description: output.description + , sortorder: output.sortorder + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + , item: output.item + , inspectioncategory: output.inspectioncategory + , userdefinedcode: output.userdefinedcode + , inputtype: output.inputtype + , currentitem: output.currentitem + , parent: output.parent + , inspectioncategoryitems: output.inspectioncategoryitems + , inspectioncategoryitemresponsetypes: output.inspectioncategoryitemresponsetypes + , inspectioncategoryitemspecs: output.inspectioncategoryitemspecs + , notes: output.notes + , files: output.files + ) + } + } + //create function + func save(_ output: mdlInspectionCategoryItem, _ req: Request, _ input: mdlInspectionCategoryItem.Input) -> EventLoopFuture { + return output + .save(on: req.db) + .map{ + mdlInspectionCategoryItem.Output( + id: output.id! + , name: output.name + , description: output.description + , sortorder: output.sortorder + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + , item: input.item + , inspectioncategory: input.inspectioncategory + , userdefinedcode: input.userdefinedcode + , inputtype: input.inputtype + , currentitem: input.currentitem + , parent: input.parent + , inspectioncategoryitems: input.inspectioncategoryitems + , inspectioncategoryitemresponsetypes: input.inspectioncategoryitemresponsetypes + , inspectioncategoryitemspecs: input.inspectioncategoryitemspecs + , notes: input.notes + , files: input.files + ) + + } + } + +} +extension InspectionCategoryItemCtrl: RouteCollection{ + func boot(routes: RoutesBuilder) throws{ + let apigroup = routes.grouped("inspectioncategoryitems") + apigroup.get("", use: readAll) + apigroup.get(":id", use: read) + apigroup.post("", use: create) + apigroup.post(":id", use: update) + apigroup.delete(":id", use: delete) + + + } +} diff --git a/Sources/App/Controllers/i/InspectionCategoryItemResponseTypeCtrl.swift b/Sources/App/Controllers/i/InspectionCategoryItemResponseTypeCtrl.swift new file mode 100644 index 0000000..0484e3f --- /dev/null +++ b/Sources/App/Controllers/i/InspectionCategoryItemResponseTypeCtrl.swift @@ -0,0 +1,160 @@ +// +// InspectionCategoryItemResponseTypeCtrl.swift +// +// +// Created by Michiel Carman on 11/10/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class InspectionCategoryItemResponseTypeCtrl{ + //Create Unit + func create(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlInspectionCategoryItemResponseType.Input.self) + let output = self.createUnit(input) + return self.save(output, req, input) + + } + + //Update Unit + func update(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlInspectionCategoryItemResponseType.Input.self) + return try qbase(req: req).first().unwrap(or: Abort(.notFound)).flatMap{output in self.mapOutput(output, input) + return self.save(output, req: req) + } + } + + //Get all Divisions + func readAll(req: Request) throws -> EventLoopFuture>{ + return try qbase(req: req) + .paginate(for: req) + .map{ + page in page.map{ + self.createRead($0) + } + } + } + //Get 1 Division + func read(req: Request) throws -> EventLoopFuture{ + + return try qbase(req: req).first().unwrap(or: Abort(.internalServerError)).map{self.createRead($0)} + + } + //Delete 1 Division + func delete(req: Request) throws -> EventLoopFuture{ + + guard let id = req.parameters.get("id", as: Int.self) else{ + throw Abort(.badRequest) + } + return mdlInspectionCategoryItemResponseType.find(id, on: req.db).unwrap(or: Abort(.notFound)).flatMap{ $0.delete(on: req.db)}.map{.ok} + } + +} +extension InspectionCategoryItemResponseTypeCtrl{ + //Query Settings + func qbase(req: Request) throws -> QueryBuilder { + let query = mdlInspectionCategoryItemResponseType.query(on: req.db).with(\.$inspectioncategoryitem).with(\.$responsetype) + if let id = req.parameters.get("id", as: Int.self){ + return query.filter(\.$id == id) + } else{ + return query + } + } + //create Output + func createRead(_ output: mdlInspectionCategoryItemResponseType) -> mdlInspectionCategoryItemResponseType.Output { + return mdlInspectionCategoryItemResponseType.Output( + id: output.id!, + name: output.name, + sortorder: output.sortorder, + isselected: output.isselected, + createdate: output.createdate, + createuserid: output.createuserid, + updatedate: output.updatedate, + updateuserid: output.updateuserid, + inspectioncategoryitem: output.$inspectioncategoryitem.value!, + responsetype: output.$responsetype.value! + ) + } + + func mapOutput(_ output: Optional.WrappedType, _ input: mdlInspectionCategoryItemResponseType.Input){ + output.name = input.name; + output.sortorder = input.sortorder; + output.isselected = input.isselected; + output.createdate = input.createdate; + output.updatedate = input.updatedate; + output.createuserid = input.createuserid; + output.updateuserid = input.updateuserid; + output.$inspectioncategoryitem.id = input.inspectioncategoryitem.id!; + output.$responsetype.id = input.responsetype.id! + } + + func createUnit(_ input: mdlInspectionCategoryItemResponseType.Input) -> mdlInspectionCategoryItemResponseType { + return mdlInspectionCategoryItemResponseType( + id: input.id ?? nil + , name: input.name + , sortorder: input.sortorder + , isselected: input.isselected + , createuserid: input.createuserid ?? -1 + , createdate: input.createdate + , updateuserid: input.updateuserid ?? -1 + , updatedate: input.updatedate + , inspectioncategoryitem: input.inspectioncategoryitem + , responsetype: input.responsetype + ) + } + + //update function + func save(_ output: Optional.WrappedType, req: Request) -> EventLoopFuture { + return output + .save(on: req.db) + .map{mdlInspectionCategoryItemResponseType.Output( + id: output.id! + , name: output.name + , sortorder: output.sortorder + , isselected: output.isselected + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + , inspectioncategoryitem: output.inspectioncategoryitem + , responsetype: output.responsetype + ) + } + } + //create function + func save(_ output: mdlInspectionCategoryItemResponseType, _ req: Request, _ input: mdlInspectionCategoryItemResponseType.Input) -> EventLoopFuture { + return output + .save(on: req.db) + .map{ + mdlInspectionCategoryItemResponseType.Output( + id: output.id! + , name: output.name + , sortorder: output.sortorder + , isselected: output.isselected + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + , inspectioncategoryitem: input.inspectioncategoryitem + , responsetype: input.responsetype + ) + + } + } + +} +extension InspectionCategoryItemResponseTypeCtrl: RouteCollection{ + func boot(routes: RoutesBuilder) throws{ + let apigroup = routes.grouped("inspectioncategoryitemresponsetypes") + apigroup.get("", use: readAll) + apigroup.get(":id", use: read) + apigroup.post("", use: create) + apigroup.post(":id", use: update) + apigroup.delete(":id", use: delete) + + + } +} diff --git a/Sources/App/Controllers/i/InspectionCategoryItemSpecCtrl.swift b/Sources/App/Controllers/i/InspectionCategoryItemSpecCtrl.swift new file mode 100644 index 0000000..c0294a6 --- /dev/null +++ b/Sources/App/Controllers/i/InspectionCategoryItemSpecCtrl.swift @@ -0,0 +1,163 @@ +// +// InspectionCategoryItemSpecCtrl.swift +// +// +// Created by Michiel Carman on 11/11/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class InspectionCategoryItemSpecCtrl{ + //Create Unit + func create(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlInspectionCategoryItemSpec.Input.self) + let output = self.createUnit(input) + return self.save(output, req, input) + + } + + //Update Unit + func update(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlInspectionCategoryItemSpec.Input.self) + return try qbase(req: req).first().unwrap(or: Abort(.notFound)).flatMap{output in self.mapOutput(output, input) + return self.save(output, req: req) + } + } + + //Get all Divisions + func readAll(req: Request) throws -> EventLoopFuture>{ + return try qbase(req: req) + .paginate(for: req) + .map{ + page in page.map{ + self.createRead($0) + } + } + } + //Get 1 Division + func read(req: Request) throws -> EventLoopFuture{ + + return try qbase(req: req).first().unwrap(or: Abort(.internalServerError)).map{self.createRead($0)} + + } + //Delete 1 Division + func delete(req: Request) throws -> EventLoopFuture{ + + guard let id = req.parameters.get("id", as: Int.self) else{ + throw Abort(.badRequest) + } + return mdlInspectionCategoryItemSpec.find(id, on: req.db).unwrap(or: Abort(.notFound)).flatMap{ $0.delete(on: req.db)}.map{.ok} + } + +} +extension InspectionCategoryItemSpecCtrl{ + //Query Settings + func qbase(req: Request) throws -> QueryBuilder { + let query = mdlInspectionCategoryItemSpec.query(on: req.db) + .with(\.$inspectioncategoryitem) + .with(\.$spec) + .with(\.$inspectioncategoryitemspecitems) + if let id = req.parameters.get("id", as: Int.self){ + return query.filter(\.$id == id) + } else{ + return query + } + } + //create Output + func createRead(_ output: mdlInspectionCategoryItemSpec) -> mdlInspectionCategoryItemSpec.Output { + return mdlInspectionCategoryItemSpec.Output( + id: output.id!, + name: output.name, + numberoftests: output.numberoftests, + createdate: output.createdate, + createuserid: output.createuserid, + updatedate: output.updatedate, + updateuserid: output.updateuserid, + inspectioncategoryitem: output.$inspectioncategoryitem.value!, + spec: output.$spec.value!, + inspectioncategoryitemspecitems: output.$inspectioncategoryitemspecitems.value! + ) + } + + func mapOutput(_ output: Optional.WrappedType, _ input: mdlInspectionCategoryItemSpec.Input){ + output.name = input.name; + output.numberoftests = input.numberoftests; + output.createdate = input.createdate; + output.updatedate = input.updatedate; + output.createuserid = input.createuserid; + output.updateuserid = input.updateuserid; + output.$inspectioncategoryitem.id = input.inspectioncategoryitem.id!; + output.$spec.id = input.spec.id!; + output.$inspectioncategoryitemspecitems.value = input.inspectioncategoryitemspecitems + } + + func createUnit(_ input: mdlInspectionCategoryItemSpec.Input) -> mdlInspectionCategoryItemSpec { + return mdlInspectionCategoryItemSpec( + id: input.id ?? nil + , name: input.name + , numberoftests: input.numberoftests + , createuserid: input.createuserid ?? -1 + , createdate: input.createdate + , updateuserid: input.updateuserid ?? -1 + , updatedate: input.updatedate + , inspectioncategoryitem: input.inspectioncategoryitem + , spec: input.spec + , inspectioncategoryitemspecitems: input.inspectioncategoryitemspecitems + ) + } + + //update function + func save(_ output: Optional.WrappedType, req: Request) -> EventLoopFuture { + return output + .save(on: req.db) + .map{mdlInspectionCategoryItemSpec.Output( + id: output.id! + , name: output.name + , numberoftests: output.numberoftests + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + , inspectioncategoryitem: output.inspectioncategoryitem + , spec: output.spec + , inspectioncategoryitemspecitems: output.inspectioncategoryitemspecitems + ) + } + } + //create function + func save(_ output: mdlInspectionCategoryItemSpec, _ req: Request, _ input: mdlInspectionCategoryItemSpec.Input) -> EventLoopFuture { + return output + .save(on: req.db) + .map{ + mdlInspectionCategoryItemSpec.Output( + id: output.id! + , name: output.name + , numberoftests: output.numberoftests + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + , inspectioncategoryitem: input.inspectioncategoryitem + , spec: input.spec + , inspectioncategoryitemspecitems: input.inspectioncategoryitemspecitems + ) + + } + } + +} +extension InspectionCategoryItemSpecCtrl: RouteCollection{ + func boot(routes: RoutesBuilder) throws{ + let apigroup = routes.grouped("inspectioncategoryitemspecs") + apigroup.get("", use: readAll) + apigroup.get(":id", use: read) + apigroup.post("", use: create) + apigroup.post(":id", use: update) + apigroup.delete(":id", use: delete) + + + } +} diff --git a/Sources/App/Controllers/i/InspectionCategoryItemSpecItemCtrl.swift b/Sources/App/Controllers/i/InspectionCategoryItemSpecItemCtrl.swift new file mode 100644 index 0000000..29e2a24 --- /dev/null +++ b/Sources/App/Controllers/i/InspectionCategoryItemSpecItemCtrl.swift @@ -0,0 +1,190 @@ +// +// InspectionCategoryItemSpecItemCtrl.swift +// +// +// Created by Michiel Carman on 11/11/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class InspectionCategoryItemSpecItemCtrl{ + //Create Unit + func create(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlInspectionCategoryItemSpecItem.Input.self) + let output = self.createUnit(input) + return self.save(output, req, input) + + } + + //Update Unit + func update(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlInspectionCategoryItemSpecItem.Input.self) + return try qbase(req: req).first().unwrap(or: Abort(.notFound)).flatMap{output in self.mapOutput(output, input) + return self.save(output, req: req) + } + } + + //Get all Divisions + func readAll(req: Request) throws -> EventLoopFuture>{ + return try qbase(req: req) + .paginate(for: req) + .map{ + page in page.map{ + self.createRead($0) + } + } + } + //Get 1 Division + func read(req: Request) throws -> EventLoopFuture{ + + return try qbase(req: req).first().unwrap(or: Abort(.internalServerError)).map{self.createRead($0)} + + } + //Delete 1 Division + func delete(req: Request) throws -> EventLoopFuture{ + + guard let id = req.parameters.get("id", as: Int.self) else{ + throw Abort(.badRequest) + } + return mdlInspectionCategoryItemSpecItem.find(id, on: req.db).unwrap(or: Abort(.notFound)).flatMap{ $0.delete(on: req.db)}.map{.ok} + } + +} +extension InspectionCategoryItemSpecItemCtrl{ + //Query Settings + func qbase(req: Request) throws -> QueryBuilder { + let query = mdlInspectionCategoryItemSpecItem.query(on: req.db) + .with(\.$inspectioncategoryitemspec) + .with(\.$comparisontype) + .with(\.$unit) + .with(\.$inspectioncategoryitemspecitemtests) + .with(\.$inspectioncategoryitemspecitemvalues) + if let id = req.parameters.get("id", as: Int.self){ + return query.filter(\.$id == id) + } else{ + return query + } + } + //create Output + func createRead(_ output: mdlInspectionCategoryItemSpecItem) -> mdlInspectionCategoryItemSpecItem.Output { + return mdlInspectionCategoryItemSpecItem.Output( + id: output.id!, + name: output.name, + average: output.average, + qualifier: output.qualifier, + result: output.result, + sortorder: output.sortorder, + createdate: output.createdate, + createuserid: output.createuserid, + updatedate: output.updatedate, + updateuserid: output.updateuserid, + inspectioncategoryitemspec: output.$inspectioncategoryitemspec.value!, + comparisontype: output.$comparisontype.value!, + unit: output.$unit.value!, + inspectioncategoryitemspecitemtests: output.$inspectioncategoryitemspecitemtests.value!, + inspectioncategoryitemspecitemvalues: output.$inspectioncategoryitemspecitemvalues.value! + ) + } + + func mapOutput(_ output: Optional.WrappedType, _ input: mdlInspectionCategoryItemSpecItem.Input){ + output.name = input.name; + output.average = input.average; + output.qualifier = input.qualifier; + output.result = input.result; + output.sortorder = input.sortorder; + output.createdate = input.createdate; + output.updatedate = input.updatedate; + output.createuserid = input.createuserid; + output.updateuserid = input.updateuserid; + output.$inspectioncategoryitemspec.id = input.inspectioncategoryitemspec.id!; + output.$comparisontype.id = input.comparisontype.id!; + output.$unit.id = input.unit.id!; + output.$inspectioncategoryitemspecitemtests.value = input.inspectioncategoryitemspecitemtests; + output.$inspectioncategoryitemspecitemvalues.value = input.inspectioncategoryitemspecitemvalues + } + + func createUnit(_ input: mdlInspectionCategoryItemSpecItem.Input) -> mdlInspectionCategoryItemSpecItem { + return mdlInspectionCategoryItemSpecItem( + id: input.id ?? nil + , name: input.name + , average: input.average + , qualifier: input.qualifier + , result: input.result + , sortorder: input.sortorder + , createuserid: input.createuserid ?? -1 + , createdate: input.createdate + , updateuserid: input.updateuserid ?? -1 + , updatedate: input.updatedate + , inspectioncategoryitemspec: input.inspectioncategoryitemspec + , comparisontype: input.comparisontype + , unit: input.unit + , inspectioncategoryitemspecitemtests: input.inspectioncategoryitemspecitemtests + , inspectioncategoryitemspecitemvalues: input.inspectioncategoryitemspecitemvalues + ) + } + + //update function + func save(_ output: Optional.WrappedType, req: Request) -> EventLoopFuture { + return output + .save(on: req.db) + .map{mdlInspectionCategoryItemSpecItem.Output( + id: output.id! + , name: output.name + , average: output.average + , qualifier: output.qualifier + , result: output.result + , sortorder: output.sortorder + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + , inspectioncategoryitemspec: output.inspectioncategoryitemspec + , comparisontype: output.comparisontype + , unit: output.unit + , inspectioncategoryitemspecitemtests: output.inspectioncategoryitemspecitemtests + , inspectioncategoryitemspecitemvalues: output.inspectioncategoryitemspecitemvalues + ) + } + } + //create function + func save(_ output: mdlInspectionCategoryItemSpecItem, _ req: Request, _ input: mdlInspectionCategoryItemSpecItem.Input) -> EventLoopFuture { + return output + .save(on: req.db) + .map{ + mdlInspectionCategoryItemSpecItem.Output( + id: output.id! + , name: output.name + , average: output.average + , qualifier: output.qualifier + , result: output.result + , sortorder: output.sortorder + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + , inspectioncategoryitemspec: input.inspectioncategoryitemspec + , comparisontype: input.comparisontype + , unit: input.unit + , inspectioncategoryitemspecitemtests: input.inspectioncategoryitemspecitemtests + , inspectioncategoryitemspecitemvalues: input.inspectioncategoryitemspecitemvalues + ) + + } + } + +} +extension InspectionCategoryItemSpecItemCtrl: RouteCollection{ + func boot(routes: RoutesBuilder) throws{ + let apigroup = routes.grouped("inspectioncategoryitemspecitems") + apigroup.get("", use: readAll) + apigroup.get(":id", use: read) + apigroup.post("", use: create) + apigroup.post(":id", use: update) + apigroup.delete(":id", use: delete) + + + } +} diff --git a/Sources/App/Controllers/i/InspectionCategoryItemSpecItemTestCtrl.swift b/Sources/App/Controllers/i/InspectionCategoryItemSpecItemTestCtrl.swift new file mode 100644 index 0000000..0fd01c1 --- /dev/null +++ b/Sources/App/Controllers/i/InspectionCategoryItemSpecItemTestCtrl.swift @@ -0,0 +1,156 @@ +// +// InspectionCategoryItemSpecItemTestCtrl.swift +// +// +// Created by Michiel Carman on 11/11/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class InspectionCategoryItemSpecItemTestCtrl{ + //Create Unit + func create(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlInspectionCategoryItemSpecItemTest.Input.self) + let output = self.createUnit(input) + return self.save(output, req, input) + + } + + //Update Unit + func update(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlInspectionCategoryItemSpecItemTest.Input.self) + return try qbase(req: req).first().unwrap(or: Abort(.notFound)).flatMap{output in self.mapOutput(output, input) + return self.save(output, req: req) + } + } + + //Get all Divisions + func readAll(req: Request) throws -> EventLoopFuture>{ + return try qbase(req: req) + .paginate(for: req) + .map{ + page in page.map{ + self.createRead($0) + } + } + } + //Get 1 Division + func read(req: Request) throws -> EventLoopFuture{ + + return try qbase(req: req).first().unwrap(or: Abort(.internalServerError)).map{self.createRead($0)} + + } + //Delete 1 Division + func delete(req: Request) throws -> EventLoopFuture{ + + guard let id = req.parameters.get("id", as: Int.self) else{ + throw Abort(.badRequest) + } + return mdlInspectionCategoryItemSpecItemTest.find(id, on: req.db).unwrap(or: Abort(.notFound)).flatMap{ $0.delete(on: req.db)}.map{.ok} + } + +} +extension InspectionCategoryItemSpecItemTestCtrl{ + //Query Settings + func qbase(req: Request) throws -> QueryBuilder { + let query = mdlInspectionCategoryItemSpecItemTest.query(on: req.db) + .with(\.$inspectioncategoryitemspecitem) + if let id = req.parameters.get("id", as: Int.self){ + return query.filter(\.$id == id) + } else{ + return query + } + } + //create Output + func createRead(_ output: mdlInspectionCategoryItemSpecItemTest) -> mdlInspectionCategoryItemSpecItemTest.Output { + return mdlInspectionCategoryItemSpecItemTest.Output( + id: output.id!, + number: output.number, + value: output.value, + isactive: output.isactive, + createdate: output.createdate, + createuserid: output.createuserid, + updatedate: output.updatedate, + updateuserid: output.updateuserid, + inspectioncategoryitemspecitem: output.$inspectioncategoryitemspecitem.value! + ) + } + + func mapOutput(_ output: Optional.WrappedType, _ input: mdlInspectionCategoryItemSpecItemTest.Input){ + output.number = input.number; + output.value = input.value; + output.isactive = input.isactive; + output.createdate = input.createdate; + output.updatedate = input.updatedate; + output.createuserid = input.createuserid; + output.updateuserid = input.updateuserid; + output.$inspectioncategoryitemspecitem.id = input.inspectioncategoryitemspecitem.id! + } + + func createUnit(_ input: mdlInspectionCategoryItemSpecItemTest.Input) -> mdlInspectionCategoryItemSpecItemTest { + return mdlInspectionCategoryItemSpecItemTest( + id: input.id ?? nil + , number: input.number + , value: input.value + , isactive: input.isactive + , createuserid: input.createuserid ?? -1 + , createdate: input.createdate + , updateuserid: input.updateuserid ?? -1 + , updatedate: input.updatedate + , inspectioncategoryitemspecitem: input.inspectioncategoryitemspecitem + ) + } + + //update function + func save(_ output: Optional.WrappedType, req: Request) -> EventLoopFuture { + return output + .save(on: req.db) + .map{mdlInspectionCategoryItemSpecItemTest.Output( + id: output.id! + , number: output.number + , value: output.value + , isactive: output.isactive + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + , inspectioncategoryitemspecitem: output.inspectioncategoryitemspecitem + ) + } + } + //create function + func save(_ output: mdlInspectionCategoryItemSpecItemTest, _ req: Request, _ input: mdlInspectionCategoryItemSpecItemTest.Input) -> EventLoopFuture { + return output + .save(on: req.db) + .map{ + mdlInspectionCategoryItemSpecItemTest.Output( + id: output.id! + , number: output.number + , value: output.value + , isactive: output.isactive + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + , inspectioncategoryitemspecitem: input.inspectioncategoryitemspecitem + ) + + } + } + +} +extension InspectionCategoryItemSpecItemTestCtrl: RouteCollection{ + func boot(routes: RoutesBuilder) throws{ + let apigroup = routes.grouped("inspectioncategoryitemspecitemtests") + apigroup.get("", use: readAll) + apigroup.get(":id", use: read) + apigroup.post("", use: create) + apigroup.post(":id", use: update) + apigroup.delete(":id", use: delete) + + + } +} diff --git a/Sources/App/Controllers/i/InspectionCategoryItemSpecItemValueCtrl.swift b/Sources/App/Controllers/i/InspectionCategoryItemSpecItemValueCtrl.swift new file mode 100644 index 0000000..372653e --- /dev/null +++ b/Sources/App/Controllers/i/InspectionCategoryItemSpecItemValueCtrl.swift @@ -0,0 +1,157 @@ +// +// InspectionCategoryItemSpecItemValueCtrl.swift +// +// +// Created by Michiel Carman on 11/11/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class InspectionCategoryItemSpecItemValueCtrl{ + //Create Unit + func create(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlInspectionCategoryItemSpecItemValue.Input.self) + let output = self.createUnit(input) + return self.save(output, req, input) + + } + + //Update Unit + func update(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlInspectionCategoryItemSpecItemValue.Input.self) + return try qbase(req: req).first().unwrap(or: Abort(.notFound)).flatMap{output in self.mapOutput(output, input) + return self.save(output, req: req) + } + } + + //Get all Divisions + func readAll(req: Request) throws -> EventLoopFuture>{ + return try qbase(req: req) + .paginate(for: req) + .map{ + page in page.map{ + self.createRead($0) + } + } + } + //Get 1 Division + func read(req: Request) throws -> EventLoopFuture{ + + return try qbase(req: req).first().unwrap(or: Abort(.internalServerError)).map{self.createRead($0)} + + } + //Delete 1 Division + func delete(req: Request) throws -> EventLoopFuture{ + + guard let id = req.parameters.get("id", as: Int.self) else{ + throw Abort(.badRequest) + } + return mdlInspectionCategoryItemSpecItemValue.find(id, on: req.db).unwrap(or: Abort(.notFound)).flatMap{ $0.delete(on: req.db)}.map{.ok} + } + +} +extension InspectionCategoryItemSpecItemValueCtrl{ + //Query Settings + func qbase(req: Request) throws -> QueryBuilder { + let query = mdlInspectionCategoryItemSpecItemValue.query(on: req.db) + .with(\.$valuetype) + .with(\.$inspectioncategoryitemspecitem) + if let id = req.parameters.get("id", as: Int.self){ + return query.filter(\.$id == id) + } else{ + return query + } + } + //create Output + func createRead(_ output: mdlInspectionCategoryItemSpecItemValue) -> mdlInspectionCategoryItemSpecItemValue.Output { + return mdlInspectionCategoryItemSpecItemValue.Output( + id: output.id!, + value: output.value, + sortorder: output.sortorder, + createdate: output.createdate, + createuserid: output.createuserid, + updatedate: output.updatedate, + updateuserid: output.updateuserid, + valuetype: output.$valuetype.value!, + inspectioncategoryitemspecitem: output.$inspectioncategoryitemspecitem.value! + ) + } + + func mapOutput(_ output: Optional.WrappedType, _ input: mdlInspectionCategoryItemSpecItemValue.Input){ + output.value = input.value; + output.sortorder = input.sortorder; + output.createdate = input.createdate; + output.updatedate = input.updatedate; + output.createuserid = input.createuserid; + output.updateuserid = input.updateuserid; + output.$valuetype.id = input.valuetype.id!; + output.$inspectioncategoryitemspecitem.id = input.inspectioncategoryitemspecitem.id! + } + + func createUnit(_ input: mdlInspectionCategoryItemSpecItemValue.Input) -> mdlInspectionCategoryItemSpecItemValue { + return mdlInspectionCategoryItemSpecItemValue( + id: input.id ?? nil + , value: input.value + , sortorder: input.sortorder + , createuserid: input.createuserid ?? -1 + , createdate: input.createdate + , updateuserid: input.updateuserid ?? -1 + , updatedate: input.updatedate + , valuetype: input.valuetype + , inspectioncategoryitemspecitem: input.inspectioncategoryitemspecitem + ) + } + + //update function + func save(_ output: Optional.WrappedType, req: Request) -> EventLoopFuture { + return output + .save(on: req.db) + .map{mdlInspectionCategoryItemSpecItemValue.Output( + id: output.id! + , value: output.value + , sortorder: output.sortorder + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + , valuetype: output.valuetype + , inspectioncategoryitemspecitem: output.inspectioncategoryitemspecitem + ) + } + } + //create function + func save(_ output: mdlInspectionCategoryItemSpecItemValue, _ req: Request, _ input: mdlInspectionCategoryItemSpecItemValue.Input) -> EventLoopFuture { + return output + .save(on: req.db) + .map{ + mdlInspectionCategoryItemSpecItemValue.Output( + id: output.id! + , value: output.value + , sortorder: output.sortorder + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + , valuetype: input.valuetype + , inspectioncategoryitemspecitem: input.inspectioncategoryitemspecitem + ) + + } + } + +} +extension InspectionCategoryItemSpecItemValueCtrl: RouteCollection{ + func boot(routes: RoutesBuilder) throws{ + let apigroup = routes.grouped("inpsectioncategoryitemspecitemvalues") + apigroup.get("", use: readAll) + apigroup.get(":id", use: read) + apigroup.post("", use: create) + apigroup.post(":id", use: update) + apigroup.delete(":id", use: delete) + + + } +} diff --git a/Sources/App/Controllers/i/InspectionCtrl.swift b/Sources/App/Controllers/i/InspectionCtrl.swift new file mode 100644 index 0000000..2041d32 --- /dev/null +++ b/Sources/App/Controllers/i/InspectionCtrl.swift @@ -0,0 +1,185 @@ +// +// InspectionCtrl.swift +// +// +// Created by Michiel Carman on 11/10/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class InspectionCtrl{ + //Create Unit + func create(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlInspection.Input.self) + let output = self.createUnit(input) + return self.save(output, req, input) + + } + + //Update Unit + func update(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlInspection.Input.self) + return try qbase(req: req).first().unwrap(or: Abort(.notFound)).flatMap{output in self.mapOutput(output, input) + return self.save(output, req: req) + } + } + + //Get all Divisions + func readAll(req: Request) throws -> EventLoopFuture>{ + return try qbase(req: req) + .paginate(for: req) + .map{ + page in page.map{ + self.createRead($0) + } + } + } + //Get 1 Division + func read(req: Request) throws -> EventLoopFuture{ + + return try qbase(req: req).first().unwrap(or: Abort(.internalServerError)).map{self.createRead($0)} + + } + //Delete 1 Division + func delete(req: Request) throws -> EventLoopFuture{ + + guard let id = req.parameters.get("id", as: Int.self) else{ + throw Abort(.badRequest) + } + return mdlInspection.find(id, on: req.db).unwrap(or: Abort(.notFound)).flatMap{ $0.delete(on: req.db)}.map{.ok} + } + +} +extension InspectionCtrl{ + //Query Settings + func qbase(req: Request) throws -> QueryBuilder { + let query = mdlInspection.query(on: req.db) + .with(\.$workorder) + .with(\.$inspectiontype) + .with(\.$inspectionlevel) + .with(\.$technicians) + .with(\.$inspectioncategories) + if let id = req.parameters.get("id", as: Int.self){ + return query.filter(\.$id == id) + } else{ + return query + } + } + //create Output + func createRead(_ output: mdlInspection) -> mdlInspection.Output { + return mdlInspection.Output( + id: output.id!, + interval: output.interval, + segment: output.segment, + startdate: output.startdate, + enddate: output.enddate, + createdate: output.createdate, + createuserid: output.createuserid, + updatedate: output.updatedate, + updateuserid: output.updateuserid, + workorder: output.$workorder.value!, + inspectiontype: output.$inspectiontype.value!, + inspectionlevel: output.$inspectionlevel.value!, + technicians: output.$technicians.value!, + inspectioncategories: output.$inspectioncategories.value! + ) + } + + func mapOutput(_ output: Optional.WrappedType, _ input: mdlInspection.Input){ + output.interval = input.interval; + output.segment = input.segment; + output.startdate = input.startdate; + output.enddate = input.enddate; + output.createdate = input.createdate; + output.updatedate = input.updatedate; + output.createuserid = input.createuserid; + output.updateuserid = input.updateuserid; + output.workorder = input.workorder; + output.inspectiontype = input.inspectiontype; + output.inspectionlevel = input.inspectionlevel; + output.technicians = input.technicians!; + output.inspectioncategories = input.inspectioncategories! + } + + func createUnit(_ input: mdlInspection.Input) -> mdlInspection { + return mdlInspection( + id: input.id ?? nil + , interval: input.interval + , segment: input.segment + , startdate: input.startdate + , enddate: input.enddate + , createuserid: input.createuserid ?? -1 + , createdate: input.createdate + , updateuserid: input.updateuserid ?? -1 + , updatedate: input.updatedate + , workorder: input.workorder + , inspectiontye: input.inspectiontype + , inspectionlevel: input.inspectionlevel + , technicians: input.technicians! + , inspectioncategoryies: input.inspectioncategories! + ) + } + + //update function + func save(_ output: Optional.WrappedType, req: Request) -> EventLoopFuture { + return output + .save(on: req.db) + .map{mdlInspection.Output( + id: output.id! + , interval: output.interval + , segment: output.segment + , startdate: output.startdate + , enddate: output.enddate + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + , workorder: output.workorder + , inspectiontype: output.inspectiontype + , inspectionlevel: output.inspectionlevel + , technicians: output.technicians + , inspectioncategories: output.inspectioncategories + ) + } + } + //create function + func save(_ output: mdlInspection, _ req: Request, _ input: mdlInspection.Input) -> EventLoopFuture { + return output + .save(on: req.db) + .map{ + mdlInspection.Output( + id: output.id! + , interval: output.interval + , segment: output.segment + , startdate: output.startdate + , enddate: output.enddate + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + , workorder: input.workorder + , inspectiontype: input.inspectiontype + , inspectionlevel: input.inspectionlevel + , technicians: input.technicians + , inspectioncategories: input.inspectioncategories + ) + + } + } + +} +extension InspectionCtrl: RouteCollection{ + func boot(routes: RoutesBuilder) throws{ + let apigroup = routes.grouped("inspections") + apigroup.get("", use: readAll) + apigroup.get(":id", use: read) + apigroup.post("", use: create) + apigroup.post(":id", use: update) + apigroup.delete(":id", use: delete) + + + } +} diff --git a/Sources/App/Controllers/i/InspectionLevelCtrl.swift b/Sources/App/Controllers/i/InspectionLevelCtrl.swift new file mode 100644 index 0000000..4e8b1ca --- /dev/null +++ b/Sources/App/Controllers/i/InspectionLevelCtrl.swift @@ -0,0 +1,168 @@ +// +// InspectionLevelCtrl.swift +// +// +// Created by Michiel Carman on 11/10/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class InspectionLevelCtrl{ + //Create Unit + func create(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlInspectionLevel.Input.self) + let output = self.createUnit(input) + return self.save(output, req, input) + + } + + //Update Unit + func update(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlInspectionLevel.Input.self) + return try qbase(req: req).first().unwrap(or: Abort(.notFound)).flatMap{output in self.mapOutput(output, input) + return self.save(output, req: req) + } + } + + //Get all Divisions + func readAll(req: Request) throws -> EventLoopFuture>{ + return try qbase(req: req) + .paginate(for: req) + .map{ + page in page.map{ + self.createRead($0) + } + } + } + //Get 1 Division + func read(req: Request) throws -> EventLoopFuture{ + + return try qbase(req: req).first().unwrap(or: Abort(.internalServerError)).map{self.createRead($0)} + + } + //Delete 1 Division + func delete(req: Request) throws -> EventLoopFuture{ + + guard let id = req.parameters.get("id", as: Int.self) else{ + throw Abort(.badRequest) + } + return mdlInspectionLevel.find(id, on: req.db).unwrap(or: Abort(.notFound)).flatMap{ $0.delete(on: req.db)}.map{.ok} + } + +} +extension InspectionLevelCtrl{ + //Query Settings + func qbase(req: Request) throws -> QueryBuilder { + let query = mdlInspectionLevel.query(on: req.db) + .with(\.$inspectiontype) + .with(\.$templates) + .with(\.$inspections) + if let id = req.parameters.get("id", as: Int.self){ + return query.filter(\.$id == id) + } else{ + return query + } + } + //create Output + func createRead(_ output: mdlInspectionLevel) -> mdlInspectionLevel.Output { + return mdlInspectionLevel.Output( + id: output.id!, + name: output.name, + description: output.description, + isactive: output.isactive, + createdate: output.createdate, + createuserid: output.createuserid, + updatedate: output.updatedate, + updateuserid: output.updateuserid, + inspectiontype: output.$inspectiontype.value!, + templates: output.$templates.value!, + inspections: output.$inspections.value! + ) + } + + func mapOutput(_ output: Optional.WrappedType, _ input: mdlInspectionLevel.Input){ + output.name = input.name; + output.description = input.description; + output.isactive = input.isactive; + output.createdate = input.createdate; + output.updatedate = input.updatedate; + output.createuserid = input.createuserid; + output.updateuserid = input.updateuserid; + output.$inspectiontype.id = input.inspectiontype.id!; + output.$templates.value = input.templates; + output.$inspections.value = input.inspections + } + + func createUnit(_ input: mdlInspectionLevel.Input) -> mdlInspectionLevel { + return mdlInspectionLevel( + id: input.id ?? nil + , name: input.name + , description: input.description + , isactive: input.isactive + , createuserid: input.createuserid ?? -1 + , createdate: input.createdate + , updateuserid: input.updateuserid ?? -1 + , updatedate: input.updatedate + , inspectiontype: input.inspectiontype + , templates: input.templates + , inspections: input.inspections + ) + } + + //update function + func save(_ output: Optional.WrappedType, req: Request) -> EventLoopFuture { + return output + .save(on: req.db) + .map{mdlInspectionLevel.Output( + id: output.id! + , name: output.name + , description: output.description + , isactive: output.isactive + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + , inspectiontype: output.inspectiontype + , templates: output.templates + , inspections: output.inspections + ) + } + } + //create function + func save(_ output: mdlInspectionLevel, _ req: Request, _ input: mdlInspectionLevel.Input) -> EventLoopFuture { + return output + .save(on: req.db) + .map{ + mdlInspectionLevel.Output( + id: output.id! + , name: output.name + , description: output.description + , isactive: output.isactive + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + , inspectiontype: input.inspectiontype + , templates: input.templates + , inspections: input.inspections + ) + + } + } + +} +extension InspectionLevelCtrl: RouteCollection{ + func boot(routes: RoutesBuilder) throws{ + let apigroup = routes.grouped("inspectionlevels") + apigroup.get("", use: readAll) + apigroup.get(":id", use: read) + apigroup.post("", use: create) + apigroup.post(":id", use: update) + apigroup.delete(":id", use: delete) + + + } +} diff --git a/Sources/App/Controllers/i/InspectionTypeCtrl.swift b/Sources/App/Controllers/i/InspectionTypeCtrl.swift new file mode 100644 index 0000000..09d0ee5 --- /dev/null +++ b/Sources/App/Controllers/i/InspectionTypeCtrl.swift @@ -0,0 +1,160 @@ +// +// InspectionTypeCtrl.swift +// +// +// Created by Michiel Carman on 11/10/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class InspectionTypeCtrl{ + //Create Unit + func create(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlInspectionType.Input.self) + let output = self.createUnit(input) + return self.save(output, req, input) + + } + + //Update Unit + func update(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlInspectionType.Input.self) + return try qbase(req: req).first().unwrap(or: Abort(.notFound)).flatMap{output in self.mapOutput(output, input) + return self.save(output, req: req) + } + } + + //Get all Divisions + func readAll(req: Request) throws -> EventLoopFuture>{ + return try qbase(req: req) + .paginate(for: req) + .map{ + page in page.map{ + self.createRead($0) + } + } + } + //Get 1 Division + func read(req: Request) throws -> EventLoopFuture{ + + return try qbase(req: req).first().unwrap(or: Abort(.internalServerError)).map{self.createRead($0)} + + } + //Delete 1 Division + func delete(req: Request) throws -> EventLoopFuture{ + + guard let id = req.parameters.get("id", as: Int.self) else{ + throw Abort(.badRequest) + } + return mdlInspectionType.find(id, on: req.db).unwrap(or: Abort(.notFound)).flatMap{ $0.delete(on: req.db)}.map{.ok} + } + +} +extension InspectionTypeCtrl{ + //Query Settings + func qbase(req: Request) throws -> QueryBuilder { + let query = mdlInspectionType.query(on: req.db).with(\.$templates).with(\.$inspections) + if let id = req.parameters.get("id", as: Int.self){ + return query.filter(\.$id == id) + } else{ + return query + } + } + //create Output + func createRead(_ output: mdlInspectionType) -> mdlInspectionType.Output { + return mdlInspectionType.Output( + id: output.id!, + name: output.name, + description: output.description, + isactive: output.isactive, + createdate: output.createdate, + createuserid: output.createuserid, + updatedate: output.updatedate, + updateuserid: output.updateuserid, + templates: output.$templates.value!, + inspections: output.$inspections.value! + ) + } + + func mapOutput(_ output: Optional.WrappedType, _ input: mdlInspectionType.Input){ + output.name = input.name; + output.description = input.description; + output.isactive = input.isactive; + output.createdate = input.createdate; + output.updatedate = input.updatedate; + output.createuserid = input.createuserid; + output.updateuserid = input.updateuserid; + output.$templates.value = input.templates; + output.$inspections.value = input.inspections + } + + func createUnit(_ input: mdlInspectionType.Input) -> mdlInspectionType { + return mdlInspectionType( + id: input.id ?? nil + , name: input.name + , description: input.description + , isactive: input.isactive + , createuserid: input.createuserid ?? -1 + , createdate: input.createdate + , updateuserid: input.updateuserid ?? -1 + , updatedate: input.updatedate + , templates: input.templates + , inspections: input.inspections + ) + } + + //update function + func save(_ output: Optional.WrappedType, req: Request) -> EventLoopFuture { + return output + .save(on: req.db) + .map{mdlInspectionType.Output( + id: output.id! + , name: output.name + , description: output.description + , isactive: output.isactive + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + , templates: output.templates + , inspections: output.inspections + ) + } + } + //create function + func save(_ output: mdlInspectionType, _ req: Request, _ input: mdlInspectionType.Input) -> EventLoopFuture { + return output + .save(on: req.db) + .map{ + mdlInspectionType.Output( + id: output.id! + , name: output.name + , description: output.description + , isactive: output.isactive + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + , templates: output.templates + , inspections: output.inspections + ) + + } + } + +} +extension InspectionTypeCtrl: RouteCollection{ + func boot(routes: RoutesBuilder) throws{ + let apigroup = routes.grouped("inspectiontypes") + apigroup.get("", use: readAll) + apigroup.get(":id", use: read) + apigroup.post("", use: create) + apigroup.post(":id", use: update) + apigroup.delete(":id", use: delete) + + + } +} diff --git a/Sources/App/Controllers/i/InspectionUserCtrl.swift b/Sources/App/Controllers/i/InspectionUserCtrl.swift new file mode 100644 index 0000000..5d11e2e --- /dev/null +++ b/Sources/App/Controllers/i/InspectionUserCtrl.swift @@ -0,0 +1,145 @@ +// +// InspectionUserCtrl.swift +// +// +// Created by Michiel Carman on 11/12/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class InspectionUserCtrl{ + //Create Unit + func create(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlInspectionUser.Input.self) + let output = self.createUnit(input) + return self.save(output, req, input) + + } + + //Update Unit + func update(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlInspectionUser.Input.self) + return try qbase(req: req).first().unwrap(or: Abort(.notFound)).flatMap{output in self.mapOutput(output, input) + return self.save(output, req: req) + } + } + + //Get all Divisions + func readAll(req: Request) throws -> EventLoopFuture>{ + return try qbase(req: req) + .paginate(for: req) + .map{ + page in page.map{ + self.createRead($0) + } + } + } + //Get 1 Division + func read(req: Request) throws -> EventLoopFuture{ + + return try qbase(req: req).first().unwrap(or: Abort(.internalServerError)).map{self.createRead($0)} + + } + //Delete 1 Division + func delete(req: Request) throws -> EventLoopFuture{ + + guard let id = req.parameters.get("id", as: Int.self) else{ + throw Abort(.badRequest) + } + return mdlInspectionUser.find(id, on: req.db).unwrap(or: Abort(.notFound)).flatMap{ $0.delete(on: req.db)}.map{.ok} + } + +} +extension InspectionUserCtrl{ + //Query Settings + func qbase(req: Request) throws -> QueryBuilder { + let query = mdlInspectionUser.query(on: req.db).with(\.$user).with(\.$inspection) + if let id = req.parameters.get("id", as: Int.self){ + return query.filter(\.$id == id) + } else{ + return query + } + } + //create Output + func createRead(_ output: mdlInspectionUser) -> mdlInspectionUser.Output { + return mdlInspectionUser.Output( + id: output.id!, + user: output.$user.value!, + inspection: output.$inspection.value!, + createdate: output.createdate, + createuserid: output.createuserid, + updatedate: output.updatedate, + updateuserid: output.updateuserid + ) + } + + func mapOutput(_ output: Optional.WrappedType, _ input: mdlInspectionUser.Input){ + output.$user.id = input.user.id!; + output.$inspection.id = input.inspection.id!; + output.createdate = input.createdate; + output.updatedate = input.updatedate; + output.createuserid = input.createuserid; + output.updateuserid = input.updateuserid + } + + func createUnit(_ input: mdlInspectionUser.Input) -> mdlInspectionUser { + return mdlInspectionUser( + id: input.id ?? nil + , user: input.user + , inspection: input.inspection + , createuserid: input.createuserid ?? -1 + , createdate: input.createdate + , updateuserid: input.updateuserid ?? -1 + , updatedate: input.updatedate + ) + } + + //update function + func save(_ output: Optional.WrappedType, req: Request) -> EventLoopFuture { + return output + .save(on: req.db) + .map{mdlInspectionUser.Output( + id: output.id! + , user: output.user + , inspection: output.inspection + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + ) + } + } + //create function + func save(_ output: mdlInspectionUser, _ req: Request, _ input: mdlInspectionUser.Input) -> EventLoopFuture { + return output + .save(on: req.db) + .map{ + mdlInspectionUser.Output( + id: output.id! + , user: input.user + , inspection: input.inspection + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + ) + + } + } + +} +extension InspectionUserCtrl: RouteCollection{ + func boot(routes: RoutesBuilder) throws{ + let apigroup = routes.grouped("inspectionusers") + apigroup.get("", use: readAll) + apigroup.get(":id", use: read) + apigroup.post("", use: create) + apigroup.post(":id", use: update) + apigroup.delete(":id", use: delete) + + + } +} diff --git a/Sources/App/Controllers/i/ItemCtrl.swift b/Sources/App/Controllers/i/ItemCtrl.swift new file mode 100644 index 0000000..e498528 --- /dev/null +++ b/Sources/App/Controllers/i/ItemCtrl.swift @@ -0,0 +1,189 @@ +// +// ItemCtrl.swift +// +// +// Created by Michiel Carman on 11/9/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class ItemCtrl{ + //Create Unit + func create(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlItem.Input.self) + let output = self.createUnit(input) + return self.save(output, req, input) + + } + + //Update Unit + func update(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlItem.Input.self) + return try qbase(req: req).first().unwrap(or: Abort(.notFound)).flatMap{output in self.mapOutput(output, input) + return self.save(output, req: req) + } + } + + //Get all Divisions + func readAll(req: Request) throws -> EventLoopFuture>{ + return try qbase(req: req) + .paginate(for: req) + .map{ + page in page.map{ + self.createRead($0) + } + } + } + //Get 1 Division + func read(req: Request) throws -> EventLoopFuture{ + + return try qbase(req: req).first().unwrap(or: Abort(.internalServerError)).map{self.createRead($0)} + + } + //Delete 1 Division + func delete(req: Request) throws -> EventLoopFuture{ + + guard let id = req.parameters.get("id", as: Int.self) else{ + throw Abort(.badRequest) + } + return mdlItem.find(id, on: req.db).unwrap(or: Abort(.notFound)).flatMap{ $0.delete(on: req.db)}.map{.ok} + } + +} +extension ItemCtrl{ + //Query Settings + func qbase(req: Request) throws -> QueryBuilder { + let query = mdlItem.query(on: req.db) + .with(\.$category) + .with(\.$code) + .with(\.$inputtype) + .with(\.$specs) + .with(\.$responsetypes) + .with(\.$templatecategoryitems) + .with(\.$inspectioncategoryitems) + if let id = req.parameters.get("id", as: Int.self){ + return query.filter(\.$id == id) + } else{ + return query + } + } + //create Output + func createRead(_ output: mdlItem) -> mdlItem.Output { + return mdlItem.Output( + id: output.id!, + name: output.name, + description: output.description, + isactive: output.isactive, + createdate: output.createdate, + createuserid: output.createuserid, + updatedate: output.updatedate, + updateuserid: output.updateuserid, + category: output.$category.value!, + code: output.$code.value!, + inputtype: output.$inputtype.value!, + responsetypes: output.$responsetypes.value! + , specs: output.$specs.value!, + templatecategoryitems: output.$templatecategoryitems.value!, + inspectioncategoryitems: output.$inspectioncategoryitems.value! + ) + } + + func mapOutput(_ output: Optional.WrappedType, _ input: mdlItem.Input){ + output.name = input.name; + output.description = input.description; + output.isactive = input.isactive; + output.createdate = input.createdate; + output.updatedate = input.updatedate; + output.createuserid = input.createuserid; + output.updateuserid = input.updateuserid; + output.$category.id = input.category.id!; + output.$code.id = input.code.id!; + output.$inputtype.id = input.inputtype.id!; + output.$specs.value = input.specs; + output.$templatecategoryitems.value = input.templatecategoryitems; + output.$inspectioncategoryitems.value = input.inspectioncategoryitems; + output.$responsetypes.value = input.responsetypes; + } + + func createUnit(_ input: mdlItem.Input) -> mdlItem { + return mdlItem( + id: input.id ?? nil + , name: input.name + , description: input.description + , isactive: input.isactive + , createuserid: input.createuserid ?? -1 + , createdate: input.createdate + , updateuserid: input.updateuserid ?? -1 + , updatedate: input.updatedate + , responsetypes: input.responsetypes + , specs: input.specs + , templatecategoryitems: input.templatecategoryitems + , inspectioncategoryitems: input.inspectioncategoryitems + ) + } + + //update function + func save(_ output: Optional.WrappedType, req: Request) -> EventLoopFuture { + return output + .save(on: req.db) + .map{mdlItem.Output( + id: output.id! + , name: output.name + , description: output.description + , isactive: output.isactive + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + , category: output.category + , code: output.code + , inputtype: output.inputtype + , responsetypes: output.responsetypes + , specs: output.specs + , templatecategoryitems: output.templatecategoryitems + , inspectioncategoryitems: output.inspectioncategoryitems + ) + } + } + //create function + func save(_ output: mdlItem, _ req: Request, _ input: mdlItem.Input) -> EventLoopFuture { + return output + .save(on: req.db) + .map{ + mdlItem.Output( + id: output.id! + , name: output.name + , description: output.description + , isactive: output.isactive + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + , category: input.category + , code: input.code + , inputtype: input.inputtype + , responsetypes: input.responsetypes + , specs: input.specs + , templatecategoryitems: input.templatecategoryitems + , inspectioncategoryitems: input.inspectioncategoryitems + ) + + } + } + +} +extension ItemCtrl: RouteCollection{ + func boot(routes: RoutesBuilder) throws{ + let apigroup = routes.grouped("items") + apigroup.get("", use: readAll) + apigroup.get(":id", use: read) + apigroup.post("", use: create) + apigroup.post(":id", use: update) + apigroup.delete(":id", use: delete) + + + } +} diff --git a/Sources/App/Controllers/j/JobSiteCtrl.swift b/Sources/App/Controllers/j/JobSiteCtrl.swift new file mode 100644 index 0000000..a3714a3 --- /dev/null +++ b/Sources/App/Controllers/j/JobSiteCtrl.swift @@ -0,0 +1,155 @@ +// +// JobSiteCtrl.swift +// +// +// Created by Michiel Carman on 11/5/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class JobSiteCtrl{ + //Create Unit + func create(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlJobSite.Input.self) + let output = self.createUnit(input) + return self.save(output, req, input) + + } + + //Update Unit + func update(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlJobSite.Input.self) + return try qbase(req: req).first().unwrap(or: Abort(.notFound)).flatMap{output in self.mapOutput(output, input) + return self.save(output, req: req) + } + } + + //Get all Divisions + func readAll(req: Request) throws -> EventLoopFuture>{ + return try qbase(req: req) + .paginate(for: req) + .map{ + page in page.map{ + self.createRead($0) + } + } + } + //Get 1 Division + func read(req: Request) throws -> EventLoopFuture{ + + return try qbase(req: req).first().unwrap(or: Abort(.internalServerError)).map{self.createRead($0)} + + } + //Delete 1 Division + func delete(req: Request) throws -> EventLoopFuture{ + + guard let id = req.parameters.get("id", as: Int.self) else{ + throw Abort(.badRequest) + } + return mdlJobSite.find(id, on: req.db).unwrap(or: Abort(.notFound)).flatMap{ $0.delete(on: req.db)}.map{.ok} + } + +} +extension JobSiteCtrl{ + //Query Settings + func qbase(req: Request) throws -> QueryBuilder { + let query = mdlJobSite.query(on: req.db) + if let id = req.parameters.get("id", as: Int.self){ + return query.filter(\.$id == id) + } else{ + return query + } + } + //create Output + func createRead(_ output: mdlJobSite) -> mdlJobSite.Output { + return mdlJobSite.Output( + id: output.id!, + name: output.name, + description: output.description, + sortorder: output.sortorder, + isactive: output.isactive, + createdate: output.createdate, + createuserid: output.createuserid, + updatedate: output.updatedate, + updateuserid: output.updateuserid + ) + } + + func mapOutput(_ output: Optional.WrappedType, _ input: mdlJobSite.Input){ + output.name = input.name; + output.description = input.description; + output.sortorder = input.sortorder; + output.isactive = input.isactive; + output.createdate = input.createdate; + output.updatedate = input.updatedate; + output.createuserid = input.createuserid; + output.updateuserid = input.updateuserid; + } + + func createUnit(_ input: mdlJobSite.Input) -> mdlJobSite { + return mdlJobSite( + id: input.id ?? nil + , name: input.name + , description: input.description + , sortorder: input.sortorder + , isactive: input.isactive + , createuserid: input.createuserid ?? -1 + , createdate: input.createdate + , updateuserid: input.updateuserid ?? -1 + , updatedate: input.updatedate + ) + } + + //update function + func save(_ output: Optional.WrappedType, req: Request) -> EventLoopFuture { + return output + .save(on: req.db) + .map{mdlJobSite.Output( + id: output.id! + , name: output.name + , description: output.description + , sortorder: output.sortorder + , isactive: output.isactive + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + ) + } + } + //create function + func save(_ output: mdlJobSite, _ req: Request, _ input: mdlJobSite.Input) -> EventLoopFuture { + return output + .save(on: req.db) + .map{ + mdlJobSite.Output( + id: output.id! + , name: output.name + , description: output.description + , sortorder: output.sortorder + , isactive: output.isactive + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + ) + + } + } + +} +extension JobSiteCtrl: RouteCollection{ + func boot(routes: RoutesBuilder) throws{ + let apigroup = routes.grouped("jobsites") + apigroup.get("", use: readAll) + apigroup.get(":id", use: read) + apigroup.post("", use: create) + apigroup.post(":id", use: update) + apigroup.delete(":id", use: delete) + + + } +} diff --git a/Sources/App/Controllers/l/LabSettingCtrl.swift b/Sources/App/Controllers/l/LabSettingCtrl.swift new file mode 100644 index 0000000..4b72c0a --- /dev/null +++ b/Sources/App/Controllers/l/LabSettingCtrl.swift @@ -0,0 +1,179 @@ +// +// LabSettingCtrl.swift +// +// +// Created by Michiel Carman on 11/2/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class LabSettingCtrl{ + //Create Unit + func create(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlLabSetting.Input.self) + let output = self.createUnit(input) + return self.save(output, req, input) + + } + + //Update Unit + func update(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlLabSetting.Input.self) + return try qbase(req: req).first().unwrap(or: Abort(.notFound)).flatMap{output in self.mapOutput(output, input) + return self.save(output, req: req) + } + } + + //Get all Divisions + func readAll(req: Request) throws -> EventLoopFuture>{ + return try qbase(req: req) + .paginate(for: req) + .map{ + page in page.map{ + self.createRead($0) + } + } + } + //Get 1 Division + func read(req: Request) throws -> EventLoopFuture{ + + return try qbase(req: req).first().unwrap(or: Abort(.internalServerError)).map{self.createRead($0)} + + } + //Delete 1 Division + func delete(req: Request) throws -> EventLoopFuture{ + + guard let id = req.parameters.get("id", as: Int.self) else{ + throw Abort(.badRequest) + } + return mdlLabSetting.find(id, on: req.db).unwrap(or: Abort(.notFound)).flatMap{ $0.delete(on: req.db)}.map{.ok} + } + +} + +extension LabSettingCtrl{ + //Query Settings + func qbase(req: Request) throws -> QueryBuilder { + let query = mdlLabSetting.query(on: req.db).with(\.$oilsamplelabels).with(\.$users) + if let id = req.parameters.get("id", as: Int.self){ + return query.filter(\.$id == id) + } else{ + return query + } + } + //create Output + func createRead(_ output: mdlLabSetting) -> mdlLabSetting.Output { + return mdlLabSetting.Output( + id: output.id!, + name: output.name, + description: output.description, + barcodedelimiter: output.barcodedelimiter, + barcodeactive: output.barcodeactive, + textactive: output.textactive, + logoactive: output.logoactive, + createdate: output.createdate, + createuserid: output.createuserid, + updatedate: output.updatedate, + updateuserid: output.updateuserid, + oilsamplelabels: output.$oilsamplelabels.value!, + users: output.$users.value! + + ) + } + + func mapOutput(_ output: Optional.WrappedType, _ input: mdlLabSetting.Input){ + output.name = input.name; + output.description = input.description; + output.barcodedelimiter = input.barcodedelimiter; + output.barcodeactive = input.barcodeactive; + output.textactive = input.textactive; + output.logoactive = input.logoactive; + output.createdate = input.createdate; + output.updatedate = input.updatedate; + output.createuserid = input.createuserid; + output.updateuserid = input.updateuserid; + output.$oilsamplelabels.value = input.oilsamplelabels + + } + + func createUnit(_ input: mdlLabSetting.Input) -> mdlLabSetting { + return mdlLabSetting( + id: input.id ?? nil + , name: input.name + , description: input.description + , barcodedelimiter: input.barcodedelimiter + , barcodeactive: input.barcodeactive + , textactive: input.textactive + , logoactive: input.logoactive + , createuserid: input.createuserid ?? -1 + , createdate: input.createdate + , updateuserid: input.updateuserid ?? -1 + , updatedate: input.updatedate + , oilsamplelabels: input.oilsamplelabels + , users: input.users + ) + } + + //update function + func save(_ output: Optional.WrappedType, req: Request) -> EventLoopFuture { + return output + .save(on: req.db) + .map{mdlLabSetting.Output( + id: output.id! + , name: output.name + , description: output.description + , barcodedelimiter: output.barcodedelimiter + , barcodeactive: output.barcodeactive + , textactive: output.textactive + , logoactive: output.logoactive + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + , oilsamplelabels: output.oilsamplelabels + , users: output.users + + ) + } + } + //create function + func save(_ output: mdlLabSetting, _ req: Request, _ input: mdlLabSetting.Input) -> EventLoopFuture { + return output + .save(on: req.db) + .map{ + mdlLabSetting.Output( + id: output.id! + , name: output.name + , description: output.description + , barcodedelimiter: output.barcodedelimiter + , barcodeactive: output.barcodeactive + , textactive: output.textactive + , logoactive: output.logoactive + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + , oilsamplelabels: output.oilsamplelabels + , users: output.users + + ) + + } + } + + } + extension LabSettingCtrl: RouteCollection{ + func boot(routes: RoutesBuilder) throws{ + let apigroup = routes.grouped("labsettings") + apigroup.get("", use: readAll) + apigroup.get(":id", use: read) + apigroup.post("", use: create) + apigroup.post(":id", use: update) + apigroup.delete(":id", use: delete) + + + } + } diff --git a/Sources/App/Controllers/l/LevelCtrl.swift b/Sources/App/Controllers/l/LevelCtrl.swift new file mode 100644 index 0000000..06f113b --- /dev/null +++ b/Sources/App/Controllers/l/LevelCtrl.swift @@ -0,0 +1,155 @@ +// +// LebelCtrl.swift +// +// +// Created by Michiel Carman on 11/5/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class LevelCtrl{ + //Create Unit + func create(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlLevel.Input.self) + let output = self.createUnit(input) + return self.save(output, req, input) + + } + + //Update Unit + func update(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlLevel.Input.self) + return try qbase(req: req).first().unwrap(or: Abort(.notFound)).flatMap{output in self.mapOutput(output, input) + return self.save(output, req: req) + } + } + + //Get all Divisions + func readAll(req: Request) throws -> EventLoopFuture>{ + return try qbase(req: req) + .paginate(for: req) + .map{ + page in page.map{ + self.createRead($0) + } + } + } + //Get 1 Division + func read(req: Request) throws -> EventLoopFuture{ + + return try qbase(req: req).first().unwrap(or: Abort(.internalServerError)).map{self.createRead($0)} + + } + //Delete 1 Division + func delete(req: Request) throws -> EventLoopFuture{ + + guard let id = req.parameters.get("id", as: Int.self) else{ + throw Abort(.badRequest) + } + return mdlLevel.find(id, on: req.db).unwrap(or: Abort(.notFound)).flatMap{ $0.delete(on: req.db)}.map{.ok} + } + +} +extension LevelCtrl{ + //Query Settings + func qbase(req: Request) throws -> QueryBuilder { + let query = mdlLevel.query(on: req.db) + if let id = req.parameters.get("id", as: Int.self){ + return query.filter(\.$id == id) + } else{ + return query + } + } + //create Output + func createRead(_ output: mdlLevel) -> mdlLevel.Output { + return mdlLevel.Output( + id: output.id!, + name: output.name, + description: output.description, + sortorder: output.sortorder, + isactive: output.isactive, + createdate: output.createdate, + createuserid: output.createuserid, + updatedate: output.updatedate, + updateuserid: output.updateuserid + ) + } + + func mapOutput(_ output: Optional.WrappedType, _ input: mdlLevel.Input){ + output.name = input.name; + output.description = input.description; + output.sortorder = input.sortorder; + output.isactive = input.isactive; + output.createdate = input.createdate; + output.updatedate = input.updatedate; + output.createuserid = input.createuserid; + output.updateuserid = input.updateuserid; + } + + func createUnit(_ input: mdlLevel.Input) -> mdlLevel { + return mdlLevel( + id: input.id ?? nil + , name: input.name + , description: input.description + , sortorder: input.sortorder + , isactive: input.isactive + , createuserid: input.createuserid ?? -1 + , createdate: input.createdate + , updateuserid: input.updateuserid ?? -1 + , updatedate: input.updatedate + ) + } + + //update function + func save(_ output: Optional.WrappedType, req: Request) -> EventLoopFuture { + return output + .save(on: req.db) + .map{mdlLevel.Output( + id: output.id! + , name: output.name + , description: output.description + , sortorder: output.sortorder + , isactive: output.isactive + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + ) + } + } + //create function + func save(_ output: mdlLevel, _ req: Request, _ input: mdlLevel.Input) -> EventLoopFuture { + return output + .save(on: req.db) + .map{ + mdlLevel.Output( + id: output.id! + , name: output.name + , description: output.description + , sortorder: output.sortorder + , isactive: output.isactive + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + ) + + } + } + +} +extension LevelCtrl: RouteCollection{ + func boot(routes: RoutesBuilder) throws{ + let apigroup = routes.grouped("levels") + apigroup.get("", use: readAll) + apigroup.get(":id", use: read) + apigroup.post("", use: create) + apigroup.post(":id", use: update) + apigroup.delete(":id", use: delete) + + + } +} diff --git a/Sources/App/Controllers/l/LicenseCtrl.swift b/Sources/App/Controllers/l/LicenseCtrl.swift new file mode 100644 index 0000000..89b7cb0 --- /dev/null +++ b/Sources/App/Controllers/l/LicenseCtrl.swift @@ -0,0 +1,150 @@ +// +// LicenseCtrl.swift +// +// +// Created by Michiel Carman on 11/5/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class LicenseCtrl{ + //Create Unit + func create(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlLicense.Input.self) + let output = self.createUnit(input) + return self.save(output, req, input) + + } + + //Update Unit + func update(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlLicense.Input.self) + return try qbase(req: req).first().unwrap(or: Abort(.notFound)).flatMap{output in self.mapOutput(output, input) + return self.save(output, req: req) + } + } + + //Get all Divisions + func readAll(req: Request) throws -> EventLoopFuture>{ + return try qbase(req: req) + .paginate(for: req) + .map{ + page in page.map{ + self.createRead($0) + } + } + } + //Get 1 Division + func read(req: Request) throws -> EventLoopFuture{ + + return try qbase(req: req).first().unwrap(or: Abort(.internalServerError)).map{self.createRead($0)} + + } + //Delete 1 Division + func delete(req: Request) throws -> EventLoopFuture{ + + guard let id = req.parameters.get("id", as: Int.self) else{ + throw Abort(.badRequest) + } + return mdlLicense.find(id, on: req.db).unwrap(or: Abort(.notFound)).flatMap{ $0.delete(on: req.db)}.map{.ok} + } + +} +extension LicenseCtrl{ + //Query Settings + func qbase(req: Request) throws -> QueryBuilder { + let query = mdlLicense.query(on: req.db) + if let id = req.parameters.get("id", as: Int.self){ + return query.filter(\.$id == id) + } else{ + return query + } + } + //create Output + func createRead(_ output: mdlLicense) -> mdlLicense.Output { + return mdlLicense.Output( + id: output.id!, + value: output.value, + sortorder: output.sortorder, + isactive: output.isactive, + createdate: output.createdate, + createuserid: output.createuserid, + updatedate: output.updatedate, + updateuserid: output.updateuserid + ) + } + + func mapOutput(_ output: Optional.WrappedType, _ input: mdlLicense.Input){ + output.value = input.value; + output.sortorder = input.sortorder; + output.isactive = input.isactive; + output.createdate = input.createdate; + output.updatedate = input.updatedate; + output.createuserid = input.createuserid; + output.updateuserid = input.updateuserid; + } + + func createUnit(_ input: mdlLicense.Input) -> mdlLicense { + return mdlLicense( + id: input.id ?? nil + , value: input.value + , sortorder: input.sortorder + , isactive: input.isactive + , createuserid: input.createuserid ?? -1 + , createdate: input.createdate + , updateuserid: input.updateuserid ?? -1 + , updatedate: input.updatedate + ) + } + + //update function + func save(_ output: Optional.WrappedType, req: Request) -> EventLoopFuture { + return output + .save(on: req.db) + .map{mdlLicense.Output( + id: output.id! + , value: output.value + , sortorder: output.sortorder + , isactive: output.isactive + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + ) + } + } + //create function + func save(_ output: mdlLicense, _ req: Request, _ input: mdlLicense.Input) -> EventLoopFuture { + return output + .save(on: req.db) + .map{ + mdlLicense.Output( + id: output.id! + , value: output.value + , sortorder: output.sortorder + , isactive: output.isactive + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + ) + + } + } + +} +extension LicenseCtrl: RouteCollection{ + func boot(routes: RoutesBuilder) throws{ + let apigroup = routes.grouped("licenses") + apigroup.get("", use: readAll) + apigroup.get(":id", use: read) + apigroup.post("", use: create) + apigroup.post(":id", use: update) + apigroup.delete(":id", use: delete) + + + } +} diff --git a/Sources/App/Controllers/l/LocationCtrl.swift b/Sources/App/Controllers/l/LocationCtrl.swift new file mode 100644 index 0000000..7c5b62a --- /dev/null +++ b/Sources/App/Controllers/l/LocationCtrl.swift @@ -0,0 +1,209 @@ +// +// Location.swift +// +// +// Created by Michiel Carman on 11/3/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class LocationCtrl{ + //Create Unit + func create(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlLocation.Input.self) + let output = self.createUnit(input) + return self.save(output, req, input) + + } + + //Update Unit + func update(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlLocation.Input.self) + return try qbase(req: req).first().unwrap(or: Abort(.notFound)).flatMap{output in self.mapOutput(output, input) + return self.save(output, req: req) + } + } + + //Get all Divisions + func readAll(req: Request) throws -> EventLoopFuture>{ + return try qbase(req: req) + .paginate(for: req) + .map{ + page in page.map{ + self.createRead($0) + } + } + } + //Get 1 Division + func read(req: Request) throws -> EventLoopFuture{ + + return try qbase(req: req).first().unwrap(or: Abort(.internalServerError)).map{self.createRead($0)} + + } + //Delete 1 Division + func delete(req: Request) throws -> EventLoopFuture{ + + guard let id = req.parameters.get("id", as: Int.self) else{ + throw Abort(.badRequest) + } + return mdlLocation.find(id, on: req.db).unwrap(or: Abort(.notFound)).flatMap{ $0.delete(on: req.db)}.map{.ok} + } + +} +extension LocationCtrl{ + //Query Settings + func qbase(req: Request) throws -> QueryBuilder { + let query = mdlLocation.query(on: req.db) + .with(\.$unit) + .with(\.$labsetting) + .with(\.$user) + .with(\.$contacts) + .with(\.$gates) + if let id = req.parameters.get("id", as: Int.self){ + return query.filter(\.$id == id) + } else{ + return query + } + } + //create Output + func createRead(_ output: mdlLocation) -> mdlLocation.Output { + return mdlLocation.Output( + id: output.id!, + name: output.name, + address: output.address, + address2: output.address2, + city: output.city, + state: output.state, + zip: output.zip, + dealercode: output.dealercode, + logofile: output.logofile, + isactive: output.isactive, + createdate: output.createdate, + createuserid: output.createuserid, + updatedate: output.updatedate, + updateuserid: output.updateuserid, + unit: output.$unit.value!, + labsetting: output.$labsetting.value!, + user: output.$user.value!, + contacts: output.$contacts.value!, + gates: output.$gates.value! + ) + } + + func mapOutput(_ output: Optional.WrappedType, _ input: mdlLocation.Input){ + output.name = input.name; + output.address = input.address; + output.address2 = input.address2; + output.city = input.city; + output.state = input.state; + output.zip = input.zip; + output.dealercode = input.dealercode; + output.logofile = input.logofile; + output.isactive = input.isactive + output.createdate = input.createdate; + output.updatedate = input.updatedate; + output.createuserid = input.createuserid; + output.updateuserid = input.updateuserid; + output.$unit.id = input.unit.id!; + output.$labsetting.id = input.id!; + output.$user.value = input.user; + output.$contacts.value = input.contacts + output.$gates.value = input.gates + } + + func createUnit(_ input: mdlLocation.Input) -> mdlLocation { + return mdlLocation( + id: input.id ?? nil + , name: input.name + , address: input.address + , address2: input.address2 + , city: input.city + , state: input.state + , zip: input.zip + , dealercode: input.dealercode + , logofile: input.logofile + , isactive: input.isactive + , createuserid: input.createuserid ?? -1 + , createdate: input.createdate + , updateuserid: input.updateuserid ?? -1 + , updatedate: input.updatedate + , unit: input.unit + , labsetting: input.labsetting + , user: input.user + , contacts: input.contacts + , gates: input.gates + ) + } + + //update function + func save(_ output: Optional.WrappedType, req: Request) -> EventLoopFuture { + return output + .save(on: req.db) + .map{mdlLocation.Output( + id: output.id! + , name: output.name + , address: output.address + , address2: output.address2 + , city: output.city + , state: output.state + , zip: output.zip + , dealercode: output.dealercode + , logofile: output.logofile + , isactive: output.isactive + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + , unit: output.unit + , labsetting: output.labsetting + , user: output.user + , contacts: output.contacts + , gates: output.gates + ) + } + } + //create function + func save(_ output: mdlLocation, _ req: Request, _ input: mdlLocation.Input) -> EventLoopFuture { + return output + .save(on: req.db) + .map{ + mdlLocation.Output( + id: output.id! + , name: output.name + , address: output.address + , address2: output.address2 + , city: output.city + , state: output.state + , zip: output.zip + , dealercode: output.dealercode + , logofile: output.logofile + , isactive: output.isactive + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + , unit: output.unit + , labsetting: input.labsetting + , user: input.user + , contacts: input.contacts + , gates: input.gates + ) + + } + } +} + extension LocationCtrl: RouteCollection{ + func boot(routes: RoutesBuilder) throws{ + let apigroup = routes.grouped("locations") + apigroup.get("", use: readAll) + apigroup.get(":id", use: read) + apigroup.post("", use: create) + apigroup.post(":id", use: update) + apigroup.delete(":id", use: delete) + + + } + } diff --git a/Sources/App/Controllers/m/MachineCtrl.swift b/Sources/App/Controllers/m/MachineCtrl.swift new file mode 100644 index 0000000..9b87334 --- /dev/null +++ b/Sources/App/Controllers/m/MachineCtrl.swift @@ -0,0 +1,234 @@ +// +// MachineCtrl.swift +// +// +// Created by Michiel Carman on 11/9/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class MachineCtrl{ + //Create Unit + func create(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlMachine.Input.self) + let output = self.createUnit(input) + return self.save(output, req, input) + + } + + //Update Unit + func update(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlMachine.Input.self) + return try qbase(req: req).first().unwrap(or: Abort(.notFound)).flatMap{output in self.mapOutput(output, input) + return self.save(output, req: req) + } + } + + //Get all Divisions + func readAll(req: Request) throws -> EventLoopFuture>{ + return try qbase(req: req) + .paginate(for: req) + .map{ + page in page.map{ + self.createRead($0) + } + } + } + //Get 1 Division + func read(req: Request) throws -> EventLoopFuture{ + + return try qbase(req: req).first().unwrap(or: Abort(.internalServerError)).map{self.createRead($0)} + + } + //Delete 1 Division + func delete(req: Request) throws -> EventLoopFuture{ + + guard let id = req.parameters.get("id", as: Int.self) else{ + throw Abort(.badRequest) + } + return mdlMachine.find(id, on: req.db).unwrap(or: Abort(.notFound)).flatMap{ $0.delete(on: req.db)}.map{.ok} + } + +} +extension MachineCtrl{ + //Query Settings + func qbase(req: Request) throws -> QueryBuilder { + let query = mdlMachine.query(on: req.db) + .with(\.$machinetype) + .with(\.$parent) + .with(\.$model) + .with(\.$machinenumbers) + .with(\.$machinemeters) + .with(\.$customers) + .with(\.$children) + .with(\.$templates) + .with(\.$workorders) + if let id = req.parameters.get("id", as: Int.self){ + return query.filter(\.$id == id) + } else{ + return query + } + } + //create Output + func createRead(_ output: mdlMachine) -> mdlMachine.Output { + return mdlMachine.Output( + id: output.id!, + manufactureryear: output.manufactureryear, + description: output.description, + currentlocation: output.currentlocation, + lastservicedate: output.lastservicedate, + isactive: output.isactive, + voltage: output.voltage, + kw: output.kw, + phase: output.phase, + inservicedate: output.inservicedate, + createdate: output.createdate, + createuserid: output.createuserid, + updatedate: output.updatedate, + updateuserid: output.updateuserid, + machinetype: output.$machinetype.value!, + parent: output.$parent.value!, + model: output.$model.value!, + machinenumbers: output.$machinenumbers.value!, + machinemeters: output.$machinemeters.value!, + customers: output.$customers.value!, + children: output.$children.value!, + templates: output.$templates.value!, + workorders: output.$workorders.value! + ) + } + + func mapOutput(_ output: Optional.WrappedType, _ input: mdlMachine.Input){ + output.manufactureryear = input.manufactureryear; + output.description = input.description; + output.currentlocation = input.currentlocation; + output.lastservicedate = input.lastservicedate; + output.isactive = input.isactive; + output.voltage = input.voltage; + output.kw = input.kw; + output.phase = input.phase; + output.inservicedate = input.inservicedate; + output.createdate = input.createdate; + output.updatedate = input.updatedate; + output.createuserid = input.createuserid; + output.updateuserid = input.updateuserid; + output.$machinetype.id = input.machinetype.id!; + output.$parent.id = input.parent.id!; + output.$model.id = input.model.id!; + output.$machinenumbers.value = input.machinenumbers; + output.$machinemeters.value = input.machinemeters; + output.$customers.value = input.customers; + output.$children.value = input.children; + output.$templates.value = input.templates; + output.$workorders.value = input.workorders + } + + func createUnit(_ input: mdlMachine.Input) -> mdlMachine { + return mdlMachine( + id: input.id ?? nil + , manufactureryear: input.manufactureryear + , description: input.description + , currentlocation: input.currentlocation + , lastservicedate: input.lastservicedate + , isactive: input.isactive + , voltage: input.voltage + , kw: input.kw + , phase: input.phase + , inservicedate: input.inservicedate + , createuserid: input.createuserid ?? -1 + , createdate: input.createdate + , updateuserid: input.updateuserid ?? -1 + , updatedate: input.updatedate + , machinetype: input.machinetype + , parent: input.parent + , model: input.model + , machinenumbers: input.machinenumbers + , machinemeters: input.machinemeters + , customers: input.customers + , children: input.children + , templates: input.templates + , workorders: input.workorders + ) + } + + //update function + func save(_ output: Optional.WrappedType, req: Request) -> EventLoopFuture { + return output + .save(on: req.db) + .map{mdlMachine.Output( + id: output.id! + , manufactureryear: output.manufactureryear + , description: output.description + , currentlocation: output.currentlocation + , lastservicedate: output.lastservicedate + , isactive: output.isactive + , voltage: output.voltage + , kw: output.kw + , phase: output.phase + , inservicedate: output.inservicedate + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + , machinetype: output.machinetype + , parent: output.parent + , model: output.model + , machinenumbers: output.machinenumbers + , machinemeters: output.machinemeters + , customers: output.customers + , children: output.children + , templates: output.templates + , workorders: output.workorders + ) + } + } + //create function + func save(_ output: mdlMachine, _ req: Request, _ input: mdlMachine.Input) -> EventLoopFuture { + return output + .save(on: req.db) + .map{ + mdlMachine.Output( + id: output.id! + , manufactureryear: output.manufactureryear + , description: output.description + , currentlocation: output.currentlocation + , lastservicedate: output.lastservicedate + , isactive: output.isactive + , voltage: output.voltage + , kw: output.kw + , phase: output.phase + , inservicedate: output.inservicedate + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + , machinetype: input.machinetype + , parent: input.parent + , model: input.model + , machinenumbers: input.machinenumbers + , machinemeters: input.machinemeters + , customers: input.customers + , children: input.children + , templates: input.templates + , workorders: input.workorders + ) + + } + } + +} +extension MachineCtrl: RouteCollection{ + func boot(routes: RoutesBuilder) throws{ + let apigroup = routes.grouped("machines") + apigroup.get("", use: readAll) + apigroup.get(":id", use: read) + apigroup.post("", use: create) + apigroup.post(":id", use: update) + apigroup.delete(":id", use: delete) + + + } +} diff --git a/Sources/App/Controllers/m/MachineMeterCtrl.swift b/Sources/App/Controllers/m/MachineMeterCtrl.swift new file mode 100644 index 0000000..e811dcf --- /dev/null +++ b/Sources/App/Controllers/m/MachineMeterCtrl.swift @@ -0,0 +1,155 @@ +// +// MachineMeterCtrl.swift +// +// +// Created by Michiel Carman on 11/9/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class MachineMeterCtrl{ + //Create Unit + func create(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlMachineMeter.Input.self) + let output = self.createUnit(input) + return self.save(output, req, input) + + } + + //Update Unit + func update(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlMachineMeter.Input.self) + return try qbase(req: req).first().unwrap(or: Abort(.notFound)).flatMap{output in self.mapOutput(output, input) + return self.save(output, req: req) + } + } + + //Get all Divisions + func readAll(req: Request) throws -> EventLoopFuture>{ + return try qbase(req: req) + .paginate(for: req) + .map{ + page in page.map{ + self.createRead($0) + } + } + } + //Get 1 Division + func read(req: Request) throws -> EventLoopFuture{ + + return try qbase(req: req).first().unwrap(or: Abort(.internalServerError)).map{self.createRead($0)} + + } + //Delete 1 Division + func delete(req: Request) throws -> EventLoopFuture{ + + guard let id = req.parameters.get("id", as: Int.self) else{ + throw Abort(.badRequest) + } + return mdlMachineMeter.find(id, on: req.db).unwrap(or: Abort(.notFound)).flatMap{ $0.delete(on: req.db)}.map{.ok} + } + +} +extension MachineMeterCtrl{ + //Query Settings + func qbase(req: Request) throws -> QueryBuilder { + let query = mdlMachineMeter.query(on: req.db).with(\.$machine) + if let id = req.parameters.get("id", as: Int.self){ + return query.filter(\.$id == id) + } else{ + return query + } + } + //create Output + func createRead(_ output: mdlMachineMeter) -> mdlMachineMeter.Output { + return mdlMachineMeter.Output( + id: output.id!, + label: output.label, + value: output.value, + imgfile: output.imgfile, + createdate: output.createdate, + createuserid: output.createuserid, + updatedate: output.updatedate, + updateuserid: output.updateuserid, + machine: output.$machine.value! + ) + } + + func mapOutput(_ output: Optional.WrappedType, _ input: mdlMachineMeter.Input){ + output.label = input.label; + output.value = input.value; + output.imgfile = input.imgfile; + output.createdate = input.createdate; + output.updatedate = input.updatedate; + output.createuserid = input.createuserid; + output.updateuserid = input.updateuserid; + output.$machine.id = input.machine.id! + } + + func createUnit(_ input: mdlMachineMeter.Input) -> mdlMachineMeter { + return mdlMachineMeter( + id: input.id ?? nil + , label: input.label + , value: input.value + , imgfile: input.imgfile + , createuserid: input.createuserid ?? -1 + , createdate: input.createdate + , updateuserid: input.updateuserid ?? -1 + , updatedate: input.updatedate + , machine: input.machine + ) + } + + //update function + func save(_ output: Optional.WrappedType, req: Request) -> EventLoopFuture { + return output + .save(on: req.db) + .map{mdlMachineMeter.Output( + id: output.id! + , label: output.label + , value: output.value + , imgfile: output.imgfile + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + , machine: output.machine + ) + } + } + //create function + func save(_ output: mdlMachineMeter, _ req: Request, _ input: mdlMachineMeter.Input) -> EventLoopFuture { + return output + .save(on: req.db) + .map{ + mdlMachineMeter.Output( + id: output.id! + , label: output.label + , value: output.value + , imgfile: output.imgfile + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + , machine: input.machine + ) + + } + } + +} +extension MachineMeterCtrl: RouteCollection{ + func boot(routes: RoutesBuilder) throws{ + let apigroup = routes.grouped("machinemeters") + apigroup.get("", use: readAll) + apigroup.get(":id", use: read) + apigroup.post("", use: create) + apigroup.post(":id", use: update) + apigroup.delete(":id", use: delete) + + + } +} diff --git a/Sources/App/Controllers/m/MachineNumberCtrl.swift b/Sources/App/Controllers/m/MachineNumberCtrl.swift new file mode 100644 index 0000000..6b2e037 --- /dev/null +++ b/Sources/App/Controllers/m/MachineNumberCtrl.swift @@ -0,0 +1,153 @@ +// +// MachineNumberCtrl.swift +// +// +// Created by Michiel Carman on 11/9/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class MachineNumberCtrl{ + //Create Unit + func create(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlMachineNumber.Input.self) + let output = self.createUnit(input) + return self.save(output, req, input) + + } + + //Update Unit + func update(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlMachineNumber.Input.self) + return try qbase(req: req).first().unwrap(or: Abort(.notFound)).flatMap{output in self.mapOutput(output, input) + return self.save(output, req: req) + } + } + + //Get all Divisions + func readAll(req: Request) throws -> EventLoopFuture>{ + return try qbase(req: req) + .paginate(for: req) + .map{ + page in page.map{ + self.createRead($0) + } + } + } + //Get 1 Division + func read(req: Request) throws -> EventLoopFuture{ + + return try qbase(req: req).first().unwrap(or: Abort(.internalServerError)).map{self.createRead($0)} + + } + //Delete 1 Division + func delete(req: Request) throws -> EventLoopFuture{ + + guard let id = req.parameters.get("id", as: Int.self) else{ + throw Abort(.badRequest) + } + return mdlMachineNumber.find(id, on: req.db).unwrap(or: Abort(.notFound)).flatMap{ $0.delete(on: req.db)}.map{.ok} + } + +} +extension MachineNumberCtrl{ + //Query Settings + func qbase(req: Request) throws -> QueryBuilder { + let query = mdlMachineNumber.query(on: req.db).with(\.$machine) + if let id = req.parameters.get("id", as: Int.self){ + return query.filter(\.$id == id) + } else{ + return query + } + } + //create Output + func createRead(_ output: mdlMachineNumber) -> mdlMachineNumber.Output { + return mdlMachineNumber.Output( + id: output.id!, + label: output.label, + value: output.value, + imgfile: output.imgfile, + createdate: output.createdate, + createuserid: output.createuserid, + updatedate: output.updatedate, + updateuserid: output.updateuserid, + machine: output.$machine.value! + ) + } + + func mapOutput(_ output: Optional.WrappedType, _ input: mdlMachineNumber.Input){ + output.label = input.label; + output.value = input.value; + output.imgfile = input.imgfile; + output.createdate = input.createdate; + output.updatedate = input.updatedate; + output.createuserid = input.createuserid; + output.updateuserid = input.updateuserid; + output.$machine.id = input.machine.id! + } + + func createUnit(_ input: mdlMachineNumber.Input) -> mdlMachineNumber { + return mdlMachineNumber( + id: input.id ?? nil + , label: input.label + , value: input.value + , imgfile: input.imgfile + , createuserid: input.createuserid ?? -1 + , createdate: input.createdate + , updateuserid: input.updateuserid ?? -1 + , updatedate: input.updatedate + , machine: input.machine + ) + } + + //update function + func save(_ output: Optional.WrappedType, req: Request) -> EventLoopFuture { + return output + .save(on: req.db) + .map{mdlMachineNumber.Output( + id: output.id! + , label: output.label + , value: output.value + , imgfile: output.imgfile + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + , machine: output.machine + ) + } + } + //create function + func save(_ output: mdlMachineNumber, _ req: Request, _ input: mdlMachineNumber.Input) -> EventLoopFuture { + return output + .save(on: req.db) + .map{ + mdlMachineNumber.Output( + id: output.id! + , label: output.label + , value: output.value + , imgfile: output.imgfile + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + , machine: input.machine + ) + + } + } + +} +extension MachineNumberCtrl: RouteCollection{ + func boot(routes: RoutesBuilder) throws{ + let apigroup = routes.grouped("machinenumbers") + apigroup.get("", use: readAll) + apigroup.get(":id", use: read) + apigroup.post("", use: create) + apigroup.post(":id", use: update) + apigroup.delete(":id", use: delete) + } +} diff --git a/Sources/App/Controllers/m/MachineTypeCtrl.swift b/Sources/App/Controllers/m/MachineTypeCtrl.swift new file mode 100644 index 0000000..d22f918 --- /dev/null +++ b/Sources/App/Controllers/m/MachineTypeCtrl.swift @@ -0,0 +1,150 @@ +// +// MachineTypeCtrl.swift.swift +// +// +// Created by Michiel Carman on 11/9/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class MachineTypeCtrl{ + //Create Unit + func create(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlMachineType.Input.self) + let output = self.createUnit(input) + return self.save(output, req, input) + + } + + //Update Unit + func update(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlMachineType.Input.self) + return try qbase(req: req).first().unwrap(or: Abort(.notFound)).flatMap{output in self.mapOutput(output, input) + return self.save(output, req: req) + } + } + + //Get all Divisions + func readAll(req: Request) throws -> EventLoopFuture>{ + return try qbase(req: req) + .paginate(for: req) + .map{ + page in page.map{ + self.createRead($0) + } + } + } + //Get 1 Division + func read(req: Request) throws -> EventLoopFuture{ + + return try qbase(req: req).first().unwrap(or: Abort(.internalServerError)).map{self.createRead($0)} + + } + //Delete 1 Division + func delete(req: Request) throws -> EventLoopFuture{ + + guard let id = req.parameters.get("id", as: Int.self) else{ + throw Abort(.badRequest) + } + return mdlMachineType.find(id, on: req.db).unwrap(or: Abort(.notFound)).flatMap{ $0.delete(on: req.db)}.map{.ok} + } + +} +extension MachineTypeCtrl{ + //Query Settings + func qbase(req: Request) throws -> QueryBuilder { + let query = mdlMachineType.query(on: req.db).with(\.$machines) + if let id = req.parameters.get("id", as: Int.self){ + return query.filter(\.$id == id) + } else{ + return query + } + } + //create Output + func createRead(_ output: mdlMachineType) -> mdlMachineType.Output { + return mdlMachineType.Output( + id: output.id!, + name: output.name, + description: output.description, + createdate: output.createdate, + createuserid: output.createuserid, + updatedate: output.updatedate, + updateuserid: output.updateuserid, + machines: output.$machines.value! + ) + } + + func mapOutput(_ output: Optional.WrappedType, _ input: mdlMachineType.Input){ + output.name = input.name; + output.description = input.description; + output.createdate = input.createdate; + output.updatedate = input.updatedate; + output.createuserid = input.createuserid; + output.updateuserid = input.updateuserid; + output.$machines.value = input.machines + } + + func createUnit(_ input: mdlMachineType.Input) -> mdlMachineType { + return mdlMachineType( + id: input.id ?? nil + , name: input.name + , description: input.description + , createuserid: input.createuserid ?? -1 + , createdate: input.createdate + , updateuserid: input.updateuserid ?? -1 + , updatedate: input.updatedate + , machines: input.machines! + ) + } + + //update function + func save(_ output: Optional.WrappedType, req: Request) -> EventLoopFuture { + return output + .save(on: req.db) + .map{mdlMachineType.Output( + id: output.id! + , name: output.name + , description: output.description + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + , machines: output.machines + ) + } + } + //create function + func save(_ output: mdlMachineType, _ req: Request, _ input: mdlMachineType.Input) -> EventLoopFuture { + return output + .save(on: req.db) + .map{ + mdlMachineType.Output( + id: output.id! + , name: output.name + , description: output.description + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + , machines: input.machines + ) + + } + } + +} +extension MachineTypeCtrl: RouteCollection{ + func boot(routes: RoutesBuilder) throws{ + let apigroup = routes.grouped("machinetypes") + apigroup.get("", use: readAll) + apigroup.get(":id", use: read) + apigroup.post("", use: create) + apigroup.post(":id", use: update) + apigroup.delete(":id", use: delete) + + + } +} diff --git a/Sources/App/Controllers/m/MakeCtrl.swift b/Sources/App/Controllers/m/MakeCtrl.swift new file mode 100644 index 0000000..cf2f992 --- /dev/null +++ b/Sources/App/Controllers/m/MakeCtrl.swift @@ -0,0 +1,161 @@ +// +// MakeCtrl.swift +// +// +// Created by Michiel Carman on 11/5/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class MakeCtrl{ + //Create Unit + func create(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlMake.Input.self) + let output = self.createUnit(input) + return self.save(output, req, input) + + } + + //Update Unit + func update(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlMake.Input.self) + return try qbase(req: req).first().unwrap(or: Abort(.notFound)).flatMap{output in self.mapOutput(output, input) + return self.save(output, req: req) + } + } + + //Get all Divisions + func readAll(req: Request) throws -> EventLoopFuture>{ + return try qbase(req: req) + .paginate(for: req) + .map{ + page in page.map{ + self.createRead($0) + } + } + } + //Get 1 Division + func read(req: Request) throws -> EventLoopFuture{ + + return try qbase(req: req).first().unwrap(or: Abort(.internalServerError)).map{self.createRead($0)} + + } + //Delete 1 Division + func delete(req: Request) throws -> EventLoopFuture{ + + guard let id = req.parameters.get("id", as: Int.self) else{ + throw Abort(.badRequest) + } + return mdlMake.find(id, on: req.db).unwrap(or: Abort(.notFound)).flatMap{ $0.delete(on: req.db)}.map{.ok} + } + +} + +extension MakeCtrl{ + //Query Settings + func qbase(req: Request) throws -> QueryBuilder { + let query = mdlMake.query(on: req.db).with(\.$models).with(\.$templates) + if let id = req.parameters.get("id", as: Int.self){ + return query.filter(\.$id == id) + } else{ + return query + } + } + //create Output + func createRead(_ output: mdlMake) -> mdlMake.Output { + return mdlMake.Output( + id: output.id!, + name: output.name, + description: output.description, + isactive: output.isactive, + createdate: output.createdate, + createuserid: output.createuserid, + updatedate: output.updatedate, + updateuserid: output.updateuserid, + models: output.$models.value!, + templates: output.$templates.value! + ) + } + + func mapOutput(_ output: Optional.WrappedType, _ input: mdlMake.Input){ + output.name = input.name; + output.description = input.description; + output.isactive = input.isactive; + output.createdate = input.createdate; + output.updatedate = input.updatedate; + output.createuserid = input.createuserid; + output.updateuserid = input.updateuserid; + output.$models.value = input.models; + output.$templates.value = input.templates + } + + func createUnit(_ input: mdlMake.Input) -> mdlMake { + return mdlMake( + id: input.id ?? nil + , name: input.name + , description: input.description + , isactive: input.isactive + , createuserid: input.createuserid ?? -1 + , createdate: input.createdate + , updateuserid: input.updateuserid ?? -1 + , updatedate: input.updatedate + , models: input.models + , templates: input.templates + ) + } + + //update function + func save(_ output: Optional.WrappedType, req: Request) -> EventLoopFuture { + return output + .save(on: req.db) + .map{mdlMake.Output( + id: output.id! + , name: output.name + , description: output.description + , isactive: output.isactive + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + , models: output.models + , templates: output.templates + ) + } + } + //create function + func save(_ output: mdlMake, _ req: Request, _ input: mdlMake.Input) -> EventLoopFuture { + return output + .save(on: req.db) + .map{ + mdlMake.Output( + id: output.id! + , name: output.name + , description: output.description + , isactive: output.isactive + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + , models: input.models + , templates: input.templates + ) + + } + } + +} +extension MakeCtrl: RouteCollection{ + func boot(routes: RoutesBuilder) throws{ + let apigroup = routes.grouped("makes") + apigroup.get("", use: readAll) + apigroup.get(":id", use: read) + apigroup.post("", use: create) + apigroup.post(":id", use: update) + apigroup.delete(":id", use: delete) + + + } +} diff --git a/Sources/App/Controllers/m/ModelCtrl.swift b/Sources/App/Controllers/m/ModelCtrl.swift new file mode 100644 index 0000000..d6a93ac --- /dev/null +++ b/Sources/App/Controllers/m/ModelCtrl.swift @@ -0,0 +1,191 @@ +// +// ModelCtrl.swift +// +// +// Created by Michiel Carman on 11/5/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver +import AppKit + +final class ModelCtrl{ + + //Create Unit + func create(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlModel.Input.self) + let output = self.createUnit(input) + return self.save(output, req, input) + + } + + //Update Unit + func update(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlModel.Input.self) + return try qbase(req: req).first().unwrap(or: Abort(.notFound)).flatMap{output in self.mapOutput(output, input) + return self.save(output, req: req) + } + } + + //Get all Divisions + func readAll(req: Request) throws -> EventLoopFuture>{ + return try qbase(req: req) + .paginate(for: req) + .map{ + page in page.map{ + self.createRead($0) + } + } + } + //Get 1 Division + func read(req: Request) throws -> EventLoopFuture{ + + return try qbase(req: req).first().unwrap(or: Abort(.internalServerError)).map{self.createRead($0)} + + } + //Delete 1 Division + func delete(req: Request) throws -> EventLoopFuture{ + + guard let id = req.parameters.get("id", as: Int.self) else{ + throw Abort(.badRequest) + } + return mdlModel.find(id, on: req.db).unwrap(or: Abort(.notFound)).flatMap{ $0.delete(on: req.db)}.map{.ok} + } + +} +extension ModelCtrl{ + //Query Settings + func qbase(req: Request) throws -> QueryBuilder { + let query = mdlModel.query(on: req.db) + .with(\.$make) + .with(\.$product) + .with(\.$templates) + .with(\.$machines) + if let id = req.parameters.get("id", as: Int.self){ + return query.filter(\.$id == id) + } else{ + return query + } + } + //create Output + func createRead(_ output: mdlModel) -> mdlModel.Output { + return mdlModel.Output( + id: output.id!, + name: output.name, + description: output.description, + isactive: output.isactive, + createdate: output.createdate, + createuserid: output.createuserid, + updatedate: output.updatedate, + updateuserid: output.updateuserid, + make: output.$make.value!, + product: output.$product.value!, + templates: output.$templates.value!, + machines: output.$machines.value! + ) + } + func makemake(_ output: Optional.Wrapped,_ input: mdlMake.Input) { + output.id = input.id!; + output.name = input.name; + output.description = input.description; + output.isactive = input.isactive; + output.createdate = input.createdate; + output.createuserid = input.createuserid; + output.updatedate = input.updatedate; + output.updateuserid = input.updateuserid; + output.$templates.value = input.templates; + output.$models.value = input.models; + } + func makeproduct(input: mdlModel.Input) -> mdlProduct{ + return mdlProduct(id: input.product.id!, code: input.product.code, description: input.product.description, isactive: input.product.isactive, createuserid: input.product.createuserid, createdate: input.product.createdate, updateuserid: input.product.updateuserid, updatedate: input.product.updatedate, models: input.product.models, templates: input.product.templates) + } + + func mapOutput(_ output: Optional.WrappedType, _ input: mdlModel.Input){ + output.name = input.name; + output.description = input.description; + output.isactive = input.isactive; + output.createdate = input.createdate; + output.updatedate = input.updatedate; + output.createuserid = input.createuserid; + output.updateuserid = input.updateuserid; + output.$make.id = input.make.id!; + output.$product.id = input.product.id!; + output.$templates.value = input.templates; + output.$machines.value = input.machines + } + + func createUnit(_ input: mdlModel.Input) -> mdlModel { + return mdlModel( + id: input.id ?? nil + , name: input.name + , description: input.description + , isactive: input.isactive + , createuserid: input.createuserid ?? -1 + , createdate: input.createdate + , updateuserid: input.updateuserid ?? -1 + , updatedate: input.updatedate + , make: input.make + , product: input.product + , templates: input.templates + , machines: input.machines + ) + } + + //update function + func save(_ output: Optional.WrappedType, req: Request) -> EventLoopFuture { + return output + .save(on: req.db) + .map{mdlModel.Output( + id: output.id! + , name: output.name + , description: output.description + , isactive: output.isactive + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + , make: output.make + , product: output.product + , templates: output.templates + , machines: output.machines + ) + } + } + //create function + func save(_ output: mdlModel, _ req: Request, _ input: mdlModel.Input) -> EventLoopFuture { + return output + .save(on: req.db) + .map{ + mdlModel.Output( + id: output.id! + , name: output.name + , description: output.description + , isactive: output.isactive + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + , make: input.make + , product: input.product + , templates: input.templates + , machines: input.machines + ) + + } + } + +} +extension ModelCtrl: RouteCollection{ + func boot(routes: RoutesBuilder) throws{ + let apigroup = routes.grouped("models") + apigroup.get("", use: readAll) + apigroup.get(":id", use: read) + apigroup.post("", use: create) + apigroup.post(":id", use: update) + apigroup.delete(":id", use: delete) + + + } +} diff --git a/Sources/App/Controllers/m/ModuleCtrl.swift b/Sources/App/Controllers/m/ModuleCtrl.swift new file mode 100644 index 0000000..b8f7e5b --- /dev/null +++ b/Sources/App/Controllers/m/ModuleCtrl.swift @@ -0,0 +1,160 @@ +// +// ModuleCtrl.swift +// +// +// Created by Michiel Carman on 11/5/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class ModuleCtrl{ + //Create Unit + func create(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlModule.Input.self) + let output = self.createUnit(input) + return self.save(output, req, input) + + } + + //Update Unit + func update(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlModule.Input.self) + return try qbase(req: req).first().unwrap(or: Abort(.notFound)).flatMap{output in self.mapOutput(output, input) + return self.save(output, req: req) + } + } + + //Get all Divisions + func readAll(req: Request) throws -> EventLoopFuture>{ + return try qbase(req: req) + .paginate(for: req) + .map{ + page in page.map{ + self.createRead($0) + } + } + } + //Get 1 Division + func read(req: Request) throws -> EventLoopFuture{ + + return try qbase(req: req).first().unwrap(or: Abort(.internalServerError)).map{self.createRead($0)} + + } + //Delete 1 Division + func delete(req: Request) throws -> EventLoopFuture{ + + guard let id = req.parameters.get("id", as: Int.self) else{ + throw Abort(.badRequest) + } + return mdlModule.find(id, on: req.db).unwrap(or: Abort(.notFound)).flatMap{ $0.delete(on: req.db)}.map{.ok} + } + +} +extension ModuleCtrl{ + //Query Settings + func qbase(req: Request) throws -> QueryBuilder { + let query = mdlModule.query(on: req.db).with(\.$users) + if let id = req.parameters.get("id", as: Int.self){ + return query.filter(\.$id == id) + } else{ + return query + } + } + //create Output + func createRead(_ output: mdlModule) -> mdlModule.Output { + return mdlModule.Output( + id: output.id!, + name: output.name, + description: output.description, + sortorder: output.sortorder, + isactive: output.isactive, + createdate: output.createdate, + createuserid: output.createuserid, + updatedate: output.updatedate, + updateuserid: output.updateuserid, + users: output.$users.value! + ) + } + + func mapOutput(_ output: Optional.WrappedType, _ input: mdlModule.Input){ + output.name = input.name; + output.description = input.description; + output.sortorder = input.sortorder; + output.isactive = input.isactive; + output.createdate = input.createdate; + output.updatedate = input.updatedate; + output.createuserid = input.createuserid; + output.updateuserid = input.updateuserid; + output.$users.value = input.users + } + + func createUnit(_ input: mdlModule.Input) -> mdlModule { + return mdlModule( + id: input.id ?? nil + , name: input.name + , description: input.description + , sortorder: input.sortorder + , isactive: input.isactive + , createuserid: input.createuserid ?? -1 + , createdate: input.createdate + , updateuserid: input.updateuserid ?? -1 + , updatedate: input.updatedate + , users: input.users + ) + } + + //update function + func save(_ output: Optional.WrappedType, req: Request) -> EventLoopFuture { + return output + .save(on: req.db) + .map{mdlModule.Output( + id: output.id! + , name: output.name + , description: output.description + , sortorder: output.sortorder + , isactive: output.isactive + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + , users: output.users + ) + } + } + //create function + func save(_ output: mdlModule, _ req: Request, _ input: mdlModule.Input) -> EventLoopFuture { + return output + .save(on: req.db) + .map{ + mdlModule.Output( + id: output.id! + , name: output.name + , description: output.description + , sortorder: output.sortorder + , isactive: output.isactive + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + , users: input.users + ) + + } + } + +} +extension ModuleCtrl: RouteCollection{ + func boot(routes: RoutesBuilder) throws{ + let apigroup = routes.grouped("modules") + apigroup.get("", use: readAll) + apigroup.get(":id", use: read) + apigroup.post("", use: create) + apigroup.post(":id", use: update) + apigroup.delete(":id", use: delete) + + + } +} diff --git a/Sources/App/Controllers/n/NoteCtrl.swift b/Sources/App/Controllers/n/NoteCtrl.swift new file mode 100644 index 0000000..ba59929 --- /dev/null +++ b/Sources/App/Controllers/n/NoteCtrl.swift @@ -0,0 +1,156 @@ +// +// NoteCtrl.swift +// +// +// Created by Michiel Carman on 11/12/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class NoteCtrl{ + //Create Unit + func create(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlNote.Input.self) + let output = self.createUnit(input) + return self.save(output, req, input) + + } + + //Update Unit + func update(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlNote.Input.self) + return try qbase(req: req).first().unwrap(or: Abort(.notFound)).flatMap{output in self.mapOutput(output, input) + return self.save(output, req: req) + } + } + + //Get all Divisions + func readAll(req: Request) throws -> EventLoopFuture>{ + return try qbase(req: req) + .paginate(for: req) + .map{ + page in page.map{ + self.createRead($0) + } + } + } + //Get 1 Division + func read(req: Request) throws -> EventLoopFuture{ + + return try qbase(req: req).first().unwrap(or: Abort(.internalServerError)).map{self.createRead($0)} + + } + //Delete 1 Division + func delete(req: Request) throws -> EventLoopFuture{ + + guard let id = req.parameters.get("id", as: Int.self) else{ + throw Abort(.badRequest) + } + return mdlNote.find(id, on: req.db).unwrap(or: Abort(.notFound)).flatMap{ $0.delete(on: req.db)}.map{.ok} + } + +} + +extension NoteCtrl{ + //Query Settings + func qbase(req: Request) throws -> QueryBuilder { + let query = mdlNote.query(on: req.db).with(\.$notetype).with(\.$workorder).with(\.$inspectioncategoryitem) + if let id = req.parameters.get("id", as: Int.self){ + return query.filter(\.$id == id) + } else{ + return query + } + } + //create Output + func createRead(_ output: mdlNote) -> mdlNote.Output { + return mdlNote.Output( + id: output.id! + , text: output.text + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + , workorder: output.$workorder.value! + , inspectioncategoryitem: output.$inspectioncategoryitem.value! + , notetype: output.$notetype.value! + ) + } + + func mapOutput(_ output: Optional.WrappedType, _ input: mdlNote.Input){ + output.text = input.text; + output.$workorder.id = input.workorder.id!; + output.$inspectioncategoryitem.id = input.inspectioncategoryitem.id!; + output.$notetype.id = input.notetype.id!; + output.createdate = input.createdate; + output.updatedate = input.updatedate; + output.createuserid = input.createuserid; + output.updateuserid = input.updateuserid + } + + func createUnit(_ input: mdlNote.Input) -> mdlNote { + return mdlNote( + id: input.id ?? nil + , text: input.text + , createuserid: input.createuserid ?? -1 + , createdate: input.createdate + , updateuserid: input.updateuserid ?? -1 + , updatedate: input.updatedate + , workorder: input.workorder + , inspectioncategoryitem: input.inspectioncategoryitem + , notetype: input.notetype + ) + } + + //update function + func save(_ output: Optional.WrappedType, req: Request) -> EventLoopFuture { + return output + .save(on: req.db) + .map{mdlNote.Output( + id: output.id! + , text: output.text + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + , workorder: output.workorder + , inspectioncategoryitem: output.inspectioncategoryitem + , notetype: output.notetype + ) + } + } + //create function + func save(_ output: mdlNote, _ req: Request, _ input: mdlNote.Input) -> EventLoopFuture { + return output + .save(on: req.db) + .map{ + mdlNote.Output( + id: output.id! + , text: output.text + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + , workorder: input.workorder + , inspectioncategoryitem: input.inspectioncategoryitem + , notetype: input.notetype + ) + + } + } + +} +extension NoteCtrl: RouteCollection{ + func boot(routes: RoutesBuilder) throws{ + let apigroup = routes.grouped("notes") + apigroup.get("", use: readAll) + apigroup.get(":id", use: read) + apigroup.post("", use: create) + apigroup.post(":id", use: update) + apigroup.delete(":id", use: delete) + + + } +} diff --git a/Sources/App/Controllers/n/NoteTypeCtrl.swift b/Sources/App/Controllers/n/NoteTypeCtrl.swift new file mode 100644 index 0000000..d86a167 --- /dev/null +++ b/Sources/App/Controllers/n/NoteTypeCtrl.swift @@ -0,0 +1,145 @@ +// +// NoteTypeCtrl.swift +// +// +// Created by Michiel Carman on 11/5/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class NoteTypeCtrl{ + //Create Unit + func create(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlNoteType.Input.self) + let output = self.createUnit(input) + return self.save(output, req, input) + + } + + //Update Unit + func update(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlNoteType.Input.self) + return try qbase(req: req).first().unwrap(or: Abort(.notFound)).flatMap{output in self.mapOutput(output, input) + return self.save(output, req: req) + } + } + + //Get all Divisions + func readAll(req: Request) throws -> EventLoopFuture>{ + return try qbase(req: req) + .paginate(for: req) + .map{ + page in page.map{ + self.createRead($0) + } + } + } + //Get 1 Division + func read(req: Request) throws -> EventLoopFuture{ + + return try qbase(req: req).first().unwrap(or: Abort(.internalServerError)).map{self.createRead($0)} + + } + //Delete 1 Division + func delete(req: Request) throws -> EventLoopFuture{ + + guard let id = req.parameters.get("id", as: Int.self) else{ + throw Abort(.badRequest) + } + return mdlNoteType.find(id, on: req.db).unwrap(or: Abort(.notFound)).flatMap{ $0.delete(on: req.db)}.map{.ok} + } + +} +extension NoteTypeCtrl{ + //Query Settings + func qbase(req: Request) throws -> QueryBuilder { + let query = mdlNoteType.query(on: req.db).with(\.$notes) + if let id = req.parameters.get("id", as: Int.self){ + return query.filter(\.$id == id) + } else{ + return query + } + } + //create Output + func createRead(_ output: mdlNoteType) -> mdlNoteType.Output { + return mdlNoteType.Output( + id: output.id!, + name: output.name, + createdate: output.createdate, + createuserid: output.createuserid, + updatedate: output.updatedate, + updateuserid: output.updateuserid, + notes: output.$notes.value! + ) + } + + func mapOutput(_ output: Optional.WrappedType, _ input: mdlNoteType.Input){ + output.name = input.name + output.createdate = input.createdate; + output.updatedate = input.updatedate; + output.createuserid = input.createuserid; + output.updateuserid = input.updateuserid; + output.$notes.value = input.notes + } + + func createUnit(_ input: mdlNoteType.Input) -> mdlNoteType { + return mdlNoteType( + id: input.id ?? nil + , name: input.name + , createuserid: input.createuserid ?? -1 + , createdate: input.createdate + , updateuserid: input.updateuserid ?? -1 + , updatedate: input.updatedate + , notes: input.notes + ) + } + + //update function + func save(_ output: Optional.WrappedType, req: Request) -> EventLoopFuture { + return output + .save(on: req.db) + .map{mdlNoteType.Output( + id: output.id! + , name: output.name + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + , notes: output.notes + ) + } + } + //create function + func save(_ output: mdlNoteType, _ req: Request, _ input: mdlNoteType.Input) -> EventLoopFuture { + return output + .save(on: req.db) + .map{ + mdlNoteType.Output( + id: output.id! + , name: output.name + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + , notes: input.notes + ) + + } + } + +} +extension NoteTypeCtrl: RouteCollection{ + func boot(routes: RoutesBuilder) throws{ + let apigroup = routes.grouped("notetypes") + apigroup.get("", use: readAll) + apigroup.get(":id", use: read) + apigroup.post("", use: create) + apigroup.post(":id", use: update) + apigroup.delete(":id", use: delete) + + + } +} diff --git a/Sources/App/Controllers/o/OilSampleCtrl.swift b/Sources/App/Controllers/o/OilSampleCtrl.swift new file mode 100644 index 0000000..4befa73 --- /dev/null +++ b/Sources/App/Controllers/o/OilSampleCtrl.swift @@ -0,0 +1,150 @@ +// +// OilSampleCtrl.swift +// +// +// Created by Michiel Carman on 11/11/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class OilSampleCtrl{ + //Create Unit + func create(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlOilSample.Input.self) + let output = self.createUnit(input) + return self.save(output, req, input) + + } + + //Update Unit + func update(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlOilSample.Input.self) + return try qbase(req: req).first().unwrap(or: Abort(.notFound)).flatMap{output in self.mapOutput(output, input) + return self.save(output, req: req) + } + } + + //Get all Divisions + func readAll(req: Request) throws -> EventLoopFuture>{ + return try qbase(req: req) + .paginate(for: req) + .map{ + page in page.map{ + self.createRead($0) + } + } + } + //Get 1 Division + func read(req: Request) throws -> EventLoopFuture{ + + return try qbase(req: req).first().unwrap(or: Abort(.internalServerError)).map{self.createRead($0)} + + } + //Delete 1 Division + func delete(req: Request) throws -> EventLoopFuture{ + + guard let id = req.parameters.get("id", as: Int.self) else{ + throw Abort(.badRequest) + } + return mdlOilSample.find(id, on: req.db).unwrap(or: Abort(.notFound)).flatMap{ $0.delete(on: req.db)}.map{.ok} + } + +} +extension OilSampleCtrl{ + //Query Settings + func qbase(req: Request) throws -> QueryBuilder { + let query = mdlOilSample.query(on: req.db).with(\.$workorder).with(\.$oilsampleitems) + if let id = req.parameters.get("id", as: Int.self){ + return query.filter(\.$id == id) + } else{ + return query + } + } + //create Output + func createRead(_ output: mdlOilSample) -> mdlOilSample.Output { + return mdlOilSample.Output( + id: output.id!, + segment: output.segment, + createdate: output.createdate, + createuserid: output.createuserid, + updatedate: output.updatedate, + updateuserid: output.updateuserid, + workorder: output.$workorder.value!, + oilsampleitems: output.$oilsampleitems.value! + ) + } + + func mapOutput(_ output: Optional.WrappedType, _ input: mdlOilSample.Input){ + output.segment = input.segment; + output.createdate = input.createdate; + output.updatedate = input.updatedate; + output.createuserid = input.createuserid; + output.updateuserid = input.updateuserid; + output.$workorder.id = input.workorder.id!; + output.$oilsampleitems.value = input.oilsampleitems! + } + + func createUnit(_ input: mdlOilSample.Input) -> mdlOilSample { + return mdlOilSample( + id: input.id ?? nil + , segment: input.segment + , createuserid: input.createuserid ?? -1 + , createdate: input.createdate + , updateuserid: input.updateuserid ?? -1 + , updatedate: input.updatedate + , workorder: input.workorder + , oilsampleitems: input.oilsampleitems + ) + } + + //update function + func save(_ output: Optional.WrappedType, req: Request) -> EventLoopFuture { + return output + .save(on: req.db) + .map{mdlOilSample.Output( + id: output.id! + , segment: output.segment + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + , workorder: output.workorder + , oilsampleitems: output.oilsampleitems + ) + } + } + //create function + func save(_ output: mdlOilSample, _ req: Request, _ input: mdlOilSample.Input) -> EventLoopFuture { + return output + .save(on: req.db) + .map{ + mdlOilSample.Output( + id: output.id! + , segment: output.segment + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + , workorder: input.workorder + , oilsampleitems: input.oilsampleitems + ) + + } + } + +} +extension OilSampleCtrl: RouteCollection{ + func boot(routes: RoutesBuilder) throws{ + let apigroup = routes.grouped("oilsamples") + apigroup.get("", use: readAll) + apigroup.get(":id", use: read) + apigroup.post("", use: create) + apigroup.post(":id", use: update) + apigroup.delete(":id", use: delete) + + + } +} diff --git a/Sources/App/Controllers/o/OilSampleItemCtrl.swift b/Sources/App/Controllers/o/OilSampleItemCtrl.swift new file mode 100644 index 0000000..1b832a7 --- /dev/null +++ b/Sources/App/Controllers/o/OilSampleItemCtrl.swift @@ -0,0 +1,238 @@ +// +// OilSampleItem.swift +// +// +// Created by Michiel Carman on 11/11/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class OilSampleItemCtrl{ + //Create Unit + func create(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlOilSampleItem.Input.self) + let output = self.createUnit(input) + return self.save(output, req, input) + + } + + //Update Unit + func update(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlOilSampleItem.Input.self) + return try qbase(req: req).first().unwrap(or: Abort(.notFound)).flatMap{output in self.mapOutput(output, input) + return self.save(output, req: req) + } + } + + //Get all Divisions + func readAll(req: Request) throws -> EventLoopFuture>{ + return try qbase(req: req) + .paginate(for: req) + .map{ + page in page.map{ + self.createRead($0) + } + } + } + //Get 1 Division + func read(req: Request) throws -> EventLoopFuture{ + + return try qbase(req: req).first().unwrap(or: Abort(.internalServerError)).map{self.createRead($0)} + + } + //Delete 1 Division + func delete(req: Request) throws -> EventLoopFuture{ + + guard let id = req.parameters.get("id", as: Int.self) else{ + throw Abort(.badRequest) + } + return mdlOilSampleItem.find(id, on: req.db).unwrap(or: Abort(.notFound)).flatMap{ $0.delete(on: req.db)}.map{.ok} + } + +} +extension OilSampleItemCtrl{ + //Query Settings + func qbase(req: Request) throws -> QueryBuilder { + let query = mdlOilSampleItem.query(on: req.db).with(\.$oilsample) + if let id = req.parameters.get("id", as: Int.self){ + return query.filter(\.$id == id) + } else{ + return query + } + } + /* + let id: Int? + let compartmentname: String + let compartmentcode: String + let compartmentlocationname1: String + let compartmentlocationcode1: String + let compartmentlocationname2: String + let compartmentlocationcode2: String + let hoursonoil: Decimal? + let oiladded: Decimal? + let jobsitename: String + let fluidname: String + let viscosityname: String + let oilchanged: Bool? + let filterchanged: Bool? + let levelname: String + let comment: String + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + let oilsample: mdlOilSample + */ + //create Output + func createRead(_ output: mdlOilSampleItem) -> mdlOilSampleItem.Output { + return mdlOilSampleItem.Output( + id: output.id!, + compartmentname: output.compartmentname, + compartmentcode: output.compartmentcode, + compartmentlocationname1: output.compartmentlocationname1, + compartmentlocationcode1: output.compartmentlocationcode1, + compartmentlocationname2: output.compartmentlocationname2, + compartmentlocationcode2: output.compartmentlocationcode2, + hoursonoil: output.hoursonoil, + oiladded: output.oiladded, + jobsitename: output.jobsitename, + fluidname: output.fluidname, + viscosityname: output.viscosityname, + oilchanged: output.oilchanged, + filterchanged: output.filterchanged, + levelname: output.levelname, + comment: output.comment, + createdate: output.createdate, + createuserid: output.createuserid, + updatedate: output.updatedate, + updateuserid: output.updateuserid, + oilsample: output.$oilsample.value! + ) + } + + func mapOutput(_ output: Optional.WrappedType, _ input: mdlOilSampleItem.Input){ + output.compartmentname = input.compartmentname; + output.compartmentcode = input.compartmentcode; + output.compartmentlocationname1 = input.compartmentlocationname1; + output.compartmentlocationcode1 = input.compartmentlocationcode1; + output.compartmentlocationname2 = input.compartmentlocationname2; + output.compartmentlocationcode2 = input.compartmentlocationcode2; + output.hoursonoil = input.hoursonoil; + output.oiladded = input.oiladded; + output.jobsitename = input.jobsitename; + output.fluidname = input.fluidname; + output.viscosityname = input.viscosityname; + output.oilchanged = input.oilchanged; + output.filterchanged = input.filterchanged; + output.levelname = input.levelname; + output.comment = input.comment; + output.createdate = input.createdate; + output.updatedate = input.updatedate; + output.createuserid = input.createuserid; + output.updateuserid = input.updateuserid; + output.$oilsample.id = input.oilsample.id! + } + + func createUnit(_ input: mdlOilSampleItem.Input) -> mdlOilSampleItem { + return mdlOilSampleItem( + id: input.id ?? nil + , compartmentname: input.compartmentname + , compartmentcode: input.compartmentcode + , compartmentlocationname1: input.compartmentlocationname1 + , compartmentlocationcode1: input.compartmentlocationcode1 + , compartmentlocationname2: input.compartmentlocationname2 + , compartmentlocationcode2: input.compartmentlocationcode2 + , hoursonoil: input.hoursonoil + , oiladded: input.oiladded + , jobsitename: input.jobsitename + , fluidname: input.fluidname + , viscosityname: input.viscosityname + , oilchanged: input.oilchanged + , filterchanged: input.filterchanged + , levelname: input.levelname + , comment: input.comment + , createuserid: input.createuserid ?? -1 + , createdate: input.createdate + , updateuserid: input.updateuserid ?? -1 + , updatedate: input.updatedate + , oilsample: input.oilsample + ) + } + + //update function + func save(_ output: Optional.WrappedType, req: Request) -> EventLoopFuture { + return output + .save(on: req.db) + .map{mdlOilSampleItem.Output( + id: output.id! + , compartmentname: output.compartmentname + , compartmentcode: output.compartmentcode + , compartmentlocationname1: output.compartmentlocationname1 + , compartmentlocationcode1: output.compartmentlocationcode1 + , compartmentlocationname2: output.compartmentlocationname2 + , compartmentlocationcode2: output.compartmentlocationcode2 + , hoursonoil: output.hoursonoil + , oiladded: output.oiladded + , jobsitename: output.jobsitename + , fluidname: output.fluidname + , viscosityname: output.viscosityname + , oilchanged: output.oilchanged + , filterchanged: output.filterchanged + , levelname: output.levelname + , comment: output.comment + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + , oilsample: output.oilsample + ) + } + } + //create function + func save(_ output: mdlOilSampleItem, _ req: Request, _ input: mdlOilSampleItem.Input) -> EventLoopFuture { + return output + .save(on: req.db) + .map{ + mdlOilSampleItem.Output( + id: output.id! + , compartmentname: output.compartmentname + , compartmentcode: output.compartmentcode + , compartmentlocationname1: output.compartmentlocationname1 + , compartmentlocationcode1: output.compartmentlocationcode1 + , compartmentlocationname2: output.compartmentlocationname2 + , compartmentlocationcode2: output.compartmentlocationcode2 + , hoursonoil: output.hoursonoil + , oiladded: output.oiladded + , jobsitename: output.jobsitename + , fluidname: output.fluidname + , viscosityname: output.viscosityname + , oilchanged: output.oilchanged + , filterchanged: output.filterchanged + , levelname: output.levelname + , comment: output.comment + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + , oilsample: input.oilsample + ) + + } + } + +} +extension OilSampleItemCtrl: RouteCollection{ + func boot(routes: RoutesBuilder) throws{ + let apigroup = routes.grouped("oilsampleitems") + apigroup.get("", use: readAll) + apigroup.get(":id", use: read) + apigroup.post("", use: create) + apigroup.post(":id", use: update) + apigroup.delete(":id", use: delete) + + + } +} diff --git a/Sources/App/Controllers/o/OilSampleLabelCtrl.swift b/Sources/App/Controllers/o/OilSampleLabelCtrl.swift new file mode 100644 index 0000000..c715855 --- /dev/null +++ b/Sources/App/Controllers/o/OilSampleLabelCtrl.swift @@ -0,0 +1,190 @@ +// +// OilSampleLabelCtrl.swift +// +// +// Created by Michiel Carman on 11/11/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class OilSampleLabelCtrl{ + //Create Unit + func create(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlOilSampleLabel.Input.self) + let output = self.createUnit(input) + return self.save(output, req, input) + + } + + //Update Unit + func update(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlOilSampleLabel.Input.self) + return try qbase(req: req).first().unwrap(or: Abort(.notFound)).flatMap{output in self.mapOutput(output, input) + return self.save(output, req: req) + } + } + + //Get all Divisions + func readAll(req: Request) throws -> EventLoopFuture>{ + return try qbase(req: req) + .paginate(for: req) + .map{ + page in page.map{ + self.createRead($0) + } + } + } + //Get 1 Division + func read(req: Request) throws -> EventLoopFuture{ + + return try qbase(req: req).first().unwrap(or: Abort(.internalServerError)).map{self.createRead($0)} + + } + //Delete 1 Division + func delete(req: Request) throws -> EventLoopFuture{ + + guard let id = req.parameters.get("id", as: Int.self) else{ + throw Abort(.badRequest) + } + return mdlOilSampleLabel.find(id, on: req.db).unwrap(or: Abort(.notFound)).flatMap{ $0.delete(on: req.db)}.map{.ok} + } + +} +extension OilSampleLabelCtrl{ + //Query Settings + func qbase(req: Request) throws -> QueryBuilder { + let query = mdlOilSampleLabel.query(on: req.db).with(\.$labsetting) + if let id = req.parameters.get("id", as: Int.self){ + return query.filter(\.$id == id) + } else{ + return query + } + } + /* + ,name: String + ,description: String + ,size: String + ,offset: String + ,hrez: String + ,vrez: String + ,height: String + ,quantity: Int + */ + //create Output + func createRead(_ output: mdlOilSampleLabel) -> mdlOilSampleLabel.Output { + return mdlOilSampleLabel.Output( + id: output.id!, + name: output.name, + description: output.description, + size: output.size, + offset: output.offset, + hrez: output.hrez, + vrez: output.vrez, + height: output.height, + quantity: output.quantity, + createdate: output.createdate, + createuserid: output.createuserid, + updatedate: output.updatedate, + updateuserid: output.updateuserid, + labsetting: output.$labsetting.value! + ) + } + + func mapOutput(_ output: Optional.WrappedType, _ input: mdlOilSampleLabel.Input){ + output.name = input.name; + output.description = input.description; + output.size = input.size; + output.offset = input.offset; + output.hrez = input.hrez; + output.vrez = input.vrez; + output.height = input.height; + output.quantity = input.quantity; + output.createdate = input.createdate; + output.updatedate = input.updatedate; + output.createuserid = input.createuserid; + output.updateuserid = input.updateuserid; + output.$labsetting.id = input.labsetting.id! + } + + func createUnit(_ input: mdlOilSampleLabel.Input) -> mdlOilSampleLabel { + return mdlOilSampleLabel( + id: input.id ?? nil + , name: input.name + , description: input.description + , size: input.size + , offset: input.offset + , hrez: input.hrez + , vrez: input.vrez + , height: input.height + , quantity: input.quantity + , createdate: input.createdate + , createuserid: input.createuserid ?? -1 + , updatedate: input.updatedate + , updateuserid: input.updateuserid ?? -1 + , labsetting: input.labsetting + ) + } + + //update function + func save(_ output: Optional.WrappedType, req: Request) -> EventLoopFuture { + return output + .save(on: req.db) + .map{mdlOilSampleLabel.Output( + id: output.id! + , name: output.name + , description: output.description + , size: output.size + , offset: output.offset + , hrez: output.hrez + , vrez: output.vrez + , height: output.height + , quantity: output.quantity + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + , labsetting: output.labsetting + ) + } + } + //create function + func save(_ output: mdlOilSampleLabel, _ req: Request, _ input: mdlOilSampleLabel.Input) -> EventLoopFuture { + return output + .save(on: req.db) + .map{ + mdlOilSampleLabel.Output( + id: output.id! + , name: output.name + , description: output.description + , size: output.size + , offset: output.offset + , hrez: output.hrez + , vrez: output.vrez + , height: output.height + , quantity: output.quantity + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + , labsetting: input.labsetting + ) + + } + } + +} +extension OilSampleLabelCtrl: RouteCollection{ + func boot(routes: RoutesBuilder) throws{ + let apigroup = routes.grouped("oilsamplelabels") + apigroup.get("", use: readAll) + apigroup.get(":id", use: read) + apigroup.post("", use: create) + apigroup.post(":id", use: update) + apigroup.delete(":id", use: delete) + + + } +} diff --git a/Sources/App/Controllers/p/PartCtrl.swift b/Sources/App/Controllers/p/PartCtrl.swift new file mode 100644 index 0000000..02fb876 --- /dev/null +++ b/Sources/App/Controllers/p/PartCtrl.swift @@ -0,0 +1,155 @@ +// +// Part.swift +// +// +// Created by Michiel Carman on 11/10/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class PartCtrl{ + //Create Unit + func create(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlPart.Input.self) + let output = self.createUnit(input) + return self.save(output, req, input) + + } + + //Update Unit + func update(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlPart.Input.self) + return try qbase(req: req).first().unwrap(or: Abort(.notFound)).flatMap{output in self.mapOutput(output, input) + return self.save(output, req: req) + } + } + + //Get all Divisions + func readAll(req: Request) throws -> EventLoopFuture>{ + return try qbase(req: req) + .paginate(for: req) + .map{ + page in page.map{ + self.createRead($0) + } + } + } + //Get 1 Division + func read(req: Request) throws -> EventLoopFuture{ + + return try qbase(req: req).first().unwrap(or: Abort(.internalServerError)).map{self.createRead($0)} + + } + //Delete 1 Division + func delete(req: Request) throws -> EventLoopFuture{ + + guard let id = req.parameters.get("id", as: Int.self) else{ + throw Abort(.badRequest) + } + return mdlPart.find(id, on: req.db).unwrap(or: Abort(.notFound)).flatMap{ $0.delete(on: req.db)}.map{.ok} + } + +} +extension PartCtrl{ + //Query Settings + func qbase(req: Request) throws -> QueryBuilder { + let query = mdlPart.query(on: req.db) + if let id = req.parameters.get("id", as: Int.self){ + return query.filter(\.$id == id) + } else{ + return query + } + } + //create Output + func createRead(_ output: mdlPart) -> mdlPart.Output { + return mdlPart.Output( + id: output.id!, + name: output.name, + number: output.number, + description: output.description, + isactive: output.isactive, + createdate: output.createdate, + createuserid: output.createuserid, + updatedate: output.updatedate, + updateuserid: output.updateuserid + ) + } + + func mapOutput(_ output: Optional.WrappedType, _ input: mdlPart.Input){ + output.name = input.name; + output.number = input.number; + output.description = input.description; + output.isactive = input.isactive; + output.createdate = input.createdate; + output.updatedate = input.updatedate; + output.createuserid = input.createuserid; + output.updateuserid = input.updateuserid; + } + + func createUnit(_ input: mdlPart.Input) -> mdlPart { + return mdlPart( + id: input.id ?? nil + , name: input.name + , number: input.number + , description: input.description + , isactive: input.isactive + , createuserid: input.createuserid ?? -1 + , createdate: input.createdate + , updateuserid: input.updateuserid ?? -1 + , updatedate: input.updatedate + ) + } + + //update function + func save(_ output: Optional.WrappedType, req: Request) -> EventLoopFuture { + return output + .save(on: req.db) + .map{mdlPart.Output( + id: output.id! + , name: output.name + , number: output.number + , description: output.description + , isactive: output.isactive + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + ) + } + } + //create function + func save(_ output: mdlPart, _ req: Request, _ input: mdlPart.Input) -> EventLoopFuture { + return output + .save(on: req.db) + .map{ + mdlPart.Output( + id: output.id! + , name: output.name + , number: output.number + , description: output.description + , isactive: output.isactive + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + ) + + } + } + +} +extension PartCtrl: RouteCollection{ + func boot(routes: RoutesBuilder) throws{ + let apigroup = routes.grouped("parts") + apigroup.get("", use: readAll) + apigroup.get(":id", use: read) + apigroup.post("", use: create) + apigroup.post(":id", use: update) + apigroup.delete(":id", use: delete) + + + } +} diff --git a/Sources/App/Controllers/p/PriorityCtrl.swift b/Sources/App/Controllers/p/PriorityCtrl.swift new file mode 100644 index 0000000..e40020e --- /dev/null +++ b/Sources/App/Controllers/p/PriorityCtrl.swift @@ -0,0 +1,145 @@ +// +// PriorityCtrl.swift +// +// +// Created by Michiel Carman on 11/5/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class PriorityCtrl{ + //Create Unit + func create(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlPriority.Input.self) + let output = self.createUnit(input) + return self.save(output, req, input) + + } + + //Update Unit + func update(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlPriority.Input.self) + return try qbase(req: req).first().unwrap(or: Abort(.notFound)).flatMap{output in self.mapOutput(output, input) + return self.save(output, req: req) + } + } + + //Get all Divisions + func readAll(req: Request) throws -> EventLoopFuture>{ + return try qbase(req: req) + .paginate(for: req) + .map{ + page in page.map{ + self.createRead($0) + } + } + } + //Get 1 Division + func read(req: Request) throws -> EventLoopFuture{ + + return try qbase(req: req).first().unwrap(or: Abort(.internalServerError)).map{self.createRead($0)} + + } + //Delete 1 Division + func delete(req: Request) throws -> EventLoopFuture{ + + guard let id = req.parameters.get("id", as: Int.self) else{ + throw Abort(.badRequest) + } + return mdlPriority.find(id, on: req.db).unwrap(or: Abort(.notFound)).flatMap{ $0.delete(on: req.db)}.map{.ok} + } + +} +extension PriorityCtrl{ + //Query Settings + func qbase(req: Request) throws -> QueryBuilder { + let query = mdlPriority.query(on: req.db).with(\.$workorders) + if let id = req.parameters.get("id", as: Int.self){ + return query.filter(\.$id == id) + } else{ + return query + } + } + //create Output + func createRead(_ output: mdlPriority) -> mdlPriority.Output { + return mdlPriority.Output( + id: output.id!, + name: output.name, + createdate: output.createdate, + createuserid: output.createuserid, + updatedate: output.updatedate, + updateuserid: output.updateuserid, + workorders: output.$workorders.value! + ) + } + + func mapOutput(_ output: Optional.WrappedType, _ input: mdlPriority.Input){ + output.name = input.name; + output.createdate = input.createdate; + output.updatedate = input.updatedate; + output.createuserid = input.createuserid; + output.updateuserid = input.updateuserid; + output.$workorders.value = input.workorders + } + + func createUnit(_ input: mdlPriority.Input) -> mdlPriority { + return mdlPriority( + id: input.id ?? nil + , name: input.name + , createuserid: input.createuserid ?? -1 + , createdate: input.createdate + , updateuserid: input.updateuserid ?? -1 + , updatedate: input.updatedate + , workorders: input.workorders + ) + } + + //update function + func save(_ output: Optional.WrappedType, req: Request) -> EventLoopFuture { + return output + .save(on: req.db) + .map{mdlPriority.Output( + id: output.id! + , name: output.name + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + , workorders: output.workorders + ) + } + } + //create function + func save(_ output: mdlPriority, _ req: Request, _ input: mdlPriority.Input) -> EventLoopFuture { + return output + .save(on: req.db) + .map{ + mdlPriority.Output( + id: output.id! + , name: output.name + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + , workorders: input.workorders + ) + + } + } + +} +extension PriorityCtrl: RouteCollection{ + func boot(routes: RoutesBuilder) throws{ + let apigroup = routes.grouped("priorities") + apigroup.get("", use: readAll) + apigroup.get(":id", use: read) + apigroup.post("", use: create) + apigroup.post(":id", use: update) + apigroup.delete(":id", use: delete) + + + } +} diff --git a/Sources/App/Controllers/p/ProductCtrl.swift b/Sources/App/Controllers/p/ProductCtrl.swift new file mode 100644 index 0000000..45e0bf9 --- /dev/null +++ b/Sources/App/Controllers/p/ProductCtrl.swift @@ -0,0 +1,160 @@ +// +// ProductCtrl.swift +// +// +// Created by Michiel Carman on 11/5/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class ProductCtrl{ + //Create Unit + func create(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlProduct.Input.self) + let output = self.createUnit(input) + return self.save(output, req, input) + + } + + //Update Unit + func update(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlProduct.Input.self) + return try qbase(req: req).first().unwrap(or: Abort(.notFound)).flatMap{output in self.mapOutput(output, input) + return self.save(output, req: req) + } + } + + //Get all Divisions + func readAll(req: Request) throws -> EventLoopFuture>{ + return try qbase(req: req) + .paginate(for: req) + .map{ + page in page.map{ + self.createRead($0) + } + } + } + //Get 1 Division + func read(req: Request) throws -> EventLoopFuture{ + + return try qbase(req: req).first().unwrap(or: Abort(.internalServerError)).map{self.createRead($0)} + + } + //Delete 1 Division + func delete(req: Request) throws -> EventLoopFuture{ + + guard let id = req.parameters.get("id", as: Int.self) else{ + throw Abort(.badRequest) + } + return mdlProduct.find(id, on: req.db).unwrap(or: Abort(.notFound)).flatMap{ $0.delete(on: req.db)}.map{.ok} + } + +} +extension ProductCtrl{ + //Query Settings + func qbase(req: Request) throws -> QueryBuilder { + let query = mdlProduct.query(on: req.db).with(\.$models).with(\.$templates) + if let id = req.parameters.get("id", as: Int.self){ + return query.filter(\.$id == id) + } else{ + return query + } + } + //create Output + func createRead(_ output: mdlProduct) -> mdlProduct.Output { + return mdlProduct.Output( + id: output.id!, + code: output.code, + description: output.description, + isactive: output.isactive, + createdate: output.createdate, + createuserid: output.createuserid, + updatedate: output.updatedate, + updateuserid: output.updateuserid, + models: output.$models.value!, + templates: output.$templates.value! + ) + } + + func mapOutput(_ output: Optional.WrappedType, _ input: mdlProduct.Input){ + output.code = input.code; + output.description = input.description; + output.isactive = input.isactive; + output.createdate = input.createdate; + output.updatedate = input.updatedate; + output.createuserid = input.createuserid; + output.updateuserid = input.updateuserid; + output.$models.value = input.models; + output.$templates.value = input.templates; + } + + func createUnit(_ input: mdlProduct.Input) -> mdlProduct { + return mdlProduct( + id: input.id ?? nil + , code: input.code + , description: input.description + , isactive: input.isactive + , createuserid: input.createuserid ?? -1 + , createdate: input.createdate + , updateuserid: input.updateuserid ?? -1 + , updatedate: input.updatedate + , models: input.models + , templates: input.templates + ) + } + + //update function + func save(_ output: Optional.WrappedType, req: Request) -> EventLoopFuture { + return output + .save(on: req.db) + .map{mdlProduct.Output( + id: output.id! + , code: output.code + , description: output.description + , isactive: output.isactive + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + , models: output.models + , templates: output.templates + ) + } + } + //create function + func save(_ output: mdlProduct, _ req: Request, _ input: mdlProduct.Input) -> EventLoopFuture { + return output + .save(on: req.db) + .map{ + mdlProduct.Output( + id: output.id! + , code: output.code + , description: output.description + , isactive: output.isactive + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + , models: input.models + , templates: input.templates + ) + + } + } + +} +extension ProductCtrl: RouteCollection{ + func boot(routes: RoutesBuilder) throws{ + let apigroup = routes.grouped("products") + apigroup.get("", use: readAll) + apigroup.get(":id", use: read) + apigroup.post("", use: create) + apigroup.post(":id", use: update) + apigroup.delete(":id", use: delete) + + + } +} diff --git a/Sources/App/Controllers/r/ReasonCtrl.swift b/Sources/App/Controllers/r/ReasonCtrl.swift new file mode 100644 index 0000000..2881d3f --- /dev/null +++ b/Sources/App/Controllers/r/ReasonCtrl.swift @@ -0,0 +1,155 @@ +// +// ReasonCtrl.swift +// +// +// Created by Michiel Carman on 11/5/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class ReasonCtrl{ + //Create Unit + func create(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlReason.Input.self) + let output = self.createUnit(input) + return self.save(output, req, input) + + } + + //Update Unit + func update(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlReason.Input.self) + return try qbase(req: req).first().unwrap(or: Abort(.notFound)).flatMap{output in self.mapOutput(output, input) + return self.save(output, req: req) + } + } + + //Get all Divisions + func readAll(req: Request) throws -> EventLoopFuture>{ + return try qbase(req: req) + .paginate(for: req) + .map{ + page in page.map{ + self.createRead($0) + } + } + } + //Get 1 Division + func read(req: Request) throws -> EventLoopFuture{ + + return try qbase(req: req).first().unwrap(or: Abort(.internalServerError)).map{self.createRead($0)} + + } + //Delete 1 Division + func delete(req: Request) throws -> EventLoopFuture{ + + guard let id = req.parameters.get("id", as: Int.self) else{ + throw Abort(.badRequest) + } + return mdlReason.find(id, on: req.db).unwrap(or: Abort(.notFound)).flatMap{ $0.delete(on: req.db)}.map{.ok} + } + +} +extension ReasonCtrl{ + //Query Settings + func qbase(req: Request) throws -> QueryBuilder { + let query = mdlReason.query(on: req.db).with(\.$workorders) + if let id = req.parameters.get("id", as: Int.self){ + return query.filter(\.$id == id) + } else{ + return query + } + } + //create Output + func createRead(_ output: mdlReason) -> mdlReason.Output { + return mdlReason.Output( + id: output.id!, + name: output.name, + description: output.description, + isactive: output.isactive, + createdate: output.createdate, + createuserid: output.createuserid, + updatedate: output.updatedate, + updateuserid: output.updateuserid, + workorders: output.$workorders.value! + ) + } + + func mapOutput(_ output: Optional.WrappedType, _ input: mdlReason.Input){ + output.name = input.name; + output.description = input.description; + output.isactive = input.isactive; + output.createdate = input.createdate; + output.updatedate = input.updatedate; + output.createuserid = input.createuserid; + output.updateuserid = input.updateuserid; + output.$workorders.value = input.workorders + } + + func createUnit(_ input: mdlReason.Input) -> mdlReason { + return mdlReason( + id: input.id ?? nil + , name: input.name + , description: input.description + , isactive: input.isactive + , createuserid: input.createuserid ?? -1 + , createdate: input.createdate + , updateuserid: input.updateuserid ?? -1 + , updatedate: input.updatedate + , workorders: input.workorders + ) + } + + //update function + func save(_ output: Optional.WrappedType, req: Request) -> EventLoopFuture { + return output + .save(on: req.db) + .map{mdlReason.Output( + id: output.id! + , name: output.name + , description: output.description + , isactive: output.isactive + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + , workorders: output.workorders + ) + } + } + //create function + func save(_ output: mdlReason, _ req: Request, _ input: mdlReason.Input) -> EventLoopFuture { + return output + .save(on: req.db) + .map{ + mdlReason.Output( + id: output.id! + , name: output.name + , description: output.description + , isactive: output.isactive + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + , workorders: input.workorders + ) + + } + } + +} +extension ReasonCtrl: RouteCollection{ + func boot(routes: RoutesBuilder) throws{ + let apigroup = routes.grouped("reasons") + apigroup.get("", use: readAll) + apigroup.get(":id", use: read) + apigroup.post("", use: create) + apigroup.post(":id", use: update) + apigroup.delete(":id", use: delete) + + + } +} diff --git a/Sources/App/Controllers/r/RepairTypeCtrl.swift b/Sources/App/Controllers/r/RepairTypeCtrl.swift new file mode 100644 index 0000000..85e7fbd --- /dev/null +++ b/Sources/App/Controllers/r/RepairTypeCtrl.swift @@ -0,0 +1,150 @@ +// +// RepairTypeCtrl.swift +// +// +// Created by Michiel Carman on 11/5/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class RepairTypeCtrl{ + //Create Unit + func create(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlRepairType.Input.self) + let output = self.createUnit(input) + return self.save(output, req, input) + + } + + //Update Unit + func update(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlRepairType.Input.self) + return try qbase(req: req).first().unwrap(or: Abort(.notFound)).flatMap{output in self.mapOutput(output, input) + return self.save(output, req: req) + } + } + + //Get all Divisions + func readAll(req: Request) throws -> EventLoopFuture>{ + return try qbase(req: req) + .paginate(for: req) + .map{ + page in page.map{ + self.createRead($0) + } + } + } + //Get 1 Division + func read(req: Request) throws -> EventLoopFuture{ + + return try qbase(req: req).first().unwrap(or: Abort(.internalServerError)).map{self.createRead($0)} + + } + //Delete 1 Division + func delete(req: Request) throws -> EventLoopFuture{ + + guard let id = req.parameters.get("id", as: Int.self) else{ + throw Abort(.badRequest) + } + return mdlRepairType.find(id, on: req.db).unwrap(or: Abort(.notFound)).flatMap{ $0.delete(on: req.db)}.map{.ok} + } + +} +extension RepairTypeCtrl{ + //Query Settings + func qbase(req: Request) throws -> QueryBuilder { + let query = mdlRepairType.query(on: req.db).with(\.$responsetypes) + if let id = req.parameters.get("id", as: Int.self){ + return query.filter(\.$id == id) + } else{ + return query + } + } + //create Output + func createRead(_ output: mdlRepairType) -> mdlRepairType.Output { + return mdlRepairType.Output( + id: output.id!, + name: output.name, + color: output.color, + createdate: output.createdate, + createuserid: output.createuserid, + updatedate: output.updatedate, + updateuserid: output.updateuserid, + responsetypes: output.$responsetypes.value! + ) + } + + func mapOutput(_ output: Optional.WrappedType, _ input: mdlRepairType.Input){ + output.name = input.name; + output.color = input.color; + output.createdate = input.createdate; + output.updatedate = input.updatedate; + output.createuserid = input.createuserid; + output.updateuserid = input.updateuserid; + output.$responsetypes.value = input.responsetypes! + } + + func createUnit(_ input: mdlRepairType.Input) -> mdlRepairType { + return mdlRepairType( + id: input.id ?? nil + , name: input.name + , color: input.color + , createuserid: input.createuserid ?? -1 + , createdate: input.createdate + , updateuserid: input.updateuserid ?? -1 + , updatedate: input.updatedate + , responsetypes: input.responsetypes! + ) + } + + //update function + func save(_ output: Optional.WrappedType, req: Request) -> EventLoopFuture { + return output + .save(on: req.db) + .map{mdlRepairType.Output( + id: output.id! + , name: output.name + , color: output.color + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + , responsetypes: output.responsetypes + ) + } + } + //create function + func save(_ output: mdlRepairType, _ req: Request, _ input: mdlRepairType.Input) -> EventLoopFuture { + return output + .save(on: req.db) + .map{ + mdlRepairType.Output( + id: output.id! + , name: output.name + , color: output.color + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + , responsetypes: input.responsetypes + ) + + } + } + +} +extension RepairTypeCtrl: RouteCollection{ + func boot(routes: RoutesBuilder) throws{ + let apigroup = routes.grouped("repairtypes") + apigroup.get("", use: readAll) + apigroup.get(":id", use: read) + apigroup.post("", use: create) + apigroup.post(":id", use: update) + apigroup.delete(":id", use: delete) + + + } +} diff --git a/Sources/App/Controllers/r/ResponseTypeCtrl.swift b/Sources/App/Controllers/r/ResponseTypeCtrl.swift new file mode 100644 index 0000000..9a932fb --- /dev/null +++ b/Sources/App/Controllers/r/ResponseTypeCtrl.swift @@ -0,0 +1,169 @@ +// +// ResponseTypeCtrl.swift +// +// +// Created by Michiel Carman on 11/9/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class ResponseTypeCtrl{ + //Create Unit + func create(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlResponseType.Input.self) + let output = self.createUnit(input) + return self.save(output, req, input) + + } + + //Update Unit + func update(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlResponseType.Input.self) + return try qbase(req: req).first().unwrap(or: Abort(.notFound)).flatMap{output in self.mapOutput(output, input) + return self.save(output, req: req) + } + } + + //Get all Divisions + func readAll(req: Request) throws -> EventLoopFuture>{ + return try qbase(req: req) + .paginate(for: req) + .map{ + page in page.map{ + self.createRead($0) + } + } + } + //Get 1 Division + func read(req: Request) throws -> EventLoopFuture{ + + return try qbase(req: req).first().unwrap(or: Abort(.internalServerError)).map{self.createRead($0)} + + } + //Delete 1 Division + func delete(req: Request) throws -> EventLoopFuture{ + + guard let id = req.parameters.get("id", as: Int.self) else{ + throw Abort(.badRequest) + } + return mdlResponseType.find(id, on: req.db).unwrap(or: Abort(.notFound)).flatMap{ $0.delete(on: req.db)}.map{.ok} + } + +} + +extension ResponseTypeCtrl{ + //Query Settings + func qbase(req: Request) throws -> QueryBuilder { + let query = mdlResponseType.query(on: req.db) + .with(\.$repairtype) + .with(\.$inspectioncategoryitemresopnsetypes) + .with(\.$items) + if let id = req.parameters.get("id", as: Int.self){ + return query.filter(\.$id == id) + } else{ + return query + } + } + //create Output + func createRead(_ output: mdlResponseType) -> mdlResponseType.Output { + return mdlResponseType.Output( + id: output.id!, + name: output.name, + color: output.color, + isactive: output.isactive, + createdate: output.createdate, + createuserid: output.createuserid, + updatedate: output.updatedate, + updateuserid: output.updateuserid, + repairtype: output.$repairtype.value!, + items: output.$items.value!, + inspectioncategoryitemresopnsetypes: output.$inspectioncategoryitemresopnsetypes.value! + ) + } + + func mapOutput(_ output: Optional.WrappedType, _ input: mdlResponseType.Input){ + output.name = input.name; + output.color = input.color; + output.isactive = input.isactive; + output.createdate = input.createdate; + output.updatedate = input.updatedate; + output.createuserid = input.createuserid; + output.updateuserid = input.updateuserid; + output.$repairtype.id = input.repairtype.id!; + output.$inspectioncategoryitemresopnsetypes.value = input.inspectioncategoryitemresopnsetypes; + output.$items.value = input.items + } + + func createUnit(_ input: mdlResponseType.Input) -> mdlResponseType { + return mdlResponseType( + id: input.id ?? nil + , name: input.name + , color: input.color + , isactive: input.isactive + , createuserid: input.createuserid ?? -1 + , createdate: input.createdate + , updateuserid: input.updateuserid ?? -1 + , updatedate: input.updatedate + , repairtype: input.repairtype + , items: input.items + , inspectioncategoryitemresopnsetypes: input.inspectioncategoryitemresopnsetypes + ) + } + + //update function + func save(_ output: Optional.WrappedType, req: Request) -> EventLoopFuture { + return output + .save(on: req.db) + .map{mdlResponseType.Output( + id: output.id! + , name: output.name + , color: output.color + , isactive: output.isactive + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + , repairtype: output.repairtype + , items: output.items + , inspectioncategoryitemresopnsetypes: output.inspectioncategoryitemresopnsetypes + ) + } + } + //create function + func save(_ output: mdlResponseType, _ req: Request, _ input: mdlResponseType.Input) -> EventLoopFuture { + return output + .save(on: req.db) + .map{ + mdlResponseType.Output( + id: output.id! + , name: output.name + , color: output.color + , isactive: output.isactive + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + , repairtype: input.repairtype + , items: input.items + , inspectioncategoryitemresopnsetypes: input.inspectioncategoryitemresopnsetypes + ) + + } + } + +} +extension ResponseTypeCtrl: RouteCollection{ + func boot(routes: RoutesBuilder) throws{ + let apigroup = routes.grouped("responsetypes") + apigroup.get("", use: readAll) + apigroup.get(":id", use: read) + apigroup.post("", use: create) + apigroup.post(":id", use: update) + apigroup.delete(":id", use: delete) + + + } +} diff --git a/Sources/App/Controllers/r/RoleCtrl.swift b/Sources/App/Controllers/r/RoleCtrl.swift new file mode 100644 index 0000000..a0ec459 --- /dev/null +++ b/Sources/App/Controllers/r/RoleCtrl.swift @@ -0,0 +1,135 @@ +// +// RoleCtrl.swift +// +// +// Created by Michiel Carman on 11/4/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class RoleCtrl{ + //Create Unit + func create(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlRole.Input.self) + let output = self.createUnit(input) + return self.save(output, req, input) + + } + + //Update Unit + func update(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlRole.Input.self) + return try qbase(req: req).first().unwrap(or: Abort(.notFound)).flatMap{output in self.mapOutput(output, input) + return self.save(output, req: req) + } + } + + //Get all Divisions + func readAll(req: Request) throws -> EventLoopFuture>{ + return try qbase(req: req) + .paginate(for: req) + .map{ + page in page.map{ + self.createRead($0) + } + } + } + //Get 1 Division + func read(req: Request) throws -> EventLoopFuture{ + + return try qbase(req: req).first().unwrap(or: Abort(.internalServerError)).map{self.createRead($0)} + + } + //Delete 1 Division + func delete(req: Request) throws -> EventLoopFuture{ + + guard let id = req.parameters.get("id", as: Int.self) else{ + throw Abort(.badRequest) + } + return mdlRole.find(id, on: req.db).unwrap(or: Abort(.notFound)).flatMap{ $0.delete(on: req.db)}.map{.ok} + } + +} +extension RoleCtrl{ + //Query Settings + func qbase(req: Request) throws -> QueryBuilder { + let query = mdlRole.query(on: req.db) + .with(\.$users) + if let id = req.parameters.get("id", as: Int.self){ + return query.filter(\.$id == id) + } else{ + return query + } + } + //create Output + func createRead(_ output: mdlRole) -> mdlRole.Output { + return mdlRole.Output( + id: output.id!, + name: output.name, + description: output.description, + //createdate: output.createdate, + //createuserid: output.createuserid, + //updatedate: output.updatedate, + //updateuserid: output.updateuserid, + users: output.$users.value! + ) + } + + func mapOutput(_ output: Optional.WrappedType, _ input: mdlRole.Input){ + output.name = input.name; + output.description = input.description; + output.$users.value = input.users + } + + func createUnit(_ input: mdlRole.Input) -> mdlRole { + return mdlRole( + id: input.id ?? nil + , name: input.name + , description: input.name + , users: input.users + ) + } + + //update function + func save(_ output: Optional.WrappedType, req: Request) -> EventLoopFuture { + return output + .save(on: req.db) + .map{mdlRole.Output( + id: output.id! + , name: output.name + , description: output.description + , users: output.users + ) + } + } + //create function + func save(_ output: mdlRole, _ req: Request, _ input: mdlRole.Input) -> EventLoopFuture { + return output + .save(on: req.db) + .map{ + mdlRole.Output( + id: output.id! + , name: output.name + , description: output.description + , users: input.users + ) + + } + } + +} +extension RoleCtrl: RouteCollection{ + func boot(routes: RoutesBuilder) throws{ + let apigroup = routes.grouped("roles") + apigroup.get("", use: readAll) + apigroup.get(":id", use: read) + apigroup.post("", use: create) + apigroup.post(":id", use: update) + apigroup.delete(":id", use: delete) + + + } +} diff --git a/Sources/App/Controllers/s/SignatureCtrl.swift b/Sources/App/Controllers/s/SignatureCtrl.swift new file mode 100644 index 0000000..c24e231 --- /dev/null +++ b/Sources/App/Controllers/s/SignatureCtrl.swift @@ -0,0 +1,150 @@ +// +// SignatureCtrl.swift +// +// +// Created by Michiel Carman on 11/12/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class SignatureCtrl{ + //Create Unit + func create(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlSignature.Input.self) + let output = self.createUnit(input) + return self.save(output, req, input) + + } + + //Update Unit + func update(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlSignature.Input.self) + return try qbase(req: req).first().unwrap(or: Abort(.notFound)).flatMap{output in self.mapOutput(output, input) + return self.save(output, req: req) + } + } + + //Get all Divisions + func readAll(req: Request) throws -> EventLoopFuture>{ + return try qbase(req: req) + .paginate(for: req) + .map{ + page in page.map{ + self.createRead($0) + } + } + } + //Get 1 Division + func read(req: Request) throws -> EventLoopFuture{ + + return try qbase(req: req).first().unwrap(or: Abort(.internalServerError)).map{self.createRead($0)} + + } + //Delete 1 Division + func delete(req: Request) throws -> EventLoopFuture{ + + guard let id = req.parameters.get("id", as: Int.self) else{ + throw Abort(.badRequest) + } + return mdlSignature.find(id, on: req.db).unwrap(or: Abort(.notFound)).flatMap{ $0.delete(on: req.db)}.map{.ok} + } + +} +extension SignatureCtrl{ + //Query Settings + func qbase(req: Request) throws -> QueryBuilder { + let query = mdlSignature.query(on: req.db).with(\.$signaturetype).with(\.$workorder) + if let id = req.parameters.get("id", as: Int.self){ + return query.filter(\.$id == id) + } else{ + return query + } + } + //create Output + func createRead(_ output: mdlSignature) -> mdlSignature.Output { + return mdlSignature.Output( + id: output.id! + , path: output.path + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + , workorder: output.$workorder.value! + , signaturetype: output.$signaturetype.value! + ) + } + + func mapOutput(_ output: Optional.WrappedType, _ input: mdlSignature.Input){ + output.path = input.path; + output.createdate = input.createdate; + output.updatedate = input.updatedate; + output.createuserid = input.createuserid; + output.updateuserid = input.updateuserid; + output.$workorder.id = input.workorder.id!; + output.$signaturetype.id = input.signaturetype.id! + } + + func createUnit(_ input: mdlSignature.Input) -> mdlSignature { + return mdlSignature( + id: input.id ?? nil + , path: input.path + , createuserid: input.createuserid ?? -1 + , createdate: input.createdate + , updateuserid: input.updateuserid ?? -1 + , updatedate: input.updatedate + , workorder: input.workorder + , signaturetype: input.signaturetype + ) + } + + //update function + func save(_ output: Optional.WrappedType, req: Request) -> EventLoopFuture { + return output + .save(on: req.db) + .map{mdlSignature.Output( + id: output.id! + , path: output.path + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + , workorder: output.workorder + , signaturetype: output.signaturetype + ) + } + } + //create function + func save(_ output: mdlSignature, _ req: Request, _ input: mdlSignature.Input) -> EventLoopFuture { + return output + .save(on: req.db) + .map{ + mdlSignature.Output( + id: output.id! + , path: output.path + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + , workorder: input.workorder + , signaturetype: input.signaturetype + ) + + } + } + +} +extension SignatureCtrl: RouteCollection{ + func boot(routes: RoutesBuilder) throws{ + let apigroup = routes.grouped("signatures") + apigroup.get("", use: readAll) + apigroup.get(":id", use: read) + apigroup.post("", use: create) + apigroup.post(":id", use: update) + apigroup.delete(":id", use: delete) + + + } +} diff --git a/Sources/App/Controllers/s/SignatureTypeCtrl.swift b/Sources/App/Controllers/s/SignatureTypeCtrl.swift new file mode 100644 index 0000000..52458a1 --- /dev/null +++ b/Sources/App/Controllers/s/SignatureTypeCtrl.swift @@ -0,0 +1,145 @@ +// +// SignatureTypeCtrl.swift +// +// +// Created by Michiel Carman on 11/5/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class SignatureTypeCtrl{ + //Create Unit + func create(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlSignatureType.Input.self) + let output = self.createUnit(input) + return self.save(output, req, input) + + } + + //Update Unit + func update(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlSignatureType.Input.self) + return try qbase(req: req).first().unwrap(or: Abort(.notFound)).flatMap{output in self.mapOutput(output, input) + return self.save(output, req: req) + } + } + + //Get all Divisions + func readAll(req: Request) throws -> EventLoopFuture>{ + return try qbase(req: req) + .paginate(for: req) + .map{ + page in page.map{ + self.createRead($0) + } + } + } + //Get 1 Division + func read(req: Request) throws -> EventLoopFuture{ + + return try qbase(req: req).first().unwrap(or: Abort(.internalServerError)).map{self.createRead($0)} + + } + //Delete 1 Division + func delete(req: Request) throws -> EventLoopFuture{ + + guard let id = req.parameters.get("id", as: Int.self) else{ + throw Abort(.badRequest) + } + return mdlSignatureType.find(id, on: req.db).unwrap(or: Abort(.notFound)).flatMap{ $0.delete(on: req.db)}.map{.ok} + } + +} +extension SignatureTypeCtrl{ + //Query Settings + func qbase(req: Request) throws -> QueryBuilder { + let query = mdlSignatureType.query(on: req.db).with(\.$signatures) + if let id = req.parameters.get("id", as: Int.self){ + return query.filter(\.$id == id) + } else{ + return query + } + } + //create Output + func createRead(_ output: mdlSignatureType) -> mdlSignatureType.Output { + return mdlSignatureType.Output( + id: output.id!, + name: output.name, + createdate: output.createdate, + createuserid: output.createuserid, + updatedate: output.updatedate, + updateuserid: output.updateuserid, + signatures: output.$signatures.value! + ) + } + + func mapOutput(_ output: Optional.WrappedType, _ input: mdlSignatureType.Input){ + output.name = input.name; + output.createdate = input.createdate; + output.updatedate = input.updatedate; + output.createuserid = input.createuserid; + output.updateuserid = input.updateuserid; + output.$signatures.value = input.signatures + } + + func createUnit(_ input: mdlSignatureType.Input) -> mdlSignatureType { + return mdlSignatureType( + id: input.id ?? nil + , name: input.name + , createuserid: input.createuserid ?? -1 + , createdate: input.createdate + , updateuserid: input.updateuserid ?? -1 + , updatedate: input.updatedate + , signatures: input.signatures + ) + } + + //update function + func save(_ output: Optional.WrappedType, req: Request) -> EventLoopFuture { + return output + .save(on: req.db) + .map{mdlSignatureType.Output( + id: output.id! + , name: output.name + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + , signatures: output.signatures + ) + } + } + //create function + func save(_ output: mdlSignatureType, _ req: Request, _ input: mdlSignatureType.Input) -> EventLoopFuture { + return output + .save(on: req.db) + .map{ + mdlSignatureType.Output( + id: output.id! + , name: output.name + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + , signatures: input.signatures + ) + + } + } + +} +extension SignatureTypeCtrl: RouteCollection{ + func boot(routes: RoutesBuilder) throws{ + let apigroup = routes.grouped("signaturetypes") + apigroup.get("", use: readAll) + apigroup.get(":id", use: read) + apigroup.post("", use: create) + apigroup.post(":id", use: update) + apigroup.delete(":id", use: delete) + + + } +} diff --git a/Sources/App/Controllers/s/SpecCtrl.swift b/Sources/App/Controllers/s/SpecCtrl.swift new file mode 100644 index 0000000..fefc88a --- /dev/null +++ b/Sources/App/Controllers/s/SpecCtrl.swift @@ -0,0 +1,168 @@ +// +// SpecCtrl.swift +// +// +// Created by Michiel Carman on 11/9/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class SpecCtrl{ + //Create Unit + func create(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlSpec.Input.self) + let output = self.createUnit(input) + return self.save(output, req, input) + + } + + //Update Unit + func update(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlSpec.Input.self) + return try qbase(req: req).first().unwrap(or: Abort(.notFound)).flatMap{output in self.mapOutput(output, input) + return self.save(output, req: req) + } + } + + //Get all Divisions + func readAll(req: Request) throws -> EventLoopFuture>{ + return try qbase(req: req) + .paginate(for: req) + .map{ + page in page.map{ + self.createRead($0) + } + } + } + //Get 1 Division + func read(req: Request) throws -> EventLoopFuture{ + + return try qbase(req: req).first().unwrap(or: Abort(.internalServerError)).map{self.createRead($0)} + + } + //Delete 1 Division + func delete(req: Request) throws -> EventLoopFuture{ + + guard let id = req.parameters.get("id", as: Int.self) else{ + throw Abort(.badRequest) + } + return mdlSpec.find(id, on: req.db).unwrap(or: Abort(.notFound)).flatMap{ $0.delete(on: req.db)}.map{.ok} + } + +} +extension SpecCtrl{ + //Query Settings + func qbase(req: Request) throws -> QueryBuilder { + let query = mdlSpec.query(on: req.db) + .with(\.$item) + .with(\.$specitems) + .with(\.$templatecategoryitemspecs) + if let id = req.parameters.get("id", as: Int.self){ + return query.filter(\.$id == id) + } else{ + return query + } + } + //create Output + func createRead(_ output: mdlSpec) -> mdlSpec.Output { + return mdlSpec.Output( + id: output.id!, + name: output.name, + numberoftests: output.numberoftests, + isactive: output.isactive, + createdate: output.createdate, + createuserid: output.createuserid, + updatedate: output.updatedate, + updateuserid: output.updateuserid, + item: output.$item.value!, + specitems: output.$specitems.value!, + templatecategoryitemspecs: output.$templatecategoryitemspecs.value! + ) + } + + func mapOutput(_ output: Optional.WrappedType, _ input: mdlSpec.Input){ + output.name = input.name; + output.numberoftests = input.numberoftests; + output.isactive = input.isactive; + output.createdate = input.createdate; + output.updatedate = input.updatedate; + output.createuserid = input.createuserid; + output.updateuserid = input.updateuserid; + output.$item.id = input.item.id!; + output.$specitems.value = input.specitems!; + output.$templatecategoryitemspecs.value = input.templatecategoryitemspecs!; + } + + func createUnit(_ input: mdlSpec.Input) -> mdlSpec { + return mdlSpec( + id: input.id ?? nil + , name: input.name + , numberoftests: input.numberoftests + , isactive: input.isactive + , createuserid: input.createuserid ?? -1 + , createdate: input.createdate + , updateuserid: input.updateuserid ?? -1 + , updatedate: input.updatedate + , item: input.item + , specitems: input.specitems + , templatecategoryitemspecs: input.templatecategoryitemspecs + ) + } + + //update function + func save(_ output: Optional.WrappedType, req: Request) -> EventLoopFuture { + return output + .save(on: req.db) + .map{mdlSpec.Output( + id: output.id! + , name: output.name + , numberoftests: output.numberoftests + , isactive: output.isactive + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + , item: output.item + , specitems: output.specitems + , templatecategoryitemspecs: output.templatecategoryitemspecs + ) + } + } + //create function + func save(_ output: mdlSpec, _ req: Request, _ input: mdlSpec.Input) -> EventLoopFuture { + return output + .save(on: req.db) + .map{ + mdlSpec.Output( + id: output.id! + , name: output.name + , numberoftests: output.numberoftests + , isactive: output.isactive + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + , item: input.item + , specitems: input.specitems + , templatecategoryitemspecs: input.templatecategoryitemspecs + ) + + } + } + +} +extension SpecCtrl: RouteCollection{ + func boot(routes: RoutesBuilder) throws{ + let apigroup = routes.grouped("specs") + apigroup.get("", use: readAll) + apigroup.get(":id", use: read) + apigroup.post("", use: create) + apigroup.post(":id", use: update) + apigroup.delete(":id", use: delete) + + + } +} diff --git a/Sources/App/Controllers/s/SpecItemCtrl.swift b/Sources/App/Controllers/s/SpecItemCtrl.swift new file mode 100644 index 0000000..f706bfa --- /dev/null +++ b/Sources/App/Controllers/s/SpecItemCtrl.swift @@ -0,0 +1,174 @@ +// +// SpecItemCtrl.swift +// +// +// Created by Michiel Carman on 11/9/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class SpecItemCtrl{ + //Create Unit + func create(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlSpecItem.Input.self) + let output = self.createUnit(input) + return self.save(output, req, input) + + } + + //Update Unit + func update(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlSpecItem.Input.self) + return try qbase(req: req).first().unwrap(or: Abort(.notFound)).flatMap{output in self.mapOutput(output, input) + return self.save(output, req: req) + } + } + + //Get all Divisions + func readAll(req: Request) throws -> EventLoopFuture>{ + return try qbase(req: req) + .paginate(for: req) + .map{ + page in page.map{ + self.createRead($0) + } + } + } + //Get 1 Division + func read(req: Request) throws -> EventLoopFuture{ + + return try qbase(req: req).first().unwrap(or: Abort(.internalServerError)).map{self.createRead($0)} + + } + //Delete 1 Division + func delete(req: Request) throws -> EventLoopFuture{ + + guard let id = req.parameters.get("id", as: Int.self) else{ + throw Abort(.badRequest) + } + return mdlSpecItem.find(id, on: req.db).unwrap(or: Abort(.notFound)).flatMap{ $0.delete(on: req.db)}.map{.ok} + } + +} + +extension SpecItemCtrl{ + //Query Settings + func qbase(req: Request) throws -> QueryBuilder { + let query = mdlSpecItem.query(on: req.db) + .with(\.$spec) + .with(\.$comparisontype) + .with(\.$unit) + //.with(\.$specitemvalues) + if let id = req.parameters.get("id", as: Int.self){ + return query.filter(\.$id == id) + } else{ + return query + } + } + //create Output + func createRead(_ output: mdlSpecItem) -> mdlSpecItem.Output { + return mdlSpecItem.Output( + id: output.id!, + name: output.name, + qualifier: output.qualifier, + sortorder: output.sortorder, + createdate: output.createdate, + createuserid: output.createuserid, + updatedate: output.updatedate, + updateuserid: output.updateuserid, + spec: output.$spec.value!, + comparisontype: output.$comparisontype.value!, + unit: output.$unit.value! + , specitemvalues: output.specitemvalues + ) + } + + func mapOutput(_ output: Optional.WrappedType, _ input: mdlSpecItem.Input){ + output.name = input.name; + output.qualifier = input.qualifier; + output.sortorder = input.sortorder; + output.createdate = input.createdate; + output.updatedate = input.updatedate; + output.createuserid = input.createuserid; + output.updateuserid = input.updateuserid; + output.$spec.id = input.spec.id!; + output.$comparisontype.id = input.comparisontype.id!; + output.$unit.id = input.unit.id!; + output.$specitemvalues.value = input.specitemvalues + } + + func createUnit(_ input: mdlSpecItem.Input) -> mdlSpecItem { + return mdlSpecItem( + id: input.id ?? nil + , name: input.name + , qualifier: input.qualifier + , sortorder: input.sortorder + , createuserid: input.createuserid ?? -1 + , createdate: input.createdate + , updateuserid: input.updateuserid ?? -1 + , updatedate: input.updatedate + , spec: input.spec + , comparisontype: input.comparisontype + , unit: input.unit + ) + } + + //update function + func save(_ output: Optional.WrappedType, req: Request) -> EventLoopFuture { + return output + .save(on: req.db) + .map{mdlSpecItem.Output( + id: output.id! + , name: output.name + , qualifier: output.qualifier + , sortorder: output.sortorder + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + , spec: output.spec + , comparisontype: output.comparisontype + , unit: output.unit + , specitemvalues: output.specitemvalues + ) + } + } + //create function + func save(_ output: mdlSpecItem, _ req: Request, _ input: mdlSpecItem.Input) -> EventLoopFuture { + return output + .save(on: req.db) + .map{ + mdlSpecItem.Output( + id: output.id! + , name: output.name + , qualifier: output.qualifier + , sortorder: output.sortorder + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + , spec: output.spec + , comparisontype: input.comparisontype + , unit: input.unit + , specitemvalues: input.specitemvalues + ) + + } + } + +} +extension SpecItemCtrl: RouteCollection{ + func boot(routes: RoutesBuilder) throws{ + let apigroup = routes.grouped("specitems") + apigroup.get("", use: readAll) + apigroup.get(":id", use: read) + apigroup.post("", use: create) + apigroup.post(":id", use: update) + apigroup.delete(":id", use: delete) + + + } +} diff --git a/Sources/App/Controllers/s/SpecItemValueCtrl.swift b/Sources/App/Controllers/s/SpecItemValueCtrl.swift new file mode 100644 index 0000000..737cd0b --- /dev/null +++ b/Sources/App/Controllers/s/SpecItemValueCtrl.swift @@ -0,0 +1,155 @@ +// +// SpecItemValueCtrl.swift +// +// +// Created by Michiel Carman on 11/9/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class SpecItemValueCtrl{ + //Create Unit + func create(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlSpecItemValue.Input.self) + let output = self.createUnit(input) + return self.save(output, req, input) + + } + + //Update Unit + func update(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlSpecItemValue.Input.self) + return try qbase(req: req).first().unwrap(or: Abort(.notFound)).flatMap{output in self.mapOutput(output, input) + return self.save(output, req: req) + } + } + + //Get all Divisions + func readAll(req: Request) throws -> EventLoopFuture>{ + return try qbase(req: req) + .paginate(for: req) + .map{ + page in page.map{ + self.createRead($0) + } + } + } + //Get 1 Division + func read(req: Request) throws -> EventLoopFuture{ + + return try qbase(req: req).first().unwrap(or: Abort(.internalServerError)).map{self.createRead($0)} + + } + //Delete 1 Division + func delete(req: Request) throws -> EventLoopFuture{ + + guard let id = req.parameters.get("id", as: Int.self) else{ + throw Abort(.badRequest) + } + return mdlSpecItemValue.find(id, on: req.db).unwrap(or: Abort(.notFound)).flatMap{ $0.delete(on: req.db)}.map{.ok} + } + +} +extension SpecItemValueCtrl{ + //Query Settings + func qbase(req: Request) throws -> QueryBuilder { + let query = mdlSpecItemValue.query(on: req.db).with(\.$specitem).with(\.$valuetype) + if let id = req.parameters.get("id", as: Int.self){ + return query.filter(\.$id == id) + } else{ + return query + } + } + //create Output + func createRead(_ output: mdlSpecItemValue) -> mdlSpecItemValue.Output { + return mdlSpecItemValue.Output( + id: output.id!, + value: output.value, + sortorder: output.sortorder, + createdate: output.createdate, + createuserid: output.createuserid, + updatedate: output.updatedate, + updateuserid: output.updateuserid, + specitem: output.$specitem.value!, + valuetype: output.$valuetype.value! + ) + } + + func mapOutput(_ output: Optional.WrappedType, _ input: mdlSpecItemValue.Input){ + output.value = input.value; + output.sortorder = input.sortorder; + output.createdate = input.createdate; + output.updatedate = input.updatedate; + output.createuserid = input.createuserid; + output.updateuserid = input.updateuserid; + output.$specitem.id = input.specitem.id!; + output.$valuetype.id = input.valuetype.id! + } + + func createUnit(_ input: mdlSpecItemValue.Input) -> mdlSpecItemValue { + return mdlSpecItemValue( + id: input.id ?? nil + , value: input.value + , sortorder: input.sortorder + , createuserid: input.createuserid ?? -1 + , createdate: input.createdate + , updateuserid: input.updateuserid ?? -1 + , updatedate: input.updatedate + , specitem: input.specitem + , valuetype: input.valuetype + ) + } + + //update function + func save(_ output: Optional.WrappedType, req: Request) -> EventLoopFuture { + return output + .save(on: req.db) + .map{mdlSpecItemValue.Output( + id: output.id! + , value: output.value + , sortorder: output.sortorder + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + , specitem: output.specitem + , valuetype: output.valuetype + ) + } + } + //create function + func save(_ output: mdlSpecItemValue, _ req: Request, _ input: mdlSpecItemValue.Input) -> EventLoopFuture { + return output + .save(on: req.db) + .map{ + mdlSpecItemValue.Output( + id: output.id! + , value: output.value + , sortorder: output.sortorder + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + , specitem: input.specitem + , valuetype: input.valuetype + ) + + } + } + +} +extension SpecItemValueCtrl: RouteCollection{ + func boot(routes: RoutesBuilder) throws{ + let apigroup = routes.grouped("specitemvalues") + apigroup.get("", use: readAll) + apigroup.get(":id", use: read) + apigroup.post("", use: create) + apigroup.post(":id", use: update) + apigroup.delete(":id", use: delete) + + + } +} diff --git a/Sources/App/Controllers/s/StatusCtrl.swift b/Sources/App/Controllers/s/StatusCtrl.swift new file mode 100644 index 0000000..345046d --- /dev/null +++ b/Sources/App/Controllers/s/StatusCtrl.swift @@ -0,0 +1,145 @@ +// Status Controller +// StatusCtrl.swift +// +// +// Created by Michiel Carman on 11/5/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class StatusCtrl{ + //Create Unit + func create(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlStatus.Input.self) + let output = self.createUnit(input) + return self.save(output, req, input) + + } + + //Update Unit + func update(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlStatus.Input.self) + return try qbase(req: req).first().unwrap(or: Abort(.notFound)).flatMap{output in self.mapOutput(output, input) + return self.save(output, req: req) + } + } + + //Get all Divisions + func readAll(req: Request) throws -> EventLoopFuture>{ + return try qbase(req: req) + .paginate(for: req) + .map{ + page in page.map{ + self.createRead($0) + } + } + } + //Get 1 Division + func read(req: Request) throws -> EventLoopFuture{ + + return try qbase(req: req).first().unwrap(or: Abort(.internalServerError)).map{self.createRead($0)} + + } + //Delete 1 Division + func delete(req: Request) throws -> EventLoopFuture{ + + guard let id = req.parameters.get("id", as: Int.self) else{ + throw Abort(.badRequest) + } + return mdlStatus.find(id, on: req.db).unwrap(or: Abort(.notFound)).flatMap{ $0.delete(on: req.db)}.map{.ok} + } + +} +extension StatusCtrl{ + //Query Settings + func qbase(req: Request) throws -> QueryBuilder { + let query = mdlStatus.query(on: req.db) + if let id = req.parameters.get("id", as: Int.self){ + return query.filter(\.$id == id) + } else{ + return query + } + } + //create Output + func createRead(_ output: mdlStatus) -> mdlStatus.Output { + return mdlStatus.Output( + id: output.id!, + name: output.name, + createdate: output.createdate, + createuserid: output.createuserid, + updatedate: output.updatedate, + updateuserid: output.updateuserid, + workorders: output.$workorders.value + ) + } + + func mapOutput(_ output: Optional.WrappedType, _ input: mdlStatus.Input){ + output.name = input.name; + output.createdate = input.createdate; + output.updatedate = input.updatedate; + output.createuserid = input.createuserid; + output.updateuserid = input.updateuserid; + output.$workorders.value = input.workorders + } + + func createUnit(_ input: mdlStatus.Input) -> mdlStatus { + return mdlStatus( + id: input.id ?? nil + , name: input.name + , createuserid: input.createuserid ?? -1 + , createdate: input.createdate + , updateuserid: input.updateuserid ?? -1 + , updatedate: input.updatedate + , workorders: input.workorders + ) + } + + //update function + func save(_ output: Optional.WrappedType, req: Request) -> EventLoopFuture { + return output + .save(on: req.db) + .map{mdlStatus.Output( + id: output.id! + , name: output.name + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + , workorders: output.workorders + ) + } + } + //create function + func save(_ output: mdlStatus, _ req: Request, _ input: mdlStatus.Input) -> EventLoopFuture { + return output + .save(on: req.db) + .map{ + mdlStatus.Output( + id: output.id! + , name: output.name + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + , workorders: input.workorders + ) + + } + } + +} +extension StatusCtrl: RouteCollection{ + func boot(routes: RoutesBuilder) throws{ + let apigroup = routes.grouped("statuses") + apigroup.get("", use: readAll) + apigroup.get(":id", use: read) + apigroup.post("", use: create) + apigroup.post(":id", use: update) + apigroup.delete(":id", use: delete) + + + } +} diff --git a/Sources/App/Controllers/t/TemplateCategoryCtrl.swift b/Sources/App/Controllers/t/TemplateCategoryCtrl.swift new file mode 100644 index 0000000..e4637fd --- /dev/null +++ b/Sources/App/Controllers/t/TemplateCategoryCtrl.swift @@ -0,0 +1,158 @@ +// +// TemplateCategoryCtrl.swift +// +// +// Created by Michiel Carman on 11/10/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class TemplateCategoryCtrl{ + //Create Unit + func create(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlTemplateCategory.Input.self) + let output = self.createUnit(input) + return self.save(output, req, input) + + } + + //Update Unit + func update(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlTemplateCategory.Input.self) + return try qbase(req: req).first().unwrap(or: Abort(.notFound)).flatMap{output in self.mapOutput(output, input) + return self.save(output, req: req) + } + } + + //Get all Divisions + func readAll(req: Request) throws -> EventLoopFuture>{ + return try qbase(req: req) + .paginate(for: req) + .map{ + page in page.map{ + self.createRead($0) + } + } + } + //Get 1 Division + func read(req: Request) throws -> EventLoopFuture{ + + return try qbase(req: req).first().unwrap(or: Abort(.internalServerError)).map{self.createRead($0)} + + } + //Delete 1 Division + func delete(req: Request) throws -> EventLoopFuture{ + + guard let id = req.parameters.get("id", as: Int.self) else{ + throw Abort(.badRequest) + } + return mdlTemplateCategory.find(id, on: req.db).unwrap(or: Abort(.notFound)).flatMap{ $0.delete(on: req.db)}.map{.ok} + } + +} +extension TemplateCategoryCtrl{ + //Query Settings + func qbase(req: Request) throws -> QueryBuilder { + let query = mdlTemplateCategory.query(on: req.db) + .with(\.$template) + .with(\.$category) + .with(\.$templatecategoryitems) + if let id = req.parameters.get("id", as: Int.self){ + return query.filter(\.$id == id) + } else{ + return query + } + } + //create Output + func createRead(_ output: mdlTemplateCategory) -> mdlTemplateCategory.Output { + return mdlTemplateCategory.Output( + id: output.id!, + template: output.$template.value!, + category: output.$category.value!, + sortorder: output.sortorder, + createdate: output.createdate, + createuserid: output.createuserid, + updatedate: output.updatedate, + updateuserid: output.updateuserid, + templatecategoryitems: output.$templatecategoryitems.value! + ) + } + + func mapOutput(_ output: Optional.WrappedType, _ input: mdlTemplateCategory.Input){ + output.$template.id = input.template.id!; + output.$category.id = input.category.id!; + output.sortorder = input.sortorder; + output.createdate = input.createdate; + output.updatedate = input.updatedate; + output.createuserid = input.createuserid; + output.updateuserid = input.updateuserid; + output.$templatecategoryitems.value = input.templatecategoryitems! + } + + func createUnit(_ input: mdlTemplateCategory.Input) -> mdlTemplateCategory { + return mdlTemplateCategory( + id: input.id ?? nil + , template: input.template + , category: input.category + , sortorder: input.sortorder + , createuserid: input.createuserid ?? -1 + , createdate: input.createdate + , updateuserid: input.updateuserid ?? -1 + , updatedate: input.updatedate + , templatecategoryitems: input.templatecategoryitems + ) + } + + //update function + func save(_ output: Optional.WrappedType, req: Request) -> EventLoopFuture { + return output + .save(on: req.db) + .map{mdlTemplateCategory.Output( + id: output.id! + , template: output.template + , category: output.category + , sortorder: output.sortorder + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + , templatecategoryitems: output.templatecategoryitems + ) + } + } + //create function + func save(_ output: mdlTemplateCategory, _ req: Request, _ input: mdlTemplateCategory.Input) -> EventLoopFuture { + return output + .save(on: req.db) + .map{ + mdlTemplateCategory.Output( + id: output.id! + , template: input.template + , category: input.category + , sortorder: input.sortorder + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + , templatecategoryitems: input.templatecategoryitems + ) + + } + } + +} +extension TemplateCategoryCtrl: RouteCollection{ + func boot(routes: RoutesBuilder) throws{ + let apigroup = routes.grouped("templatecategories") + apigroup.get("", use: readAll) + apigroup.get(":id", use: read) + apigroup.post("", use: create) + apigroup.post(":id", use: update) + apigroup.delete(":id", use: delete) + + + } +} diff --git a/Sources/App/Controllers/t/TemplateCategoryItemCtrl.swift b/Sources/App/Controllers/t/TemplateCategoryItemCtrl.swift new file mode 100644 index 0000000..fad6a16 --- /dev/null +++ b/Sources/App/Controllers/t/TemplateCategoryItemCtrl.swift @@ -0,0 +1,158 @@ +// +// TemplateCategoryItemCtrl.swift +// +// +// Created by Michiel Carman on 11/10/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class TemplateCategoryItemCtrl{ + //Create Unit + func create(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlTemplateCategoryItem.Input.self) + let output = self.createUnit(input) + return self.save(output, req, input) + + } + + //Update Unit + func update(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlTemplateCategoryItem.Input.self) + return try qbase(req: req).first().unwrap(or: Abort(.notFound)).flatMap{output in self.mapOutput(output, input) + return self.save(output, req: req) + } + } + + //Get all Divisions + func readAll(req: Request) throws -> EventLoopFuture>{ + return try qbase(req: req) + .paginate(for: req) + .map{ + page in page.map{ + self.createRead($0) + } + } + } + //Get 1 Division + func read(req: Request) throws -> EventLoopFuture{ + + return try qbase(req: req).first().unwrap(or: Abort(.internalServerError)).map{self.createRead($0)} + + } + //Delete 1 Division + func delete(req: Request) throws -> EventLoopFuture{ + + guard let id = req.parameters.get("id", as: Int.self) else{ + throw Abort(.badRequest) + } + return mdlTemplateCategoryItem.find(id, on: req.db).unwrap(or: Abort(.notFound)).flatMap{ $0.delete(on: req.db)}.map{.ok} + } + +} +extension TemplateCategoryItemCtrl{ + //Query Settings + func qbase(req: Request) throws -> QueryBuilder { + let query = mdlTemplateCategoryItem.query(on: req.db) + .with(\.$templatecategory) + .with(\.$item) + .with(\.$templatecategoryitemspecs) + if let id = req.parameters.get("id", as: Int.self){ + return query.filter(\.$id == id) + } else{ + return query + } + } + //create Output + func createRead(_ output: mdlTemplateCategoryItem) -> mdlTemplateCategoryItem.Output { + return mdlTemplateCategoryItem.Output( + id: output.id!, + templatecategory: output.$templatecategory.value!, + item: output.$item.value!, + sortorder: output.sortorder, + createdate: output.createdate, + createuserid: output.createuserid, + updatedate: output.updatedate, + updateuserid: output.updateuserid, + templatecategoryitemspecs: output.$templatecategoryitemspecs.value! + ) + } + + func mapOutput(_ output: Optional.WrappedType, _ input: mdlTemplateCategoryItem.Input){ + output.$templatecategory.id = input.templatecategory.id!; + output.$item.id = input.item.id!; + output.sortorder = input.sortorder; + output.createdate = input.createdate; + output.updatedate = input.updatedate; + output.createuserid = input.createuserid; + output.updateuserid = input.updateuserid; + output.$templatecategoryitemspecs.value = input.templatecategoryitemspecs + } + + func createUnit(_ input: mdlTemplateCategoryItem.Input) -> mdlTemplateCategoryItem { + return mdlTemplateCategoryItem( + id: input.id ?? nil + , templatecategory: input.templatecategory + , item: input.item + , sortorder: input.sortorder + , createuserid: input.createuserid ?? -1 + , createdate: input.createdate + , updateuserid: input.updateuserid ?? -1 + , updatedate: input.updatedate + , templatecategoryitemspecs: input.templatecategoryitemspecs + ) + } + + //update function + func save(_ output: Optional.WrappedType, req: Request) -> EventLoopFuture { + return output + .save(on: req.db) + .map{mdlTemplateCategoryItem.Output( + id: output.id! + , templatecategory: output.templatecategory + , item: output.item + , sortorder: output.sortorder + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + , templatecategoryitemspecs: output.templatecategoryitemspecs + ) + } + } + //create function + func save(_ output: mdlTemplateCategoryItem, _ req: Request, _ input: mdlTemplateCategoryItem.Input) -> EventLoopFuture { + return output + .save(on: req.db) + .map{ + mdlTemplateCategoryItem.Output( + id: output.id! + , templatecategory: input.templatecategory + , item: input.item + , sortorder: output.sortorder + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + , templatecategoryitemspecs: input.templatecategoryitemspecs + ) + + } + } + +} +extension TemplateCategoryItemCtrl: RouteCollection{ + func boot(routes: RoutesBuilder) throws{ + let apigroup = routes.grouped("templatecategoryitems") + apigroup.get("", use: readAll) + apigroup.get(":id", use: read) + apigroup.post("", use: create) + apigroup.post(":id", use: update) + apigroup.delete(":id", use: delete) + + + } +} diff --git a/Sources/App/Controllers/t/TemplateCategoryItemSpecCtrl.swift b/Sources/App/Controllers/t/TemplateCategoryItemSpecCtrl.swift new file mode 100644 index 0000000..8cf60b2 --- /dev/null +++ b/Sources/App/Controllers/t/TemplateCategoryItemSpecCtrl.swift @@ -0,0 +1,150 @@ +// +// TemplateCategoryItemSpec.swift +// +// +// Created by Michiel Carman on 11/10/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class TemplateCategoryItemSpecCtrl{ + //Create Unit + func create(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlTemplateCategoryItemSpec.Input.self) + let output = self.createUnit(input) + return self.save(output, req, input) + + } + + //Update Unit + func update(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlTemplateCategoryItemSpec.Input.self) + return try qbase(req: req).first().unwrap(or: Abort(.notFound)).flatMap{output in self.mapOutput(output, input) + return self.save(output, req: req) + } + } + + //Get all Divisions + func readAll(req: Request) throws -> EventLoopFuture>{ + return try qbase(req: req) + .paginate(for: req) + .map{ + page in page.map{ + self.createRead($0) + } + } + } + //Get 1 Division + func read(req: Request) throws -> EventLoopFuture{ + + return try qbase(req: req).first().unwrap(or: Abort(.internalServerError)).map{self.createRead($0)} + + } + //Delete 1 Division + func delete(req: Request) throws -> EventLoopFuture{ + + guard let id = req.parameters.get("id", as: Int.self) else{ + throw Abort(.badRequest) + } + return mdlTemplateCategoryItemSpec.find(id, on: req.db).unwrap(or: Abort(.notFound)).flatMap{ $0.delete(on: req.db)}.map{.ok} + } + +} +extension TemplateCategoryItemSpecCtrl{ + //Query Settings + func qbase(req: Request) throws -> QueryBuilder { + let query = mdlTemplateCategoryItemSpec.query(on: req.db).with(\.$templatecategoryitem).with(\.$spec) + if let id = req.parameters.get("id", as: Int.self){ + return query.filter(\.$id == id) + } else{ + return query + } + } + //create Output + func createRead(_ output: mdlTemplateCategoryItemSpec) -> mdlTemplateCategoryItemSpec.Output { + return mdlTemplateCategoryItemSpec.Output( + id: output.id!, + templatecategoryitem: output.$templatecategoryitem.value!, + spec: output.$spec.value!, + sortorder: output.sortorder, + createdate: output.createdate, + createuserid: output.createuserid, + updatedate: output.updatedate, + updateuserid: output.updateuserid + ) + } + + func mapOutput(_ output: Optional.WrappedType, _ input: mdlTemplateCategoryItemSpec.Input){ + output.$templatecategoryitem.id = input.templatecategoryitem.id!; + output.$spec.id = input.spec.id!; + output.sortorder = input.sortorder; + output.createdate = input.createdate; + output.updatedate = input.updatedate; + output.createuserid = input.createuserid; + output.updateuserid = input.updateuserid; + } + + func createUnit(_ input: mdlTemplateCategoryItemSpec.Input) -> mdlTemplateCategoryItemSpec { + return mdlTemplateCategoryItemSpec( + id: input.id ?? nil + , templatecategoryitem: input.templatecategoryitem + , spec: input.spec + , sortorder: input.sortorder + , createuserid: input.createuserid ?? -1 + , createdate: input.createdate + , updateuserid: input.updateuserid ?? -1 + , updatedate: input.updatedate + ) + } + + //update function + func save(_ output: Optional.WrappedType, req: Request) -> EventLoopFuture { + return output + .save(on: req.db) + .map{mdlTemplateCategoryItemSpec.Output( + id: output.id! + , templatecategoryitem: output.templatecategoryitem + , spec: output.spec + , sortorder: output.sortorder + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + ) + } + } + //create function + func save(_ output: mdlTemplateCategoryItemSpec, _ req: Request, _ input: mdlTemplateCategoryItemSpec.Input) -> EventLoopFuture { + return output + .save(on: req.db) + .map{ + mdlTemplateCategoryItemSpec.Output( + id: output.id! + , templatecategoryitem: input.templatecategoryitem + , spec: input.spec + , sortorder: output.sortorder + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + ) + + } + } + +} +extension TemplateCategoryItemSpecCtrl: RouteCollection{ + func boot(routes: RoutesBuilder) throws{ + let apigroup = routes.grouped("templatecategoryitemspecs") + apigroup.get("", use: readAll) + apigroup.get(":id", use: read) + apigroup.post("", use: create) + apigroup.post(":id", use: update) + apigroup.delete(":id", use: delete) + + + } +} diff --git a/Sources/App/Controllers/t/TemplateCtrl.swift b/Sources/App/Controllers/t/TemplateCtrl.swift new file mode 100644 index 0000000..4c1042a --- /dev/null +++ b/Sources/App/Controllers/t/TemplateCtrl.swift @@ -0,0 +1,198 @@ +// +// TemplateCtrl.swift +// +// +// Created by Michiel Carman on 11/10/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class TemplateCtrl{ + //Create Unit + func create(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlTemplate.Input.self) + let output = self.createUnit(input) + return self.save(output, req, input) + + } + + //Update Unit + func update(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlTemplate.Input.self) + return try qbase(req: req).first().unwrap(or: Abort(.notFound)).flatMap{output in self.mapOutput(output, input) + return self.save(output, req: req) + } + } + + //Get all Divisions + func readAll(req: Request) throws -> EventLoopFuture>{ + return try qbase(req: req) + .paginate(for: req) + .map{ + page in page.map{ + self.createRead($0) + } + } + } + //Get 1 Division + func read(req: Request) throws -> EventLoopFuture{ + + return try qbase(req: req).first().unwrap(or: Abort(.internalServerError)).map{self.createRead($0)} + + } + //Delete 1 Division + func delete(req: Request) throws -> EventLoopFuture{ + + guard let id = req.parameters.get("id", as: Int.self) else{ + throw Abort(.badRequest) + } + return mdlTemplate.find(id, on: req.db).unwrap(or: Abort(.notFound)).flatMap{ $0.delete(on: req.db)}.map{.ok} + } + +} +extension TemplateCtrl{ + //Query Settings + func qbase(req: Request) throws -> QueryBuilder { + let query = mdlTemplate.query(on: req.db) + .with(\.$inspectiontype) + .with(\.$inspectionlevel) + .with(\.$customer) + .with(\.$product) + .with(\.$make) + .with(\.$model) + .with(\.$machine) + .with(\.$categories) + if let id = req.parameters.get("id", as: Int.self){ + return query.filter(\.$id == id) + } else{ + return query + } + } + //create Output + func createRead(_ output: mdlTemplate) -> mdlTemplate.Output { + return mdlTemplate.Output( + id: output.id!, + name: output.name, + description: output.description, + isactive: output.isactive, + createdate: output.createdate, + createuserid: output.createuserid, + updatedate: output.updatedate, + updateuserid: output.updateuserid, + inspectiontype: output.$inspectiontype.value!, + inspectionlevel: output.$inspectionlevel.value!, + customer: output.$customer.value!, + product: output.$product.value!, + make: output.$make.value!, + model: output.$model.value!, + machine: output.$machine.value!, + categories: output.$categories.value! + ) + } + + func mapOutput(_ output: Optional.WrappedType, _ input: mdlTemplate.Input){ + output.name = input.name; + output.description = input.description; + output.isactive = input.isactive; + output.createdate = input.createdate; + output.updatedate = input.updatedate; + output.createuserid = input.createuserid; + output.updateuserid = input.updateuserid; + output.$inspectiontype.id = input.inspectiontype.id!; + output.$inspectionlevel.id = input.inspectionlevel.id!; + output.$customer.id = input.customer.id!; + output.$product.id = input.product.id!; + output.$make.id = input.make.id!; + output.$model.id = input.model.id!; + output.$machine.id = input.machine.id!; + output.$categories.value = input.categories! + } + + func createUnit(_ input: mdlTemplate.Input) -> mdlTemplate { + return mdlTemplate( + id: input.id ?? nil + , name: input.name + , description: input.description + , isactive: input.isactive + , createuserid: input.createuserid ?? -1 + , createdate: input.createdate + , updateuserid: input.updateuserid ?? -1 + , updatedate: input.updatedate + , inspectiontype: input.inspectiontype + , inspectionlevel: input.inspectionlevel + , customer: input.customer + , product: input.product + , make: input.make + , model: input.model + , machine: input.machine + , categories: input.categories + ) + } + + //update function + func save(_ output: Optional.WrappedType, req: Request) -> EventLoopFuture { + return output + .save(on: req.db) + .map{mdlTemplate.Output( + id: output.id! + , name: output.name + , description: output.description + , isactive: output.isactive + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + , inspectiontype: output.inspectiontype + , inspectionlevel: output.inspectionlevel + , customer: output.customer + , product: output.product + , make: output.make + , model: output.model + , machine: output.machine + , categories: output.categories + ) + } + } + //create function + func save(_ output: mdlTemplate, _ req: Request, _ input: mdlTemplate.Input) -> EventLoopFuture { + return output + .save(on: req.db) + .map{ + mdlTemplate.Output( + id: output.id! + , name: output.name + , description: output.description + , isactive: output.isactive + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + , inspectiontype: input.inspectiontype + , inspectionlevel: input.inspectionlevel + , customer: input.customer + , product: input.product + , make: input.make + , model: input.model + , machine: input.machine + , categories: input.categories + ) + + } + } + +} +extension TemplateCtrl: RouteCollection{ + func boot(routes: RoutesBuilder) throws{ + let apigroup = routes.grouped("templates") + apigroup.get("", use: readAll) + apigroup.get(":id", use: read) + apigroup.post("", use: create) + apigroup.post(":id", use: update) + apigroup.delete(":id", use: delete) + + + } +} diff --git a/Sources/App/Controllers/u/UnitCtrl.swift b/Sources/App/Controllers/u/UnitCtrl.swift new file mode 100644 index 0000000..b4e9bdc --- /dev/null +++ b/Sources/App/Controllers/u/UnitCtrl.swift @@ -0,0 +1,120 @@ +// +// UnitCtrl.swift +// +// +// Created by Michiel Carman on 11/2/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class UnitCtrl{ + //Create Unit + func create(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlUnit.Input.self) + let output = self.createUnit(input) + return self.save(output, req, input) + + } + + //Update Unit + func update(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlUnit.Input.self) + return try qbase(req: req).first().unwrap(or: Abort(.notFound)).flatMap{output in self.mapOutput(output, input) + return self.save(output, req: req) + } + } + + //Get all Divisions + func readAll(req: Request) throws -> EventLoopFuture>{ + return try qbase(req: req) + .paginate(for: req) + .map{ + page in page.map{ + self.createRead($0) + } + } + } + //Get 1 Division + func read(req: Request) throws -> EventLoopFuture{ + + return try qbase(req: req).first().unwrap(or: Abort(.internalServerError)).map{self.createRead($0)} + + } + //Delete 1 Division + func delete(req: Request) throws -> EventLoopFuture{ + + guard let id = req.parameters.get("id", as: Int.self) else{ + throw Abort(.badRequest) + } + return mdlUnit.find(id, on: req.db).unwrap(or: Abort(.notFound)).flatMap{ $0.delete(on: req.db)}.map{.ok} + } + +} + +extension UnitCtrl{ + //Query Settings + func qbase(req: Request) throws -> QueryBuilder { + let query = mdlUnit.query(on: req.db).with(\.$datatype).with(\.$locations).with(\.$inspectioncategoryitemspecitems) + if let id = req.parameters.get("id", as: Int.self){ + return query.filter(\.$id == id) + } else{ + return query + } + } + //create Output + func createRead(_ output: mdlUnit) -> mdlUnit.Output { + return mdlUnit.Output( + id: output.id!, + name: output.name, + description: output.description, + isactive: output.isactive, + createdate: output.createdate, + createuserid: output.createuserid, + updatedate: output.updatedate, + updateuserid: output.updateuserid, + datatype: output.$datatype.value!, + locations: output.$locations.value!, + inspectioncategoryitemspecitems: output.$inspectioncategoryitemspecitems.value! + ) + } + + func mapOutput(_ output: Optional.WrappedType, _ input: mdlUnit.Input){ + output.name = input.name; + output.description = input.description; + output.isactive = input.isactive; + output.createdate = input.createdate; + output.updatedate = input.updatedate; + output.createuserid = input.createuserid; + output.updateuserid = input.updateuserid; + output.$datatype.id = input.datatype.id! + } + + func createUnit(_ input: mdlUnit.Input) -> mdlUnit { + return mdlUnit(id: input.id ?? nil, name: input.name, description: input.description, isactive: input.isactive, createuserid: input.createuserid ?? -1, createdate: input.createdate, updateuserid: input.updateuserid ?? -1, updatedate: input.updatedate, datatype: input.datatype, locations: input.locations, inspectioncategoryitemspecitems: input.inspectioncategoryitemspecitems) + } + + //update function + func save(_ output: Optional.WrappedType, req: Request) -> EventLoopFuture { + return output.save(on: req.db).map{mdlUnit.Output(id: output.id!, name: output.name, description: output.description, isactive: output.isactive, createdate: output.createdate, createuserid: output.createuserid, updatedate: output.updatedate, updateuserid: output.updateuserid, datatype: output.datatype, locations: output.locations, inspectioncategoryitemspecitems: output.inspectioncategoryitemspecitems)} + } + //create function + func save(_ output: mdlUnit, _ req: Request, _ input: mdlUnit.Input) -> EventLoopFuture { + return output.save(on: req.db).map{mdlUnit.Output(id: output.id!, name: input.name, description: input.description, isactive: input.isactive, createdate: input.createdate, createuserid: input.createuserid, updatedate: input.updatedate, updateuserid: input.updateuserid, datatype: input.datatype, locations: input.locations, inspectioncategoryitemspecitems: input.inspectioncategoryitemspecitems)} + } + +} +extension UnitCtrl: RouteCollection{ + func boot(routes: RoutesBuilder) throws{ + let apigroup = routes.grouped("units") + apigroup.get("", use: readAll) + apigroup.get(":id", use: read) + apigroup.post("", use: create) + apigroup.post(":id", use: update) + apigroup.delete(":id", use: delete) + + + } +} diff --git a/Sources/App/Controllers/u/UserCtrl.swift b/Sources/App/Controllers/u/UserCtrl.swift new file mode 100644 index 0000000..b09d78c --- /dev/null +++ b/Sources/App/Controllers/u/UserCtrl.swift @@ -0,0 +1,206 @@ +// +// UserCtrl.swift +// +// +// Created by Michiel Carman on 11/2/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class UserCtrl{ + //Create Unit + func create(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlUser.Input.self) + let output = self.createUnit(input) + return self.save(output, req, input) + + } + + //Update Unit + func update(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlUser.Input.self) + return try qbase(req: req).first().unwrap(or: Abort(.notFound)).flatMap{output in self.mapOutput(output, input) + return self.save(output, req: req) + } + } + + //Get all Divisions + func readAll(req: Request) throws -> EventLoopFuture>{ + return try qbase(req: req) + .paginate(for: req) + .map{ + page in page.map{ + self.createRead($0) + } + } + } + //Get 1 Division + func read(req: Request) throws -> EventLoopFuture{ + + return try qbase(req: req).first().unwrap(or: Abort(.internalServerError)).map{self.createRead($0)} + + } + //Delete 1 Division + func delete(req: Request) throws -> EventLoopFuture{ + + guard let id = req.parameters.get("id", as: Int.self) else{ + throw Abort(.badRequest) + } + return mdlUser.find(id, on: req.db).unwrap(or: Abort(.notFound)).flatMap{ $0.delete(on: req.db)}.map{.ok} + } + +} +extension UserCtrl{ + //Query Settings + func qbase(req: Request) throws -> QueryBuilder { + let query = mdlUser.query(on: req.db) + .with(\.$division) + .with(\.$inspections) + .with(\.$roles) + .with(\.$modules) + .with(\.$workorders) + .with(\.$labsettings) + if let id = req.parameters.get("id", as: Int.self){ + return query.filter(\.$id == id) + } else{ + return query + } + } + //create Output + func createRead(_ output: mdlUser) -> mdlUser.Output { + return mdlUser.Output( + id: output.id!, + number: output.number, + firstname: output.firstname, + lastname: output.lastname, + username: output.username, + password: output.password, + activationcode: output.activationcode, + isactive: output.isactive, + createdate: output.createdate, + createuserid: output.createuserid, + updatedate: output.updatedate, + updateuserid: output.updateuserid, + division: output.$division.value!, + inspections: output.$inspections.value!, + roles: output.$roles.value!, + modules: output.$modules.value!, + workorderusers: output.$workorders.value!, + labsettings: output.$labsettings.value! + ) + } + + func mapOutput(_ output: Optional.WrappedType, _ input: mdlUser.Input){ + output.number = input.number; + output.firstname = input.firstname; + output.lastname = input.lastname; + output.username = input.username; + output.password = input.password; + output.activationcode = input.activationcode; + output.isactive = input.isactive; + output.createdate = input.createdate; + output.updatedate = input.updatedate; + output.createuserid = input.createuserid; + output.updateuserid = input.updateuserid; + output.$division.id = input.division.id!; + output.$inspections.value = input.inspections; + output.$roles.value = input.roles; + output.$modules.value = input.modules; + output.$workorders.value = input.workorderusers; + output.$labsettings.value = input.labsettings + } + + func createUnit(_ input: mdlUser.Input) -> mdlUser { + return mdlUser( + id: input.id ?? nil + , number: input.number + , firstname: input.firstname + , lastname: input.lastname + , username: input.username + , password: input.password + , activationcode: input.activationcode + , isactive: input.isactive + , createuserid: input.createuserid ?? -1 + , createdate: input.createdate + , updateuserid: input.updateuserid ?? -1 + , updatedate: input.updatedate + , division: input.division + , roles: input.roles + , modules: input.modules + , workorderusers: input.workorderusers + , inspections: input.inspections + , labsettings: input.labsettings + ) + } + + //update function + func save(_ output: Optional.WrappedType, req: Request) -> EventLoopFuture { + return output + .save(on: req.db) + .map{mdlUser.Output( + id: output.id! + , number: output.number + , firstname: output.firstname + , lastname: output.lastname + , username: output.username + , password: output.password + , activationcode: output.activationcode + , isactive: output.isactive + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + , division: output.division + , inspections: output.inspections + , roles: output.roles + , modules: output.modules + , workorderusers: output.workorders + , labsettings: output.labsettings + ) + } + } + //create function + func save(_ output: mdlUser, _ req: Request, _ input: mdlUser.Input) -> EventLoopFuture { + return output + .save(on: req.db) + .map{ + mdlUser.Output( + id: output.id! + , number: output.number + , firstname: output.firstname + , lastname: output.lastname + , username: output.username + , password: output.password + , activationcode: output.activationcode + , isactive: output.isactive + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + , division: input.division + , inspections: input.inspections + , roles: input.roles + , modules: input.modules + , workorderusers: input.workorderusers + , labsettings: input.labsettings + ) + + } + } + +} +extension UserCtrl: RouteCollection{ + func boot(routes: RoutesBuilder) throws{ + let apigroup = routes.grouped("users") + apigroup.get("", use: readAll) + apigroup.get(":id", use: read) + apigroup.post("", use: create) + apigroup.post(":id", use: update) + apigroup.delete(":id", use: delete) + + + } +} diff --git a/Sources/App/Controllers/u/UserDefinedCodeCtrl.swift b/Sources/App/Controllers/u/UserDefinedCodeCtrl.swift new file mode 100644 index 0000000..3ad80ba --- /dev/null +++ b/Sources/App/Controllers/u/UserDefinedCodeCtrl.swift @@ -0,0 +1,161 @@ +// +// UserDefinedCodeCtrl.swift +// +// +// Created by Michiel Carman on 11/9/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver +import Network + +final class UserDefinedCodeCtrl{ + //Create Unit + func create(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlUserDefinedCode.Input.self) + let output = self.createUnit(input) + return self.save(output, req, input) + + } + + //Update Unit + func update(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlUserDefinedCode.Input.self) + return try qbase(req: req).first().unwrap(or: Abort(.notFound)).flatMap{output in self.mapOutput(output, input) + return self.save(output, req: req) + } + } + + //Get all Divisions + func readAll(req: Request) throws -> EventLoopFuture>{ + return try qbase(req: req) + .paginate(for: req) + .map{ + page in page.map{ + self.createRead($0) + } + } + } + //Get 1 Division + func read(req: Request) throws -> EventLoopFuture{ + + return try qbase(req: req).first().unwrap(or: Abort(.internalServerError)).map{self.createRead($0)} + + } + //Delete 1 Division + func delete(req: Request) throws -> EventLoopFuture{ + + guard let id = req.parameters.get("id", as: Int.self) else{ + throw Abort(.badRequest) + } + return mdlUserDefinedCode.find(id, on: req.db).unwrap(or: Abort(.notFound)).flatMap{ $0.delete(on: req.db)}.map{.ok} + } + +} +extension UserDefinedCodeCtrl{ + //Query Settings + func qbase(req: Request) throws -> QueryBuilder { + let query = mdlUserDefinedCode.query(on: req.db).with(\.$items).with(\.$inspectioncategoryitems) + if let id = req.parameters.get("id", as: Int.self){ + return query.filter(\.$id == id) + } else{ + return query + } + } + //create Output + func createRead(_ output: mdlUserDefinedCode) -> mdlUserDefinedCode.Output { + return mdlUserDefinedCode.Output( + id: output.id!, + name: output.name, + description: output.description, + isactive: output.isactive, + createdate: output.createdate, + createuserid: output.createuserid, + updatedate: output.updatedate, + updateuserid: output.updateuserid, + items: output.$items.value!, + inspectioncategoryitems: output.$inspectioncategoryitems.value! + ) + } + + func mapOutput(_ output: Optional.WrappedType, _ input: mdlUserDefinedCode.Input){ + output.name = input.name; + output.description = input.description; + output.isactive = input.isactive; + output.createdate = input.createdate; + output.updatedate = input.updatedate; + output.createuserid = input.createuserid; + output.updateuserid = input.updateuserid; + output.$items.value = input.items; + output.$inspectioncategoryitems.value = input.inspectioncategoryitems + } + + func createUnit(_ input: mdlUserDefinedCode.Input) -> mdlUserDefinedCode { + return mdlUserDefinedCode( + id: input.id ?? nil + , name: input.name + , desription: input.description + , isactive: input.isactive + , createuserid: input.createuserid ?? -1 + , createdate: input.createdate + , updateuserid: input.updateuserid ?? -1 + , updatedate: input.updatedate + , items: input.items + , inspectioncategoryitems: input.inspectioncategoryitems + ) + } + + //update function + func save(_ output: Optional.WrappedType, req: Request) -> EventLoopFuture { + return output + .save(on: req.db) + .map{mdlUserDefinedCode.Output( + id: output.id! + , name: output.name + , description: output.description + , isactive: output.isactive + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + , items: output.items + , inspectioncategoryitems: output.inspectioncategoryitems + ) + } + } + //create function + func save(_ output: mdlUserDefinedCode, _ req: Request, _ input: mdlUserDefinedCode.Input) -> EventLoopFuture { + return output + .save(on: req.db) + .map{ + mdlUserDefinedCode.Output( + id: output.id! + , name: output.name + , description: output.description + , isactive: output.isactive + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + , items: input.items + , inspectioncategoryitems: input.inspectioncategoryitems + ) + + } + } + +} +extension UserDefinedCodeCtrl: RouteCollection{ + func boot(routes: RoutesBuilder) throws{ + let apigroup = routes.grouped("userdefinedcodes.svc") + apigroup.get("", use: readAll) + apigroup.get(":id", use: read) + apigroup.post("", use: create) + apigroup.post(":id", use: update) + apigroup.delete(":id", use: delete) + + + } +} diff --git a/Sources/App/Controllers/v/ValueTypeCtrl.swift b/Sources/App/Controllers/v/ValueTypeCtrl.swift new file mode 100644 index 0000000..c8cd399 --- /dev/null +++ b/Sources/App/Controllers/v/ValueTypeCtrl.swift @@ -0,0 +1,154 @@ +// +// ValueTypeCtrl.swift +// +// +// Created by Michiel Carman on 11/5/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class ValueTypeCtrl{ + //Create Unit + func create(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlValueType.Input.self) + let output = self.createUnit(input) + return self.save(output, req, input) + + } + + //Update Unit + func update(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlValueType.Input.self) + return try qbase(req: req).first().unwrap(or: Abort(.notFound)).flatMap{output in self.mapOutput(output, input) + return self.save(output, req: req) + } + } + + //Get all Divisions + func readAll(req: Request) throws -> EventLoopFuture>{ + return try qbase(req: req) + .paginate(for: req) + .map{ + page in page.map{ + self.createRead($0) + } + } + } + //Get 1 Division + func read(req: Request) throws -> EventLoopFuture{ + + return try qbase(req: req).first().unwrap(or: Abort(.internalServerError)).map{self.createRead($0)} + + } + //Delete 1 Division + func delete(req: Request) throws -> EventLoopFuture{ + + guard let id = req.parameters.get("id", as: Int.self) else{ + throw Abort(.badRequest) + } + return mdlValueType.find(id, on: req.db).unwrap(or: Abort(.notFound)).flatMap{ $0.delete(on: req.db)}.map{.ok} + } + +} +extension ValueTypeCtrl{ + //Query Settings + func qbase(req: Request) throws -> QueryBuilder { + let query = mdlValueType.query(on: req.db).with(\.$specitemvalues).with(\.$inspectioncategoryitemspecitemvalues) + if let id = req.parameters.get("id", as: Int.self){ + return query.filter(\.$id == id) + } else{ + return query + } + } + //create Output + func createRead(_ output: mdlValueType) -> mdlValueType.Output { + return mdlValueType.Output( + id: output.id!, + name: output.name, + description: output.description, + createdate: output.createdate, + createuserid: output.createuserid, + updatedate: output.updatedate, + updateuserid: output.updateuserid, + specitemvalues: output.$specitemvalues.value!, + inspectioncategoryitemspecitemvalues: output.$inspectioncategoryitemspecitemvalues.value! + ) + } + + func mapOutput(_ output: Optional.WrappedType, _ input: mdlValueType.Input){ + output.name = input.name; + output.createdate = input.createdate; + output.updatedate = input.updatedate; + output.createuserid = input.createuserid; + output.updateuserid = input.updateuserid; + output.$specitemvalues.value = input.specitemvalues; + output.$inspectioncategoryitemspecitemvalues.value = input.inspectioncategoryitemspecitemvalues + } + + func createUnit(_ input: mdlValueType.Input) -> mdlValueType { + return mdlValueType( + id: input.id ?? nil + , name: input.name + , description: input.description + , createuserid: input.createuserid ?? -1 + , createdate: input.createdate + , updateuserid: input.updateuserid ?? -1 + , updatedate: input.updatedate + , specitemvalues: input.specitemvalues + , inspectioncategoryitemspecitemvalues: input.inspectioncategoryitemspecitemvalues + ) + } + + //update function + func save(_ output: Optional.WrappedType, req: Request) -> EventLoopFuture { + return output + .save(on: req.db) + .map{mdlValueType.Output( + id: output.id! + , name: output.name + , description: output.description + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + , specitemvalues: output.specitemvalues + , inspectioncategoryitemspecitemvalues: output.inspectioncategoryitemspecitemvalues + ) + } + } + //create function + func save(_ output: mdlValueType, _ req: Request, _ input: mdlValueType.Input) -> EventLoopFuture { + return output + .save(on: req.db) + .map{ + mdlValueType.Output( + id: output.id! + , name: output.name + , description: output.description + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + , specitemvalues: output.specitemvalues + , inspectioncategoryitemspecitemvalues: output.inspectioncategoryitemspecitemvalues + ) + + } + } + +} +extension ValueTypeCtrl: RouteCollection{ + func boot(routes: RoutesBuilder) throws{ + let apigroup = routes.grouped("valuetypes") + apigroup.get("", use: readAll) + apigroup.get(":id", use: read) + apigroup.post("", use: create) + apigroup.post(":id", use: update) + apigroup.delete(":id", use: delete) + + + } +} diff --git a/Sources/App/Controllers/v/ViscosityCtrl.swift b/Sources/App/Controllers/v/ViscosityCtrl.swift new file mode 100644 index 0000000..e2cd4f7 --- /dev/null +++ b/Sources/App/Controllers/v/ViscosityCtrl.swift @@ -0,0 +1,160 @@ +// +// ViscosityCtrl.swift +// +// +// Created by Michiel Carman on 11/9/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class ViscosityCtrl{ + //Create Unit + func create(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlViscosity.Input.self) + let output = self.createUnit(input) + return self.save(output, req, input) + + } + + //Update Unit + func update(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlViscosity.Input.self) + return try qbase(req: req).first().unwrap(or: Abort(.notFound)).flatMap{output in self.mapOutput(output, input) + return self.save(output, req: req) + } + } + + //Get all Divisions + func readAll(req: Request) throws -> EventLoopFuture>{ + return try qbase(req: req) + .paginate(for: req) + .map{ + page in page.map{ + self.createRead($0) + } + } + } + //Get 1 Division + func read(req: Request) throws -> EventLoopFuture{ + + return try qbase(req: req).first().unwrap(or: Abort(.internalServerError)).map{self.createRead($0)} + + } + //Delete 1 Division + func delete(req: Request) throws -> EventLoopFuture{ + + guard let id = req.parameters.get("id", as: Int.self) else{ + throw Abort(.badRequest) + } + return mdlViscosity.find(id, on: req.db).unwrap(or: Abort(.notFound)).flatMap{ $0.delete(on: req.db)}.map{.ok} + } + +} +extension ViscosityCtrl{ + //Query Settings + func qbase(req: Request) throws -> QueryBuilder { + let query = mdlViscosity.query(on: req.db).with(\.$fluids) + if let id = req.parameters.get("id", as: Int.self){ + return query.filter(\.$id == id) + } else{ + return query + } + } + //create Output + func createRead(_ output: mdlViscosity) -> mdlViscosity.Output { + return mdlViscosity.Output( + id: output.id!, + name: output.name, + description: output.description, + sortorder: output.sortorder, + isactive: output.isactive, + createdate: output.createdate, + createuserid: output.createuserid, + updatedate: output.updatedate, + updateuserid: output.updateuserid, + fluids: output.$fluids.value! + ) + } + + func mapOutput(_ output: Optional.WrappedType, _ input: mdlViscosity.Input){ + output.name = input.name; + output.description = input.description; + output.sortorder = input.sortorder; + output.isactive = input.isactive; + output.createdate = input.createdate; + output.updatedate = input.updatedate; + output.createuserid = input.createuserid; + output.updateuserid = input.updateuserid; + output.$fluids.value = input.fluids + } + + func createUnit(_ input: mdlViscosity.Input) -> mdlViscosity { + return mdlViscosity( + id: input.id ?? nil + , name: input.name + , description: input.description + , sortorder: input.sortorder + , isactive: input.isactive + , createuserid: input.createuserid ?? -1 + , createdate: input.createdate + , updateuserid: input.updateuserid ?? -1 + , updatedate: input.updatedate + , fluids: input.fluids + ) + } + + //update function + func save(_ output: Optional.WrappedType, req: Request) -> EventLoopFuture { + return output + .save(on: req.db) + .map{mdlViscosity.Output( + id: output.id! + , name: output.name + , description: output.description + , sortorder: output.sortorder + , isactive: output.isactive + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + , fluids: output.fluids + ) + } + } + //create function + func save(_ output: mdlViscosity, _ req: Request, _ input: mdlViscosity.Input) -> EventLoopFuture { + return output + .save(on: req.db) + .map{ + mdlViscosity.Output( + id: output.id! + , name: output.name + , description: output.description + , sortorder: output.sortorder + , isactive: output.isactive + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + , fluids: input.fluids + ) + + } + } + +} +extension ViscosityCtrl: RouteCollection{ + func boot(routes: RoutesBuilder) throws{ + let apigroup = routes.grouped("viscosities") + apigroup.get("", use: readAll) + apigroup.get(":id", use: read) + apigroup.post("", use: create) + apigroup.post(":id", use: update) + apigroup.delete(":id", use: delete) + + + } +} diff --git a/Sources/App/Controllers/w/WorkOrderCtrl.swift b/Sources/App/Controllers/w/WorkOrderCtrl.swift new file mode 100644 index 0000000..e8b9618 --- /dev/null +++ b/Sources/App/Controllers/w/WorkOrderCtrl.swift @@ -0,0 +1,266 @@ +// +// WorkOrderCtrl.swift +// +// +// Created by Michiel Carman on 11/10/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class WorkOrderCtrl{ + //Create Unit + func create(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlWorkOrder.Input.self) + let output = self.createUnit(input) + return self.save(output, req, input) + + } + + //Update Unit + func update(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlWorkOrder.Input.self) + return try qbase(req: req).first().unwrap(or: Abort(.notFound)).flatMap{output in self.mapOutput(output, input) + return self.save(output, req: req) + } + } + + //Get all Divisions + func readAll(req: Request) throws -> EventLoopFuture>{ + return try qbase(req: req) + .paginate(for: req) + .map{ + page in page.map{ + self.createRead($0) + } + } + } + //Get 1 Division + func read(req: Request) throws -> EventLoopFuture{ + + return try qbase(req: req).first().unwrap(or: Abort(.internalServerError)).map{self.createRead($0)} + + } + //Delete 1 Division + func delete(req: Request) throws -> EventLoopFuture{ + + guard let id = req.parameters.get("id", as: Int.self) else{ + throw Abort(.badRequest) + } + return mdlWorkOrder.find(id, on: req.db).unwrap(or: Abort(.notFound)).flatMap{ $0.delete(on: req.db)}.map{.ok} + } + +} +extension WorkOrderCtrl{ + //Query Settings + func qbase(req: Request) throws -> QueryBuilder { + let query = mdlWorkOrder.query(on: req.db) + .with(\.$customer) + .with(\.$machine) + .with(\.$priority) + .with(\.$reason) + .with(\.$incompletereason) + .with(\.$workorderstatuses) + .with(\.$userss) + .with(\.$inspections) + .with(\.$consumptions) + .with(\.$notes) + .with(\.$files) + .with(\.$signatures) + .with(\.$parts) + .with(\.$statuses) + + if let id = req.parameters.get("id", as: Int.self){ + return query.filter(\.$id == id) + } else{ + return query + } + } + struct Input: Content{ + let id: Int? + let number: String + let specialinstruction: String + let scheduledstartdate: Date + let scheduledenddate: Date + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + let customer: mdlCustomer + let machine: mdlMachine + let priority: mdlPriority + let reason: mdlReason + let incompletereason: mdlIncompleteReason + let workorderstatus: [mdlWorkOrder]? + let users: [mdlWorkOrderUser]? + let inspections: [mdlInspection]? + let consumptions: [mdlConsumption]? + let notes: [mdlNote]? + let files: [mdlFile]? + let signatures: [mdlSignature]? + let parts: [mdlWorkOrderPart]? + let statuses: [mdlStatus]? + } + //create Output + func createRead(_ output: mdlWorkOrder) -> mdlWorkOrder.Output { + return mdlWorkOrder.Output( + id: output.id! + , number: output.number + , specialinstruction: output.specialinstruction + , scheduledstartdate: output.scheduledstartdate + , scheduledenddate: output.scheduledenddate + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + , customer: output.$customer.value! + , machine: output.$machine.value! + , priority: output.$priority.value! + , reason: output.$reason.value! + , incompletereason: output.$incompletereason.value! + , workorderstatuses: output.$workorderstatuses.value! + , users: output.$userss.value! + , inspections: output.$inspections.value! + , consumptions: output.$consumptions.value! + , notes: output.$notes.value! + , files: output.$files.value! + , signatures: output.$signatures.value! + , parts: output.$parts.value! + , statuses: output.$statuses.value! + + ) + } + + func mapOutput(_ output: Optional.WrappedType, _ input: mdlWorkOrder.Input){ + output.number = input.number; + output.specialinstruction = input.specialinstruction; + output.scheduledstartdate = input.scheduledstartdate; + output.scheduledenddate = input.scheduledenddate; + output.createdate = input.createdate; + output.updatedate = input.updatedate; + output.createuserid = input.createuserid; + output.updateuserid = input.updateuserid; + output.$customer.id = input.customer.id!; + output.$machine.id = input.machine.id!; + output.$priority.id = input.priority.id!; + output.$reason.id = input.reason.id!; + output.$incompletereason.id = input.incompletereason.id!; + output.$workorderstatuses.value = input.workorderstatuses!; + output.$userss.value = input.users!; + output.$inspections.value = input.inspections!; + output.$consumptions.value = input.consumptions!; + output.$notes.value = input.notes!; + output.$files.value = input.files!; + output.$signatures.value = input.signatures!; + output.$parts.value = input.parts!; + output.$statuses.value = input.statuses!; + } + + func createUnit(_ input: mdlWorkOrder.Input) -> mdlWorkOrder { + return mdlWorkOrder( + id: input.id ?? nil + , number: input.number + , specialinstruction: input.specialinstruction + , scheduledstartdate: input.scheduledstartdate + , scheduledenddate: input.scheduledenddate + , createuserid: input.createuserid ?? -1 + , createdate: input.createdate + , updateuserid: input.updateuserid ?? -1 + , updatedate: input.updatedate + , customer: input.customer + , machine: input.machine + , priority: input.priority + , reason: input.reason + , incompletereason: input.incompletereason + , users: input.users! + , workorderstatuses: input.workorderstatuses! + , inspections: input.inspections! + , consumptions: input.consumptions! + , notes: input.notes! + , files: input.files! + , signatures: input.signatures! + , parts: input.parts! + , statuses: input.statuses! + ) + } + + //update function + func save(_ output: Optional.WrappedType, req: Request) -> EventLoopFuture { + return output + .save(on: req.db) + .map{mdlWorkOrder.Output( + id: output.id! + , number: output.number + , specialinstruction: output.specialinstruction + , scheduledstartdate: output.scheduledstartdate + , scheduledenddate: output.scheduledenddate + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + , customer: output.$customer.value! + , machine: output.$machine.value! + , priority: output.$priority.value! + , reason: output.$reason.value! + , incompletereason: output.$incompletereason.value! + , workorderstatuses: output.$workorderstatuses.value! + , users: output.$userss.value! + , inspections: output.$inspections.value! + , consumptions: output.$consumptions.value! + , notes: output.$notes.value! + , files: output.$files.value! + , signatures: output.$signatures.value! + , parts: output.$parts.value! + , statuses: output.$statuses.value! + ) + } + } + //create function + func save(_ output: mdlWorkOrder, _ req: Request, _ input: mdlWorkOrder.Input) -> EventLoopFuture { + return output + .save(on: req.db) + .map{ + mdlWorkOrder.Output( + id: output.id! + , number: output.number + , specialinstruction: output.specialinstruction + , scheduledstartdate: output.scheduledstartdate + , scheduledenddate: output.scheduledenddate + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + , customer: input.customer + , machine: input.machine + , priority: input.priority + , reason: input.reason + , incompletereason: input.incompletereason + , workorderstatuses: input.workorderstatuses! + , users: input.users! + , inspections: input.inspections! + , consumptions: input.consumptions! + , notes: input.notes! + , files: input.files! + , signatures: input.signatures! + , parts: input.parts! + , statuses: input.statuses! + ) + + } + } + +} +extension WorkOrderCtrl: RouteCollection{ + func boot(routes: RoutesBuilder) throws{ + let apigroup = routes.grouped("workorders") + apigroup.get("", use: readAll) + apigroup.get(":id", use: read) + apigroup.post("", use: create) + apigroup.post(":id", use: update) + apigroup.delete(":id", use: delete) + + + } +} diff --git a/Sources/App/Controllers/w/WorkOrderStatusCtrl.swift b/Sources/App/Controllers/w/WorkOrderStatusCtrl.swift new file mode 100644 index 0000000..a1ef839 --- /dev/null +++ b/Sources/App/Controllers/w/WorkOrderStatusCtrl.swift @@ -0,0 +1,155 @@ +// +// WorkOrderStatusCtrl.swift +// +// +// Created by Michiel Carman on 11/10/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class WorkOrderStatusCtrl{ + //Create Unit + func create(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlWorkOrderStatus.Input.self) + let output = self.createUnit(input) + return self.save(output, req, input) + + } + + //Update Unit + func update(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlWorkOrderStatus.Input.self) + return try qbase(req: req).first().unwrap(or: Abort(.notFound)).flatMap{output in self.mapOutput(output, input) + return self.save(output, req: req) + } + } + + //Get all Divisions + func readAll(req: Request) throws -> EventLoopFuture>{ + return try qbase(req: req) + .paginate(for: req) + .map{ + page in page.map{ + self.createRead($0) + } + } + } + //Get 1 Division + func read(req: Request) throws -> EventLoopFuture{ + + return try qbase(req: req).first().unwrap(or: Abort(.internalServerError)).map{self.createRead($0)} + + } + //Delete 1 Division + func delete(req: Request) throws -> EventLoopFuture{ + + guard let id = req.parameters.get("id", as: Int.self) else{ + throw Abort(.badRequest) + } + return mdlWorkOrderStatus.find(id, on: req.db).unwrap(or: Abort(.notFound)).flatMap{ $0.delete(on: req.db)}.map{.ok} + } + +} +extension WorkOrderStatusCtrl{ + //Query Settings + func qbase(req: Request) throws -> QueryBuilder { + let query = mdlWorkOrderStatus.query(on: req.db).with(\.$workorder).with(\.$status) + if let id = req.parameters.get("id", as: Int.self){ + return query.filter(\.$id == id) + } else{ + return query + } + } + //create Output + func createRead(_ output: mdlWorkOrderStatus) -> mdlWorkOrderStatus.Output { + return mdlWorkOrderStatus.Output( + id: output.id!, + workorder: output.$workorder.value!, + status: output.$status.value!, + date: output.date!, + isactive: output.isactive, + createdate: output.createdate, + createuserid: output.createuserid, + updatedate: output.updatedate, + updateuserid: output.updateuserid + ) + } + + func mapOutput(_ output: Optional.WrappedType, _ input: mdlWorkOrderStatus.Input){ + output.$workorder.id = input.workorder.id!; + output.$status.id = input.status.id!; + output.date = input.date; + output.isactive = input.isactive; + output.createdate = input.createdate; + output.updatedate = input.updatedate; + output.createuserid = input.createuserid; + output.updateuserid = input.updateuserid; + } + + func createUnit(_ input: mdlWorkOrderStatus.Input) -> mdlWorkOrderStatus { + return mdlWorkOrderStatus( + id: input.id ?? nil + , status: input.status + , workorder: input.workorder + , date: input.date + , isactive: input.isactive + , createuserid: input.createuserid ?? -1 + , createdate: input.createdate + , updateuserid: input.updateuserid ?? -1 + , updatedate: input.updatedate + ) + } + + //update function + func save(_ output: Optional.WrappedType, req: Request) -> EventLoopFuture { + return output + .save(on: req.db) + .map{mdlWorkOrderStatus.Output( + id: output.id! + , workorder: output.workorder + , status: output.status + , date: output.date! + , isactive: output.isactive + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + ) + } + } + //create function + func save(_ output: mdlWorkOrderStatus, _ req: Request, _ input: mdlWorkOrderStatus.Input) -> EventLoopFuture { + return output + .save(on: req.db) + .map{ + mdlWorkOrderStatus.Output( + id: output.id! + , workorder: input.workorder + , status: input.status + , date: output.date! + , isactive: output.isactive + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + ) + + } + } + +} +extension WorkOrderStatusCtrl: RouteCollection{ + func boot(routes: RoutesBuilder) throws{ + let apigroup = routes.grouped("workorderstatuses") + apigroup.get("", use: readAll) + apigroup.get(":id", use: read) + apigroup.post("", use: create) + apigroup.post(":id", use: update) + apigroup.delete(":id", use: delete) + + + } +} diff --git a/Sources/App/Controllers/w/WorkOrderUserCtrl.swift b/Sources/App/Controllers/w/WorkOrderUserCtrl.swift new file mode 100644 index 0000000..a9ada0a --- /dev/null +++ b/Sources/App/Controllers/w/WorkOrderUserCtrl.swift @@ -0,0 +1,150 @@ +// +// WorkOrderUserCtrl.swift +// +// +// Created by Michiel Carman on 11/10/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class WorkOrderUserCtrl{ + //Create Unit + func create(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlWorkOrderUser.Input.self) + let output = self.createUnit(input) + return self.save(output, req, input) + + } + + //Update Unit + func update(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlWorkOrderUser.Input.self) + return try qbase(req: req).first().unwrap(or: Abort(.notFound)).flatMap{output in self.mapOutput(output, input) + return self.save(output, req: req) + } + } + + //Get all Divisions + func readAll(req: Request) throws -> EventLoopFuture>{ + return try qbase(req: req) + .paginate(for: req) + .map{ + page in page.map{ + self.createRead($0) + } + } + } + //Get 1 Division + func read(req: Request) throws -> EventLoopFuture{ + + return try qbase(req: req).first().unwrap(or: Abort(.internalServerError)).map{self.createRead($0)} + + } + //Delete 1 Division + func delete(req: Request) throws -> EventLoopFuture{ + + guard let id = req.parameters.get("id", as: Int.self) else{ + throw Abort(.badRequest) + } + return mdlWorkOrderUser.find(id, on: req.db).unwrap(or: Abort(.notFound)).flatMap{ $0.delete(on: req.db)}.map{.ok} + } + +} +extension WorkOrderUserCtrl{ + //Query Settings + func qbase(req: Request) throws -> QueryBuilder { + let query = mdlWorkOrderUser.query(on: req.db).with(\.$workorder).with(\.$user) + if let id = req.parameters.get("id", as: Int.self){ + return query.filter(\.$id == id) + } else{ + return query + } + } + //create Output + func createRead(_ output: mdlWorkOrderUser) -> mdlWorkOrderUser.Output { + return mdlWorkOrderUser.Output( + id: output.id!, + user: output.$user.value!, + workorder: output.$workorder.value!, + assigned: output.assigned, + createdate: output.createdate, + createuserid: output.createuserid, + updatedate: output.updatedate, + updateuserid: output.updateuserid + ) + } + + func mapOutput(_ output: Optional.WrappedType, _ input: mdlWorkOrderUser.Input){ + output.$user.id = input.user.id!; + output.$workorder.id = input.workorder.id!; + output.assigned = input.assigned; + output.createdate = input.createdate; + output.updatedate = input.updatedate; + output.createuserid = input.createuserid; + output.updateuserid = input.updateuserid; + } + + func createUnit(_ input: mdlWorkOrderUser.Input) -> mdlWorkOrderUser { + return mdlWorkOrderUser( + id: input.id ?? nil + , user: input.user + , workorder: input.workorder + , assigned: input.assigned + , createuserid: input.createuserid ?? -1 + , createdate: input.createdate + , updateuserid: input.updateuserid ?? -1 + , updatedate: input.updatedate + ) + } + + //update function + func save(_ output: Optional.WrappedType, req: Request) -> EventLoopFuture { + return output + .save(on: req.db) + .map{mdlWorkOrderUser.Output( + id: output.id! + , user: output.user + , workorder: output.workorder + , assigned: output.assigned + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + ) + } + } + //create function + func save(_ output: mdlWorkOrderUser, _ req: Request, _ input: mdlWorkOrderUser.Input) -> EventLoopFuture { + return output + .save(on: req.db) + .map{ + mdlWorkOrderUser.Output( + id: output.id! + , user: input.user + , workorder: input.workorder + , assigned: output.assigned + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + ) + + } + } + +} +extension WorkOrderUserCtrl: RouteCollection{ + func boot(routes: RoutesBuilder) throws{ + let apigroup = routes.grouped("workorderusers") + apigroup.get("", use: readAll) + apigroup.get(":id", use: read) + apigroup.post("", use: create) + apigroup.post(":id", use: update) + apigroup.delete(":id", use: delete) + + + } +} diff --git a/Sources/App/Controllers/x/XCustomerMachineCtrl.swift b/Sources/App/Controllers/x/XCustomerMachineCtrl.swift new file mode 100644 index 0000000..b18c45e --- /dev/null +++ b/Sources/App/Controllers/x/XCustomerMachineCtrl.swift @@ -0,0 +1,150 @@ +// +// XCustomerMachineCtrl.swift +// +// +// Created by Michiel Carman on 11/9/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class XCustomerMachineCtrl{ + //Create Unit + func create(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlXCustomerMachine.Input.self) + let output = self.createUnit(input) + return self.save(output, req, input) + + } + + //Update Unit + func update(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlXCustomerMachine.Input.self) + return try qbase(req: req).first().unwrap(or: Abort(.notFound)).flatMap{output in self.mapOutput(output, input) + return self.save(output, req: req) + } + } + + //Get all Divisions + func readAll(req: Request) throws -> EventLoopFuture>{ + return try qbase(req: req) + .paginate(for: req) + .map{ + page in page.map{ + self.createRead($0) + } + } + } + //Get 1 Division + func read(req: Request) throws -> EventLoopFuture{ + + return try qbase(req: req).first().unwrap(or: Abort(.internalServerError)).map{self.createRead($0)} + + } + //Delete 1 Division + func delete(req: Request) throws -> EventLoopFuture{ + + guard let id = req.parameters.get("id", as: Int.self) else{ + throw Abort(.badRequest) + } + return mdlXCustomerMachine.find(id, on: req.db).unwrap(or: Abort(.notFound)).flatMap{ $0.delete(on: req.db)}.map{.ok} + } + +} +extension XCustomerMachineCtrl{ + //Query Settings + func qbase(req: Request) throws -> QueryBuilder { + let query = mdlXCustomerMachine.query(on: req.db).with(\.$customer).with(\.$machine) + if let id = req.parameters.get("id", as: Int.self){ + return query.filter(\.$id == id) + } else{ + return query + } + } + //create Output + func createRead(_ output: mdlXCustomerMachine) -> mdlXCustomerMachine.Output { + return mdlXCustomerMachine.Output( + id: output.id!, + customer: output.$customer.value!, + machine: output.$machine.value!, + createdate: output.createdate, + isactive: output.isactive, + createuserid: output.createuserid, + updatedate: output.updatedate, + updateuserid: output.updateuserid + ) + } + + func mapOutput(_ output: Optional.WrappedType, _ input: mdlXCustomerMachine.Input){ + output.$customer.id = input.customer.id!; + output.$machine.id = input.machine.id! + output.createdate = input.createdate; + output.isactive = input.isactive; + output.createuserid = input.createuserid; + output.updatedate = input.updatedate; + output.updateuserid = input.updateuserid + } + + func createUnit(_ input: mdlXCustomerMachine.Input) -> mdlXCustomerMachine { + return mdlXCustomerMachine( + id: input.id ?? nil + , customer: input.customer + , machine: input.machine + , createuserid: input.createuserid ?? -1 + , isactive: input.isactive + , createdate: input.createdate + , updatedate: input.updatedate + , updateuserid: input.updateuserid ?? -1 + ) + } + + //update function + func save(_ output: Optional.WrappedType, req: Request) -> EventLoopFuture { + return output + .save(on: req.db) + .map{mdlXCustomerMachine.Output( + id: output.id! + , customer: output.customer + , machine: output.machine + , createdate: output.createdate + , isactive: output.isactive + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + ) + } + } + //create function + func save(_ output: mdlXCustomerMachine, _ req: Request, _ input: mdlXCustomerMachine.Input) -> EventLoopFuture { + return output + .save(on: req.db) + .map{ + mdlXCustomerMachine.Output( + id: output.id! + , customer: output.customer + , machine: output.machine + , createdate: output.createdate + , isactive: output.isactive + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + ) + + } + } + +} +extension XCustomerMachineCtrl: RouteCollection{ + func boot(routes: RoutesBuilder) throws{ + let apigroup = routes.grouped("xcustomermachines") + apigroup.get("", use: readAll) + apigroup.get(":id", use: read) + apigroup.post("", use: create) + apigroup.post(":id", use: update) + apigroup.delete(":id", use: delete) + + + } +} diff --git a/Sources/App/Controllers/x/XFluidViscosityCtrl.swift b/Sources/App/Controllers/x/XFluidViscosityCtrl.swift new file mode 100644 index 0000000..79f58c5 --- /dev/null +++ b/Sources/App/Controllers/x/XFluidViscosityCtrl.swift @@ -0,0 +1,151 @@ +// +// XFluidViscosityCtrl.swift +// +// +// Created by Michiel Carman on 11/10/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class XFluidViscosityCtrl{ + //Create Unit + func create(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlXFluidViscosity.Input.self) + let output = self.createUnit(input) + return self.save(output, req, input) + + } + + //Update Unit + func update(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlXFluidViscosity.Input.self) + return try qbase(req: req).first().unwrap(or: Abort(.notFound)).flatMap{output in self.mapOutput(output, input) + return self.save(output, req: req) + } + } + + //Get all Divisions + func readAll(req: Request) throws -> EventLoopFuture>{ + return try qbase(req: req) + .paginate(for: req) + .map{ + page in page.map{ + self.createRead($0) + } + } + } + //Get 1 Division + func read(req: Request) throws -> EventLoopFuture{ + + return try qbase(req: req).first().unwrap(or: Abort(.internalServerError)).map{self.createRead($0)} + + } + //Delete 1 Division + func delete(req: Request) throws -> EventLoopFuture{ + + guard let id = req.parameters.get("id", as: Int.self) else{ + throw Abort(.badRequest) + } + return mdlXFluidViscosity.find(id, on: req.db).unwrap(or: Abort(.notFound)).flatMap{ $0.delete(on: req.db)}.map{.ok} + } + +} + +extension XFluidViscosityCtrl{ + //Query Settings + func qbase(req: Request) throws -> QueryBuilder { + let query = mdlXFluidViscosity.query(on: req.db).with(\.$fluid).with(\.$viscosity) + if let id = req.parameters.get("id", as: Int.self){ + return query.filter(\.$id == id) + } else{ + return query + } + } + //create Output + func createRead(_ output: mdlXFluidViscosity) -> mdlXFluidViscosity.Output { + return mdlXFluidViscosity.Output( + id: output.id!, + fluid: output.$fluid.value!, + viscosity: output.$viscosity.value!, + createdate: output.createdate, + createuserid: output.createuserid, + updatedate: output.updatedate, + updateuserid: output.updateuserid, + sortorder: output.sortorder + ) + } + + func mapOutput(_ output: Optional.WrappedType, _ input: mdlXFluidViscosity.Input){ + output.$fluid.id = input.fluid.id!; + output.$viscosity.id = input.viscosity.id!; + output.createdate = input.createdate; + output.updatedate = input.updatedate; + output.createuserid = input.createuserid; + output.updateuserid = input.updateuserid; + output.sortorder = input.sortorder + } + + func createUnit(_ input: mdlXFluidViscosity.Input) -> mdlXFluidViscosity { + return mdlXFluidViscosity( + id: input.id ?? nil + , fluid: input.fluid + , viscosity: input.viscosity + , createuserid: input.createuserid ?? -1 + , createdate: input.createdate + , updateuserid: input.updateuserid ?? -1 + , updatedate: input.updatedate + , sortorder: input.sortorder + ) + } + + //update function + func save(_ output: Optional.WrappedType, req: Request) -> EventLoopFuture { + return output + .save(on: req.db) + .map{mdlXFluidViscosity.Output( + id: output.id! + , fluid: output.fluid + , viscosity: output.viscosity + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + , sortorder: output.sortorder + ) + } + } + //create function + func save(_ output: mdlXFluidViscosity, _ req: Request, _ input: mdlXFluidViscosity.Input) -> EventLoopFuture { + return output + .save(on: req.db) + .map{ + mdlXFluidViscosity.Output( + id: output.id! + , fluid: input.fluid + , viscosity: input.viscosity + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + , sortorder: output.sortorder + ) + + } + } + +} +extension XFluidViscosityCtrl: RouteCollection{ + func boot(routes: RoutesBuilder) throws{ + let apigroup = routes.grouped("xfluidviscosities") + apigroup.get("", use: readAll) + apigroup.get(":id", use: read) + apigroup.post("", use: create) + apigroup.post(":id", use: update) + apigroup.delete(":id", use: delete) + + + } +} diff --git a/Sources/App/Controllers/x/XItemResponseTypeCtrl.swift b/Sources/App/Controllers/x/XItemResponseTypeCtrl.swift new file mode 100644 index 0000000..3b22770 --- /dev/null +++ b/Sources/App/Controllers/x/XItemResponseTypeCtrl.swift @@ -0,0 +1,145 @@ +// +// XItemResponseTypeCtrl.swift +// +// +// Created by Michiel Carman on 11/9/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class XItemResponseTypeCtrl{ + //Create Unit + func create(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlXItemResponseType.Input.self) + let output = self.createUnit(input) + return self.save(output, req, input) + + } + + //Update Unit + func update(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlXItemResponseType.Input.self) + return try qbase(req: req).first().unwrap(or: Abort(.notFound)).flatMap{output in self.mapOutput(output, input) + return self.save(output, req: req) + } + } + + //Get all Divisions + func readAll(req: Request) throws -> EventLoopFuture>{ + return try qbase(req: req) + .paginate(for: req) + .map{ + page in page.map{ + self.createRead($0) + } + } + } + //Get 1 Division + func read(req: Request) throws -> EventLoopFuture{ + + return try qbase(req: req).first().unwrap(or: Abort(.internalServerError)).map{self.createRead($0)} + + } + //Delete 1 Division + func delete(req: Request) throws -> EventLoopFuture{ + + guard let id = req.parameters.get("id", as: Int.self) else{ + throw Abort(.badRequest) + } + return mdlXItemResponseType.find(id, on: req.db).unwrap(or: Abort(.notFound)).flatMap{ $0.delete(on: req.db)}.map{.ok} + } + +} +extension XItemResponseTypeCtrl{ + //Query Settings + func qbase(req: Request) throws -> QueryBuilder { + let query = mdlXItemResponseType.query(on: req.db).with(\.$item).with(\.$responsetype) + if let id = req.parameters.get("id", as: Int.self){ + return query.filter(\.$id == id) + } else{ + return query + } + } + //create Output + func createRead(_ output: mdlXItemResponseType) -> mdlXItemResponseType.Output { + return mdlXItemResponseType.Output( + id: output.id!, + item: output.$item.value!, + responsetype: output.$responsetype.value!, + createdate: output.createdate, + createuserid: output.createuserid, + updatedate: output.updatedate, + updateuserid: output.updateuserid + ) + } + + func mapOutput(_ output: Optional.WrappedType, _ input: mdlXItemResponseType.Input){ + output.$item.id = input.item.id!; + output.$responsetype.id = input.responsetype.id!; + output.createdate = input.createdate; + output.updatedate = input.updatedate; + output.createuserid = input.createuserid; + output.updateuserid = input.updateuserid; + } + + func createUnit(_ input: mdlXItemResponseType.Input) -> mdlXItemResponseType { + return mdlXItemResponseType( + id: input.id ?? nil + , item: input.item + , responsetype: input.responsetype + , createuserid: input.createuserid ?? -1 + , createdate: input.createdate + , updateuserid: input.updateuserid ?? -1 + , updatedate: input.updatedate + ) + } + + //update function + func save(_ output: Optional.WrappedType, req: Request) -> EventLoopFuture { + return output + .save(on: req.db) + .map{mdlXItemResponseType.Output( + id: output.id! + , item: output.item + , responsetype: output.responsetype + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + ) + } + } + //create function + func save(_ output: mdlXItemResponseType, _ req: Request, _ input: mdlXItemResponseType.Input) -> EventLoopFuture { + return output + .save(on: req.db) + .map{ + mdlXItemResponseType.Output( + id: output.id! + , item: input.item + , responsetype: input.responsetype + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + ) + + } + } + +} +extension XItemResponseTypeCtrl: RouteCollection{ + func boot(routes: RoutesBuilder) throws{ + let apigroup = routes.grouped("xitemresponsetypes") + apigroup.get("", use: readAll) + apigroup.get(":id", use: read) + apigroup.post("", use: create) + apigroup.post(":id", use: update) + apigroup.delete(":id", use: delete) + + + } +} diff --git a/Sources/App/Controllers/x/XUserModuleCtrl.swift b/Sources/App/Controllers/x/XUserModuleCtrl.swift new file mode 100644 index 0000000..11777b4 --- /dev/null +++ b/Sources/App/Controllers/x/XUserModuleCtrl.swift @@ -0,0 +1,150 @@ +// +// XUserModuleCtrl.swift +// +// +// Created by Michiel Carman on 11/5/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class XUserModuleCtrl{ + //Create Unit + func create(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlXUserModule.Input.self) + let output = self.createUnit(input) + return self.save(output, req, input) + + } + + //Update Unit + func update(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlXUserModule.Input.self) + return try qbase(req: req).first().unwrap(or: Abort(.notFound)).flatMap{output in self.mapOutput(output, input) + return self.save(output, req: req) + } + } + + //Get all Divisions + func readAll(req: Request) throws -> EventLoopFuture>{ + return try qbase(req: req) + .paginate(for: req) + .map{ + page in page.map{ + self.createRead($0) + } + } + } + //Get 1 Division + func read(req: Request) throws -> EventLoopFuture{ + + return try qbase(req: req).first().unwrap(or: Abort(.internalServerError)).map{self.createRead($0)} + + } + //Delete 1 Division + func delete(req: Request) throws -> EventLoopFuture{ + + guard let id = req.parameters.get("id", as: Int.self) else{ + throw Abort(.badRequest) + } + return mdlXUserModule.find(id, on: req.db).unwrap(or: Abort(.notFound)).flatMap{ $0.delete(on: req.db)}.map{.ok} + } + +} +extension XUserModuleCtrl{ + //Query Settings + func qbase(req: Request) throws -> QueryBuilder { + let query = mdlXUserModule.query(on: req.db).with(\.$user).with(\.$module) + if let id = req.parameters.get("id", as: Int.self){ + return query.filter(\.$id == id) + } else{ + return query + } + } + //create Output + func createRead(_ output: mdlXUserModule) -> mdlXUserModule.Output { + return mdlXUserModule.Output( + id: output.id!, + user: output.$user.value!, + module: output.$module.value!, + isactive: output.isactive, + createdate: output.createdate, + createuserid: output.createuserid, + updatedate: output.updatedate, + updateuserid: output.updateuserid + ) + } + + func mapOutput(_ output: Optional.WrappedType, _ input: mdlXUserModule.Input){ + output.$user.id = input.user.id!; + output.$module.id = input.module.id!; + output.isactive = input.isactive; + output.createdate = input.createdate; + output.updatedate = input.updatedate; + output.createuserid = input.createuserid; + output.updateuserid = input.updateuserid; + } + + func createUnit(_ input: mdlXUserModule.Input) -> mdlXUserModule { + return mdlXUserModule( + id: input.id ?? nil + , user: input.user + , module: input.module + , isactive: input.isactive + , createuserid: input.createuserid ?? -1 + , createdate: input.createdate + , updateuserid: input.updateuserid ?? -1 + , updatedate: input.updatedate + ) + } + + //update function + func save(_ output: Optional.WrappedType, req: Request) -> EventLoopFuture { + return output + .save(on: req.db) + .map{mdlXUserModule.Output( + id: output.id! + , user: output.$user.value! + , module: output.$module.value! + , isactive: output.isactive + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + ) + } + } + //create function + func save(_ output: mdlXUserModule, _ req: Request, _ input: mdlXUserModule.Input) -> EventLoopFuture { + return output + .save(on: req.db) + .map{ + mdlXUserModule.Output( + id: output.id! + , user: input.user + , module: input.module + , isactive: output.isactive + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + ) + + } + } + +} +extension XUserModuleCtrl: RouteCollection{ + func boot(routes: RoutesBuilder) throws{ + let apigroup = routes.grouped("xusermodules") + apigroup.get("", use: readAll) + apigroup.get(":id", use: read) + apigroup.post("", use: create) + apigroup.post(":id", use: update) + apigroup.delete(":id", use: delete) + + + } +} diff --git a/Sources/App/Controllers/x/XUserRoleCtrl.swift b/Sources/App/Controllers/x/XUserRoleCtrl.swift new file mode 100644 index 0000000..ba66146 --- /dev/null +++ b/Sources/App/Controllers/x/XUserRoleCtrl.swift @@ -0,0 +1,144 @@ +// +// XUserRoleCtrl.swift +// +// +// Created by Michiel Carman on 11/4/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class XUserRoleCtrl{ + //Create Unit + func create(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlXUserRole.Input.self) + let output = self.createUnit(input) + return self.save(output, req, input) + + } + //TODO Create a method to update linked objects + //Update Unit + func update(req: Request) throws -> EventLoopFuture{ + let input = try req.content.decode(mdlXUserRole.Input.self) + + return try qbase(req: req).first().unwrap(or: Abort(.notFound)).flatMap{output in self.mapOutput(output, input) + return self.save(output, req: req) + } + } + + //Get all Divisions + func readAll(req: Request) throws -> EventLoopFuture>{ + return try qbase(req: req) + .paginate(for: req) + .map{ + page in page.map{ + self.createRead($0) + } + } + } + //Get 1 Division + func read(req: Request) throws -> EventLoopFuture{ + + return try qbase(req: req).first().unwrap(or: Abort(.internalServerError)).map{self.createRead($0)} + + } + //Delete 1 Division + func delete(req: Request) throws -> EventLoopFuture{ + + guard let id = req.parameters.get("id", as: Int.self) else{ + throw Abort(.badRequest) + } + return mdlXUserRole.find(id, on: req.db).unwrap(or: Abort(.notFound)).flatMap{ $0.delete(on: req.db)}.map{.ok} + } + +} +extension XUserRoleCtrl{ + //Query Settings + func qbase(req: Request) throws -> QueryBuilder { + let query = mdlXUserRole.query(on: req.db).with(\.$user).with(\.$role) + if let id = req.parameters.get("id", as: Int.self){ + return query.filter(\.$id == id) + } else{ + return query + } + } + //create Output + func createRead(_ output: mdlXUserRole) -> mdlXUserRole.Output { + return mdlXUserRole.Output( + id: output.id!, + user: output.$user.value!, + role: output.$role.value!, + createdate: output.createdate, + createuserid: output.createuserid, + updatedate: output.updatedate, + updateuserid: output.updateuserid + ) + } + + func mapOutput(_ output: Optional.WrappedType, _ input: mdlXUserRole.Input){ + output.$user.id = input.user.id!; + output.$role.id = input.role.id!; + output.createdate = input.createdate; + output.updatedate = input.updatedate; + output.createuserid = input.createuserid; + output.updateuserid = input.updateuserid; + } + + func createUnit(_ input: mdlXUserRole.Input) -> mdlXUserRole { + return mdlXUserRole( + id: input.id ?? nil + , user: input.user + , role: input.role + , createuserid: input.createuserid ?? -1 + , createdate: input.createdate + , updateuserid: input.updateuserid ?? -1 + , updatedate: input.updatedate + ) + } + + //update function + func save(_ output: Optional.WrappedType, req: Request) -> EventLoopFuture { + return output + .save(on: req.db) + .map{mdlXUserRole.Output( + id: output.id! + , user: output.user + , role: output.role + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + ) + } + } + //create function + func save(_ output: mdlXUserRole, _ req: Request, _ input: mdlXUserRole.Input) -> EventLoopFuture { + return output + .save(on: req.db) + .map{ + mdlXUserRole.Output( + id: output.id! + , user: input.user + , role: input.role + , createdate: output.createdate + , createuserid: output.createuserid + , updatedate: output.updatedate + , updateuserid: output.updateuserid + ) + + } + } + +} +extension XUserRoleCtrl: RouteCollection{ + func boot(routes: RoutesBuilder) throws{ + let apigroup = routes.grouped("xuserroles") + apigroup.get("", use: readAll) + apigroup.get(":id", use: read) + apigroup.post("", use: create) + apigroup.post(":id", use: update) + apigroup.delete(":id", use: delete) + } +} diff --git a/Sources/App/Migrations/TableCreationOrdermd b/Sources/App/Migrations/TableCreationOrdermd new file mode 100644 index 0000000..2709eef --- /dev/null +++ b/Sources/App/Migrations/TableCreationOrdermd @@ -0,0 +1,89 @@ +# Table creation order +#001. DataType +#002. Unit +#003. Division +#004. LabSetting +#005. Location +#006. Gate +#007. Customer +#008. User +#009. Role +#010. XUserRole +#011. InputType +#012. ComparisonType +#013. Compartment +#014. CompartmentGroup +#015. CompartmentLocation +#016. IncompleteReason +#017. JobSite +#018. Level +#019. License +#020. NoteType +#021. Priority +#022. Reason +#023. RepairType +#024. SignatureType +#025. Status +#026. ValueType +#027. Module +#028. ContactType +#029. Contact -- Parents(Customer Location Equipment WorkOrder) --Children(ContactMethods) +#030. Product Children(Model) +#031. Make Children(Model) +#032. Model -- Parents(Product Make) -- Children(Equipment) +#033. MachineType replaces EquipmentType +#034. Machine //Replaces Equipment +#035. MachineNumber (This is for serialized numbers) +#036. MachineMeter (allowd for multiple meter readings) +#037. XCustomerMachine +#038. ResponseType +#039. UserDefinedCode replaces SMSCCode +#040. Category +#041. Item +#042. XItemResponseType replaces ItemResponseType +#043. Spec +#044. SpecItem +#045. SpecItemValue +#046. Fluid +#047. Viscosity +#048. XFluidViscosity +#049. XUserModule +#050. InspectionType +#051. InspectionLevel +#052. Part +#053. Template +#054. TemplateCategory +#055. TemplateCategoryItem was TemplateItemSpec +#056. TemplateCategoryItemSpec new table +#057. WorkOrder +#058. WorkOrderStatus +#059. WorkOrderUser +#060. Inspection +#061. InspectionCategory +#062. InspectionCategoryItem was InspectionItem +#063. InspectionCategoryItemResponseType was InspectionItemResponseType +#064. InspectionCategoryItemSpec was InspectionItemSpec +#065. InspectionCategoryItemSpecItem was InspectionItemSpecItem +#066. InspectionCategoryItemSpecItemTest was InspectionItemSpecItemTest +#067. InspectionCategoryItemSpecItemValue was InspectionItemSpecItemValue +#068. OilSample +#069. OilSampleItem +#070. OilSampleLabel +#071. CPCLCommand +#072. CPCLCommandOrder +#073. CPCLCommandFieldName +#074. CPCLCommandParameter +#075. CPCLCommandParameterValue +#076. Consumption +#077. ConsumptionItem + + + + + + + + + + + diff --git a/Sources/App/Models/c/CPCLTemplate.swift b/Sources/App/Models/c/CPCLTemplate.swift new file mode 100644 index 0000000..ff6c090 --- /dev/null +++ b/Sources/App/Models/c/CPCLTemplate.swift @@ -0,0 +1,120 @@ +// +// File.swift +// +// +// Created by Michiel Carman on 11/2/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class mdlCPCLTemplate: Model, Content{ + + static let schema = "CPCLTemplate" + + @ID(custom: "id", generatedBy: .database) var id: Int? + @Field(key: "name") var name: 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? + + //@Parent(key: "userId") var user: mdlUser + @Parent(key: "oilSampleLabelId") var oilsamplelabel: mdlOilSampleLabel + + @Children(for: \.$cpcltemplate) var commands: [mdlCPCLTemplateCommand] + + init(){} + + init(id: Int?){ + self.id = id + self.isactive = true + self.createuserid = -1 + self.updateuserid = -1 + self.$oilsamplelabel.id = -1 + } + + init(name: String){ + self.name = name + self.isactive = true + self.createuserid = -1 + self.updateuserid = -1 + self.$oilsamplelabel.id = mdlOilSampleLabel(id: 1).id! + } + + init(id: Int? = nil, name: String, isactive: Bool, createuserid: Int? = -1, createdate: Date? = nil, updateuserid: Int? = -1, updatedate: Date? = nil, oilsamplelabel: mdlOilSampleLabel, commands: [mdlCPCLTemplateCommand]?){ + self.id = id + self.name = name + self.isactive = isactive + self.createuserid = createuserid + self.createdate = createdate + self.updateuserid = updateuserid + self.updatedate = updatedate + self.$oilsamplelabel.id = oilsamplelabel.id! + } +} +extension mdlCPCLTemplate { + struct Input: Content{ + let id: Int? + let name: String + let isactive: Bool + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + let oilsamplelabel: mdlOilSampleLabel + let commands: [mdlCPCLTemplateCommand]? + } + + struct Output: Content{ + let id: Int? + let name: String + let isactive: Bool + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + let oilsamplelabel: mdlOilSampleLabel + let commands: [mdlCPCLTemplateCommand]? + } + struct create: Migration{ + func prepare(on database: Database) -> EventLoopFuture { + return database.schema("CPCLTemplate") + .field("id", .int, .identifier(auto: true)) + .field("name", .string) + .field("isActive", .bool) + .field("oilSampleLabelId", .int, .required, .references("OilSampleLabel", "id")) + .field("createUserId", .int) + .field("createDate", .datetime) + .field("updateUserId", .int) + .field("updateDate", .datetime) + .create() + } + func revert(on database: Database) -> EventLoopFuture { + database.schema("CPCLTemplate").delete() + } + } + // Uncomment if you need to seed the table. + struct seed: Migration { + func prepare(on database: Database) -> EventLoopFuture { + // 1 + let array: [mdlCPCLTemplate] = [ + .init(name: "Default") + ] + // 2 + return array.map { obj in + obj.save(on: database) + } + .flatten(on: database.eventLoop) + } + + func revert(on database: Database) -> EventLoopFuture { + // 3 + mdlCPCLTemplate.query(on: database).delete() + } + } + // +} diff --git a/Sources/App/Models/c/CPCLTemplateCommand.swift b/Sources/App/Models/c/CPCLTemplateCommand.swift new file mode 100644 index 0000000..be1c53b --- /dev/null +++ b/Sources/App/Models/c/CPCLTemplateCommand.swift @@ -0,0 +1,167 @@ +// +// File.swift +// +// +// Created by Michiel Carman on 11/2/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class mdlCPCLTemplateCommand: Model, Content{ + struct Input: Content{ + let id: Int? + let cmd: String + let sortorder: Int + let isactive: Bool + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + let cpcltemplate: mdlCPCLTemplate + } + + struct Output: Content{ + let id: Int? + let cmd: String + let sortorder: Int + let isactive: Bool + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + let cpcltemplate: mdlCPCLTemplate + } + + static let schema = "CPCLTemplateCommand" + + @ID(custom: "id", generatedBy: .database) var id: Int? + @Field(key: "cmd") var cmd: String + @Field(key: "sortOrder") var sortorder: Int + @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? + @Parent(key: "cpclTemplateId") var cpcltemplate: mdlCPCLTemplate + + + + init(){} + + init(cmd: String, sortorder: Int){ + self.cmd = cmd + self.sortorder = sortorder + self.isactive = true + self.createuserid = -1 + self.updateuserid = -1 + self.$cpcltemplate.id = mdlCPCLTemplate(id: 1).id! + } + + init(id: Int? = nil, cmd: String, sortorder: Int, isactive: Bool, createuserid: Int? = -1, createdate: Date? = nil, updateuserid: Int? = -1, updatedate: Date? = nil, cpcltemplate: mdlCPCLTemplate){ + self.id = id + self.cmd = cmd + self.sortorder = sortorder + self.isactive = isactive + self.createuserid = createuserid + self.createdate = createdate + self.updateuserid = updateuserid + self.updatedate = updatedate + self.$cpcltemplate.id = cpcltemplate.id! + } +} + +extension mdlCPCLTemplateCommand { + struct create: Migration{ + func prepare(on database: Database) -> EventLoopFuture { + return database.schema("CPCLTemplateCommand") + .field("id", .int, .identifier(auto: true)) + .field("cmd", .string) + .field("sortOrder", .int) + .field("isActive", .bool) + .field("cpclTemplateId", .int, .required, .references("CPCLTemplate", "id")) + .field("createUserId", .int) + .field("createDate", .datetime) + .field("updateUserId", .int) + .field("updateDate", .datetime) + .create() + } + func revert(on database: Database) -> EventLoopFuture { + database.schema("CPCLTemplateCommand").delete() + } + } + //* Uncomment if you need to seed the table. + struct seed: Migration { + func prepare(on database: Database) -> EventLoopFuture { + // 1 + let array: [mdlCPCLTemplateCommand] = [ + .init(cmd: "! 0 200 200 600 1 \r\n", sortorder: 1), + .init(cmd: "VB PDF-417 34 100 XD 3 YD 5 C 3 S 2 PDF Data \r\n", sortorder: 2), + .init(cmd: "[Dealer Code]|[Serial Number]|[Unit]|[Make]|[Jobsite]|[Model]|[]|[Compartment]|[]|[Meter Reading]|[Hours on Oil]|[Fluid Brand]|[Fluid Viscosity]|[Fluid Changed]|[Filter Changed]|[Oil Added Unit]|[Oil Added]|[Work Order Number]|[Oil Sample Date Barcode]|[Comment]|[Compartment Code]|\r\n", sortorder: 3), + .init(cmd: "ENDPDF \r\n", sortorder: 4), + .init(cmd: "T 0 0 215 500 Comment\r\n", sortorder: 5), + .init(cmd: "L 215 495 700 495 1 \r\n", sortorder: 6), + .init(cmd: "T 5 0 215 474 [Comment]\r\n", sortorder: 7), + .init(cmd: "T 0 0 215 390 Oil Brand\r\n", sortorder: 8), + .init(cmd: "L 215 385 447 385 1 \r\n", sortorder: 9), + .init(cmd: "T 5 0 215 364 [Fluid Brand]\r\n", sortorder: 10), + .init(cmd: "T 0 0 538 390 Oil Weight\r\n", sortorder: 11), + .init(cmd: "L 538 385 700 385 1 \r\n", sortorder: 12), + .init(cmd: "T 5 0 538 364 [Fluid Viscosity]\r\n", sortorder: 13), + .init(cmd: "T 0 0 468 335 Level\r\n", sortorder: 14), + .init(cmd: "L 468 330 700 330 1 \r\n", sortorder: 15), + .init(cmd: "T 5 0 468 309 [Level]\r\n", sortorder: 16), + .init(cmd: "T 0 0 215 335 Oil Added\r\n", sortorder: 17), + .init(cmd: "L 215 330 447 330 1 \r\n", sortorder: 18), + .init(cmd: "T 5 0 215 309 [Oil Added] [Oil Added Unit]\r\n", sortorder: 19), + .init(cmd: "T 0 0 215 445 Oil Chgd\r\n", sortorder: 20), + .init(cmd: "L 215 440 447 440 1 \r\n", sortorder: 21), + .init(cmd: "T 5 0 215 419 [Oil Changed]\r\n", sortorder: 22), + .init(cmd: "T 0 0 468 445 Filter Chgd\r\n", sortorder: 23), + .init(cmd: "L 468 440 700 440 1 \r\n", sortorder: 24), + .init(cmd: "T 5 0 468 419 [Filter Changed]\r\n", sortorder: 25), + .init(cmd: "T 0 0 215 225 Mtr Reading\r\n", sortorder: 26), + .init(cmd: "L 215 220 447 220 1 \r\n", sortorder: 27), + .init(cmd: "T 5 0 215 199 [Meter Reading]\r\n", sortorder: 28), + .init(cmd: "T 0 0 215 280 Hrs on Oil\r\n", sortorder: 29), + .init(cmd: "L 215 275 447 275 1 \r\n", sortorder: 30), + .init(cmd: "T 5 0 215 254 [Hours on Oil]\r\n", sortorder: 31), + .init(cmd: "T 0 0 215 170 Unit No\r\n", sortorder: 32), + .init(cmd: "L 215 165 447 165 1 \r\n", sortorder: 33), + .init(cmd: "T 5 0 215 144 [Unit]\r\n", sortorder: 34), + .init(cmd: "T 0 0 468 170 Serial No\r\n", sortorder: 35), + .init(cmd: "L 468 165 700 165 1 \r\n", sortorder: 36), + .init(cmd: "T 5 0 468 144 [Serial Number]\r\n", sortorder: 37), + .init(cmd: "T 0 0 468 115 Model\r\n", sortorder: 38), + .init(cmd: "L 468 110 700 110 1 \r\n", sortorder: 39), + .init(cmd: "T 5 0 468 89 [Model]\r\n", sortorder: 40), + .init(cmd: "T 0 0 215 115 Make\r\n", sortorder: 41), + .init(cmd: "L 215 110 447 110 1 \r\n", sortorder: 42), + .init(cmd: "T 5 0 215 89 [Make]\r\n", sortorder: 43), + .init(cmd: "T 0 0 215 60 Sample Taken From\r\n", sortorder: 44), + .init(cmd: "L 215 55 700 55 1 \r\n", sortorder: 45), + .init(cmd: "T 5 0 215 34 [Compartment]\r\n", sortorder: 46), + .init(cmd: "T 0 0 468 225 Sample Date\r\n", sortorder: 47), + .init(cmd: "L 468 220 700 220 1 \r\n", sortorder: 48), + .init(cmd: "T 5 0 468 199 [Oil Sample Date Label]\r\n", sortorder: 49), + .init(cmd: "T 5 0 15 5 [Customer]\r\n", sortorder: 50), + .init(cmd: "T 5 0 600 5 [Work Order Number]\r\n", sortorder: 51), + .init(cmd: "FORM \r\n", sortorder: 52), + .init(cmd: "PRINT \r\n", sortorder: 53) + ] + // 2 + return array.map { obj in + obj.save(on: database) + } + .flatten(on: database.eventLoop) + } + + func revert(on database: Database) -> EventLoopFuture { + // 3 + mdlCPCLTemplateCommand.query(on: database).delete() + } + } + // +} diff --git a/Sources/App/Models/c/Category.swift b/Sources/App/Models/c/Category.swift new file mode 100644 index 0000000..e09799d --- /dev/null +++ b/Sources/App/Models/c/Category.swift @@ -0,0 +1,108 @@ +// +// Category.swift +// +// +// Created by Michiel Carman on 10/26/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class mdlCategory: Model, Content{ + + static let schema = "Category" + + @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 + @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: \.$category) var items: [mdlItem] + + + + init(){} + + init(id: Int? = nil, name: String, description: String, isactive: Bool, createuserid: Int? = -1, createdate: Date? = nil, updateuserid: Int? = -1, updatedate: Date? = nil, items: [mdlItem]?){ + self.id = id + self.name = name + self.description = description + self.isactive = isactive + self.createuserid = createuserid + self.createdate = createdate + self.updateuserid = updateuserid + self.updatedate = updatedate + self.$items.value = items + } +} +extension mdlCategory{ + struct Input: Content{ + let id: Int? + let name: String + let description: String + let isactive: Bool + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + let items: [mdlItem]? + } + + struct Output: Content{ + let id: Int? + let name: String + let description: String + let isactive: Bool + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + let items: [mdlItem]? + } +} +extension mdlCategory { + struct create: Migration{ + func prepare(on database: Database) -> EventLoopFuture { + return database.schema("Category") + .field("id", .int, .identifier(auto: true)) + .field("name", .string) + .field("description", .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("Category").delete() + } + } + /* Uncomment if you need to seed the table. + struct seed: Migration { + func prepare(on database: Database) -> EventLoopFuture { + // 1 + let array: [<#Model#>] = [ + <#init#> + ] + // 2 + return array.map { obj in + obj.save(on: database) + } + .flatten(on: database.eventLoop) + } + + func revert(on database: Database) -> EventLoopFuture { + // 3 + <#Model#>.query(on: database).delete() + } + } + */ +} + diff --git a/Sources/App/Models/c/ComparisonType.swift b/Sources/App/Models/c/ComparisonType.swift new file mode 100644 index 0000000..5f603b3 --- /dev/null +++ b/Sources/App/Models/c/ComparisonType.swift @@ -0,0 +1,113 @@ +// +// ComparisonType.swift +// +// +// Created by Michiel Carman on 10/25/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class mdlComparisonType: Model, Content{ + struct Input: Content{ + let id: Int? + let name: String + let description: String + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + let specitems: [mdlSpecItem]? + let inspectioncategoryitemspecitems: [mdlInspectionCategoryItemSpecItem]? + } + + struct Output: Content{ + let id: Int? + let name: String + let description: String + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + let specitems: [mdlSpecItem]? + let inspectioncategoryitemspecitems: [mdlInspectionCategoryItemSpecItem]? + } + + static let schema = "ComparisonType" + + @ID(custom: "id", generatedBy: .database) var id: Int? + @Field(key: "name") var name: String + @Field(key: "description") var description: String + @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: \.$comparisontype) var specitems: [mdlSpecItem] + @Children(for: \.$comparisontype) var inspectioncategoryitemspecitems: [mdlInspectionCategoryItemSpecItem] + + init(){} + + init(id: Int? = nil, name: String, description: String, createuserid: Int? = -1, createdate: Date? = nil, updateuserid: Int? = -1, updatedate: Date? = nil, specitems: [mdlSpecItem]?, inspectioncategoryitemspecitems: [mdlInspectionCategoryItemSpecItem]?){ + self.id = id + self.name = name + self.description = description + self.createuserid = createuserid + self.createdate = createdate + self.updateuserid = updateuserid + self.updatedate = updatedate + self.$specitems.value = specitems + self.$inspectioncategoryitemspecitems.value = inspectioncategoryitemspecitems + } + + //Seeding + init(name: String, description: String, createuserid: Int? = -1, updateuserid: Int? = -1){ + self.id = id + self.name = name + self.description = description + self.createuserid = createuserid + self.updateuserid = updateuserid + } +} + +extension mdlComparisonType { + struct create: Migration{ + func prepare(on database: Database) -> EventLoopFuture { + return database.schema("ComparisonType") + .field("id", .int, .identifier(auto: true)) + .field("name", .string) + .field("description", .string) + .field("createUserId", .int) + .field("createDate", .datetime) + .field("updateUserId", .int) + .field("updateDate", .datetime) + .create() + } + func revert(on database: Database) -> EventLoopFuture { + database.schema("ComparisonType").delete() + } + } + struct seed: Migration { + func prepare(on database: Database) -> EventLoopFuture { + // 1 + let array: [mdlComparisonType] = [ + .init(name: "Range", description: "must be between a maximum and minimum", createuserid: -1, updateuserid: -1), + .init(name: "Min", description: "must be greater than or equal", createuserid: -1, updateuserid: -1), + .init(name: "Max", description: "must be less than or equal", createuserid: -1, updateuserid: -1), + .init(name: "Equals", description: "must be equal", createuserid: -1, updateuserid: -1), + .init(name: "Variance", description: "must be between the base plus or minus a variance", createuserid: -1, updateuserid: -1) + ] + // 2 + return array.map { obj in + obj.save(on: database) + } + .flatten(on: database.eventLoop) + } + + func revert(on database: Database) -> EventLoopFuture { + // 3 + mdlComparisonType.query(on: database).delete() + } + } +} diff --git a/Sources/App/Models/c/Compartment.swift b/Sources/App/Models/c/Compartment.swift new file mode 100644 index 0000000..d206a10 --- /dev/null +++ b/Sources/App/Models/c/Compartment.swift @@ -0,0 +1,89 @@ +// +// Compartment.swift +// +// +// Created by Michiel Carman on 10/25/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class mdlCompartment: Model, Content{ + struct Input: Content{ + let id: Int? + let name: String + let description: String + let code: String + let sortorder: Int + let isactive: Bool + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + } + + struct Output: Content{ + let id: Int? + let name: String + let description: String + let code: String + let sortorder: Int + let isactive: Bool + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + } + + static let schema = "Compartment" + + @ID(custom: "id", generatedBy: .database) var id: Int? + @Field(key: "name") var name: String + @Field(key: "description") var description: String + @Field(key: "code") var code: String + @Field(key: "sortOrder") var sortorder: Int + @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? + + init(){} + + init(id: Int? = nil, name: String, description: String, code: String, sortorder: Int, isactive: Bool = true, createuserid: Int? = -1, createdate: Date? = nil, updateuserid: Int? = -1, updatedate: Date? = nil){ + self.id = id + self.name = name + self.description = description + self.code = code + self.sortorder = sortorder + self.isactive = isactive + self.createuserid = createuserid + self.createdate = createdate + self.updateuserid = updateuserid + self.updatedate = updatedate + } +} + +extension mdlCompartment { + struct create: Migration{ + func prepare(on database: Database) -> EventLoopFuture { + return 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("createUserId", .int) + .field("createDate", .datetime) + .field("updateUserId", .int) + .field("updateDate", .datetime) + .create() + } + func revert(on database: Database) -> EventLoopFuture { + database.schema("Compartment").delete() + } + } +} diff --git a/Sources/App/Models/c/CompartmentGroup.swift b/Sources/App/Models/c/CompartmentGroup.swift new file mode 100644 index 0000000..9119938 --- /dev/null +++ b/Sources/App/Models/c/CompartmentGroup.swift @@ -0,0 +1,85 @@ +// +// CompartmentGroup.swift +// +// +// Created by Michiel Carman on 10/25/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class mdlCompartmentGroup: Model, Content{ + struct Input: Content{ + let id: Int? + let name: String + let description: String + let sortorder: Int + let isactive: Bool + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + } + + struct Output: Content{ + let id: Int? + let name: String + let description: String + let sortorder: Int + let isactive: Bool + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + } + + static let schema = "CompartmentGroup" + + @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 + @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? + + init(){} + + init(id: Int? = nil, name: String, description: String, sortorder: Int, isactive: Bool = true, createuserid: Int? = -1, createdate: Date? = nil, updateuserid: Int? = -1, updatedate: Date? = nil){ + self.id = id + self.name = name + self.description = description + self.sortorder = sortorder + self.isactive = isactive + self.createuserid = createuserid + self.createdate = createdate + self.updateuserid = updateuserid + self.updatedate = updatedate + } +} + +extension mdlCompartmentGroup { + struct create: Migration{ + func prepare(on database: Database) -> EventLoopFuture { + return database.schema("CompartmentGroup") + .field("id", .int, .identifier(auto: true)) + .field("name", .string) + .field("description", .string) + .field("sortOrder", .int) + .field("isActive", .int) + .field("createUserId", .int) + .field("createDate", .datetime) + .field("updateUserId", .int) + .field("updateDate", .datetime) + .create() + } + func revert(on database: Database) -> EventLoopFuture { + database.schema("CompartmentGroup").delete() + } + } + +} diff --git a/Sources/App/Models/c/CompartmentLocation.swift b/Sources/App/Models/c/CompartmentLocation.swift new file mode 100644 index 0000000..e94fd52 --- /dev/null +++ b/Sources/App/Models/c/CompartmentLocation.swift @@ -0,0 +1,89 @@ +// +// File.swift +// +// +// Created by Michiel Carman on 10/25/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class mdlCompartmentLocation: Model, Content{ + struct Input: Content{ + let id: Int? + let name: String + let description: String + let code: String + let sortorder: Int + let isactive: Bool + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + } + + struct Output: Content{ + let id: Int? + let name: String + let description: String + let code: String + let sortorder: Int + let isactive: Bool + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + } + + static let schema = "CompartmentLocation" + + @ID(custom: "id", generatedBy: .database) var id: Int? + @Field(key: "name") var name: String + @Field(key: "description") var description: String + @Field(key: "code") var code: String + @Field(key: "sortOrder") var sortorder: Int + @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? + + init(){} + + init(id: Int? = nil, name: String, description: String, code: String, sortorder: Int, isactive: Bool = true, createuserid: Int? = -1, createdate: Date? = nil, updateuserid: Int? = -1, updatedate: Date? = nil){ + self.id = id + self.name = name + self.description = description + self.code = code + self.sortorder = sortorder + self.isactive = isactive + self.createuserid = createuserid + self.createdate = createdate + self.updateuserid = updateuserid + self.updatedate = updatedate + } +} + +extension mdlCompartmentLocation { + struct create: Migration{ + func prepare(on database: Database) -> EventLoopFuture { + return 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("createUserId", .int) + .field("createDate", .datetime) + .field("updateUserId", .int) + .field("updateDate", .datetime) + .create() + } + func revert(on database: Database) -> EventLoopFuture { + database.schema("CompartmentLocation").delete() + } + } +} diff --git a/Sources/App/Models/c/Consumption.swift b/Sources/App/Models/c/Consumption.swift new file mode 100644 index 0000000..57f7e96 --- /dev/null +++ b/Sources/App/Models/c/Consumption.swift @@ -0,0 +1,57 @@ +// +// File.swift +// +// +// Created by Michiel Carman on 10/29/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class mdlConsumption: Model, Content{ + struct input{ + let id: Int? + let segment: String + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + let consumptionitems: [mdlConsumption] + } + + struct output{ + let id: Int? + let segment: String + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + let consumptionitems: [mdlConsumption] + } + + static let schema = "Consumption" + + @ID(custom: "id", generatedBy: .database) var id: Int? + @Field(key: "segment") var segment: String + @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? + @Parent(key: "workOrderId") var workorder: mdlWorkOrder + @Children(for: \.$consumption) var consumptionitems: [mdlConsumptionItem] + + init(){} + + init(id: Int? = nil, segment: String, createuserid: Int? = -1, createdate: Date? = nil, updateuserid: Int? = -1, updatedate: Date? = nil, workorder: mdlWorkOrder, consumptionitems: [mdlConsumptionItem] ){ + self.id = id + self.segment = segment + self.createuserid = createuserid + self.createdate = createdate + self.updateuserid = updateuserid + self.updatedate = updatedate + self.$workorder.id = workorder.id! + self.$consumptionitems.value = consumptionitems + } +} diff --git a/Sources/App/Models/c/ConsumptionItem.swift b/Sources/App/Models/c/ConsumptionItem.swift new file mode 100644 index 0000000..31d599f --- /dev/null +++ b/Sources/App/Models/c/ConsumptionItem.swift @@ -0,0 +1,77 @@ +// +// File.swift +// +// +// Created by Michiel Carman on 10/29/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class mdlConsumptionItem: Model, Content{ + struct input{ + let id: Int? + let fluidname: String + let viscosityname: String + let quantity: Int + let sortorder: Int + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + let consumption: mdlConsumption + } + + struct output{ + let id: Int? + let fluidname: String + let viscosityname: String + let quantity: Int + let sortorder: Int + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + let consumption: mdlConsumption + } + + static let schema = "ConsumptionItem" + + @ID(custom: "id", generatedBy: .database) var id: Int? + @Field(key: "fluidName") var fluidname: String + @Field(key: "viscosityName") var viscosityname: String + @Field(key: "quantity") var quantity: Int + @Field(key: "sortOrder") var sortorder: Int + @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? + @Parent(key: "consumptionId") var consumption: mdlConsumption + + init(){} + + init(id: Int? = nil + , fluidname: String + , viscosityname: String + , quantity: Int + , sortorder: Int + , createuserid: Int? = -1 + , createdate: Date? = nil + , updateuserid: Int? = -1 + , updatedate: Date? = nil + , consumption: mdlConsumption + ){ + self.id = id + self.fluidname = fluidname + self.viscosityname = viscosityname + self.quantity = quantity + self.sortorder = sortorder + self.createuserid = createuserid + self.createdate = createdate + self.updateuserid = updateuserid + self.updatedate = updatedate + self.$consumption.id = consumption.id! + } +} diff --git a/Sources/App/Models/c/Contact.swift b/Sources/App/Models/c/Contact.swift new file mode 100644 index 0000000..78c7ffc --- /dev/null +++ b/Sources/App/Models/c/Contact.swift @@ -0,0 +1,118 @@ +// +// Contact.swift +// +// +// Created by Michiel Carman on 10/25/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class mdlContact: Model, Content{ + struct Input: Content{ + let id: Int? + let firstname: String + let lastname: String + let isactive: Bool + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + let customer: mdlCustomer + let location: mdlLocation + let contacttypes: [mdlContactMethod]? + let files: [mdlFile]? + } + + struct Output: Content{ + let id: Int? + let firstname: String + let lastname: String + let isactive: Bool + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + let customer: mdlCustomer + let location: mdlLocation + let contacttypes: [mdlContactMethod]? + let files: [mdlFile]? + } + + 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: "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? + @Parent(key: "customerId") var customer: mdlCustomer + @Parent(key: "locationId") var location: mdlLocation + @Children(for: \.$contact) var contacttypes: [mdlContactMethod] + @Children(for: \.$contact) var files: [mdlFile] + + init(){} + + init(id: Int? = nil, firstname: String, lastname: String, isactive: Bool, createuserid: Int? = -1, createdate: Date? = nil, updateuserid: Int? = -1, updatedate: Date? = nil, customer: mdlCustomer, location: mdlLocation, contacttypes: [mdlContactMethod]?, files: [mdlFile]?){ + self.id = id + self.firstname = firstname + self.lastname = lastname + self.isactive = isactive + self.createuserid = createuserid + self.createdate = createdate + self.updateuserid = updateuserid + self.updatedate = updatedate + self.$customer.id = customer.id! + self.$location.id = location.id! + self.$contacttypes.value = contacttypes + self.$files.value = files + } +} + +extension mdlContact { + struct create: Migration{ + func prepare(on database: Database) -> EventLoopFuture { + return database.schema("Contact") + .field("id", .int, .identifier(auto: true)) + .field("customerId", .int, .references("Customer", "id")) + .field("locationId", .int, .references("Location", "id")) + .field("firstName", .string) + .field("lastName", .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("Contact").delete() + } + } + /* + struct seed: Migration { + func prepare(on database: Database) -> EventLoopFuture { + // 1 + let array: [<#Model#>] = [ + <#init#> + ] + // 2 + return array.map { obj in + obj.save(on: database) + } + .flatten(on: database.eventLoop) + } + + func revert(on database: Database) -> EventLoopFuture { + // 3 + <#Model#>.query(on: database).delete() + } + } + */ +} + diff --git a/Sources/App/Models/c/ContactMethod.swift b/Sources/App/Models/c/ContactMethod.swift new file mode 100644 index 0000000..acb4350 --- /dev/null +++ b/Sources/App/Models/c/ContactMethod.swift @@ -0,0 +1,125 @@ +// +// ContactMethod.swift +// +// +// Created by Michiel Carman on 10/25/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class mdlContactMethod: Model, Content{ + struct Input: Content{ + let id: Int? + let name: String + let description: String + let line1: String + let line2: String + let line3: String + let line4: String + let primary: Bool + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + let contact: mdlContact + } + + struct Output: Content{ + let id: Int? + let name: String + let description: String + let line1: String + let line2: String + let line3: String + let line4: String + let primary: Bool + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + let contact: mdlContact + } + + static let schema = "ContactMethod" + + @ID(custom: "id", generatedBy: .database) var id: Int? + @Field(key: "name") var name: String + @Field(key: "description") var description: String + @Field(key: "line1") var line1: String + @Field(key: "line2") var line2: String + @Field(key: "line3") var line3: String + @Field(key: "line4") var line4: String + @Field(key: "primary") var primary: 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? + + @Parent(key: "contactId") var contact: mdlContact + + init(){} + + init(id: Int? = nil, name: String, description: String, line1: String, line2: String, line3: String, line4: String, primary: Bool = false, createuserid: Int? = -1, createdate: Date? = nil, updateuserid: Int? = -1, updatedate: Date? = nil, contact: mdlContact){ + self.id = id + self.name = name + self.description = description + self.line1 = line1 + self.line2 = line2 + self.line3 = line3 + self.line4 = line4 + self.primary = primary + self.createuserid = createuserid + self.createdate = createdate + self.updateuserid = updateuserid + self.updatedate = updatedate + self.$contact.id = contact.id! + } +} +extension mdlContactMethod { + struct create: Migration{ + func prepare(on database: Database) -> EventLoopFuture { + return database.schema("ContactMethod") + .field("id", .int, .identifier(auto: true)) + .field("primary", .bool) + .field("name", .string) + .field("description", .string) + .field("line1", .string) + .field("line2", .string) + .field("line3", .string) + .field("line4", .string) + .field("contactId", .int) + .field("createUserId", .int) + .field("createDate", .datetime) + .field("updateUserId", .int) + .field("updateDate", .datetime) + .create() + } + func revert(on database: Database) -> EventLoopFuture { + database.schema("ContactMethod").delete() + } + } + /* + struct seed: Migration { + func prepare(on database: Database) -> EventLoopFuture { + // 1 + let array: [<#Model#>] = [ + <#init#> + ] + // 2 + return array.map { obj in + obj.save(on: database) + } + .flatten(on: database.eventLoop) + } + + func revert(on database: Database) -> EventLoopFuture { + // 3 + <#Model#>.query(on: database).delete() + } + } + */ +} + diff --git a/Sources/App/Models/c/Customer.swift b/Sources/App/Models/c/Customer.swift new file mode 100644 index 0000000..6331de7 --- /dev/null +++ b/Sources/App/Models/c/Customer.swift @@ -0,0 +1,137 @@ +// +// 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() + } + } +} diff --git a/Sources/App/Models/d/DataType.swift b/Sources/App/Models/d/DataType.swift new file mode 100644 index 0000000..9361de2 --- /dev/null +++ b/Sources/App/Models/d/DataType.swift @@ -0,0 +1,86 @@ +// +// DataType.swift +// +// +// Created by Michiel Carman on 10/24/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class mdlDataType: Model, Content{ + struct Input: Content{ + let id: Int? + let name: String + let description: String + let units: [mdlUnit]? + } + + struct Output: Content{ + let id: Int + let name: String + let description: String + let units: [mdlUnit]? + } + + 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] + + init(){} + + init(id: Int? = nil){ + self.id = id + } + + init(id: Int? = nil, name: String, description: String, units: [mdlUnit]?){ + self.id = id + self.name = name + self.description = description + self.$units.value = units! + } +} + +extension mdlDataType { + struct create: Migration{ + func prepare(on database: Database) -> EventLoopFuture { + return database.schema("DataType") + .field("id", .int, .identifier(auto: true)) + .field("name", .string) + .field("description", .string) + .create() + } + func revert(on database: Database) -> EventLoopFuture { + database.schema("DataType").delete() + } + } + struct seed: Migration { + func prepare(on database: Database) -> EventLoopFuture { + // 1 + let datatyes: [mdlDataType] = [ + .init( name: "String", description: "", units: []), + .init( name: "Integer", description: "", units: []), + .init( name: "Decimal", description: "", units: []), + .init( name: "Date Time", description: "", units: []), + .init( name: "Bool", description: "", units: []) + ] + // 2 + return datatyes.map { datatype in + datatype.save(on: database) + } + .flatten(on: database.eventLoop) + } + + func revert(on database: Database) -> EventLoopFuture { + // 3 + mdlDataType.query(on: database).delete() + } + } +} diff --git a/Sources/App/Models/d/Division.swift b/Sources/App/Models/d/Division.swift new file mode 100644 index 0000000..18a7823 --- /dev/null +++ b/Sources/App/Models/d/Division.swift @@ -0,0 +1,113 @@ +// +// File.swift +// +// +// Created by Michiel Carman on 10/24/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class mdlDivision: Model, Content{ + struct Input: Content{ + let id: Int? + let name: String + let description: String + let isactive: Bool + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + let users: [mdlUser]? + } + + struct Output: Content{ + let id: Int? + let name: String + let description: String + let isactive: Bool + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + let users: [mdlUser]? + } + + static let schema = "Division" + + @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 + @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: \.$division) var users: [mdlUser] + + init(){} + + init(id: Int? = nil){ + self.id = id + } + init(id: Int? = nil, name: String, description: String, isactive: Bool){ + self.id = id! + self.name = name + self.description = description + self.isactive = isactive + } + + init(id: Int? = nil, name: String, description: String, isactive: Bool = true, createuserid: Int? = -1, createdate: Date? = nil, updateuserid: Int? = -1, updatedate: Date? = nil, users: [mdlUser]?){ + self.id = id + self.name = name + self.description = description + self.isactive = isactive + self.createuserid = createuserid + self.createdate = createdate + self.updateuserid = updateuserid + self.updatedate = updatedate + self.$users.value = users + } +} + +extension mdlDivision { + struct create: Migration{ + func prepare(on database: Database) -> EventLoopFuture { + return database.schema("Division") + .field("id", .int, .identifier(auto: true)) + .field("name", .string) + .field("description", .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("Division").delete() + } + } + struct seed: Migration { + func prepare(on database: Database) -> EventLoopFuture { + // 1 + let array: [mdlDivision] = [ + .init(id: -1, name: "System", description: "", users: []) + ] + // 2 + return array.map { obj in + obj.save(on: database) + } + .flatten(on: database.eventLoop) + } + + func revert(on database: Database) -> EventLoopFuture { + // 3 + mdlDivision.query(on: database).delete() + } + } +} + diff --git a/Sources/App/Models/f/File.swift b/Sources/App/Models/f/File.swift new file mode 100644 index 0000000..7ca692e --- /dev/null +++ b/Sources/App/Models/f/File.swift @@ -0,0 +1,147 @@ +// +// File.swift +// +// +// Created by Michiel Carman on 10/29/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class mdlFile: Model, Content{ + struct Input: Content{ + let id: Int? + let name: String + let filepath: String + let filedata: String + let filetype: String + let fileextension: String + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + let workorder: mdlWorkOrder + let inspectioncategoryitem: mdlInspectionCategoryItem + let contact: mdlContact + } + + struct Output: Content{ + let id: Int? + let name: String + let filepath: String + let filedata: String + let filetype: String + let fileextension: String + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + let workorder: mdlWorkOrder + let inspectioncategoryitem: mdlInspectionCategoryItem + let contact: mdlContact + } + + static let schema = "File" + + @ID(custom: "id", generatedBy: .database) var id: Int? + @Field(key: "name") var name: String + @Field(key: "filePath") var filepath: String + @Field(key: "fileType") var filetype: String + @Field(key: "fileExtension") var fileextension: String + @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? + @Parent(key: "workOrderId") var workorder: mdlWorkOrder + @Parent(key: "inspectionCategoryItemId") var inspectioncategoryitem: mdlInspectionCategoryItem + @Parent(key: "contactId") var contact: mdlContact + + init(){} + + init(id: Int? = nil + , name: String + , filepath: String + , filedata: String + , filetype: String + , fileextension: String + , createuserid: Int? = -1 + , createdate: Date? = nil + , updateuserid: Int? = -1 + , updatedate: Date? = nil + , workorder: mdlWorkOrder + , inspectioncategoryitem: mdlInspectionCategoryItem + , contact: mdlContact + ){ + self.id = id + self.name = name + self.filepath = filepath + self.filetype = filetype + self.fileextension = fileextension + self.createuserid = createuserid + self.createdate = createdate + self.updateuserid = updateuserid + self.updatedate = updatedate + self.$workorder.id = workorder.id! + self.$inspectioncategoryitem.id = inspectioncategoryitem.id! + self.$contact.id = contact.id! + } +} +extension mdlFile { + struct create: Migration{ + func prepare(on database: Database) -> EventLoopFuture { + return database.schema("File") + .field("id", .int, .identifier(auto: true)) + .field("workOrderId", .int, .references("WorkOrder", "id")) + .field("inspectionCateglryItemId", .int, .references("InspectionCategoryItem", "id")) + .field("contactId", .int, .references("Contact", "id")) + .field("name", .string) + .field("filePath", .string) + .field("fileType", .string) + .field("fileExtension", .string) + .field("createUserId", .int) + .field("createDate", .datetime) + .field("updateUserId", .int) + .field("updateDate", .datetime) + .create() + } + func revert(on database: Database) -> EventLoopFuture { + database.schema("File").delete() + } + } + struct update001: Migration{ + func prepare(on database: Database) -> EventLoopFuture { + return database.schema("File") + .field("inspectionCategoryItemId", .int, .references("InspectionCategoryItem", "id")) + .deleteField("inspectionCateglryItemId") + .update() + } + func revert(on database: Database) -> EventLoopFuture { + database.schema("File") + .field("inspectionCateglryItemId", .int, .references("InspectionCategoryItem", "id")) + .deleteField("inspectionCategoryItemId") + .update() + } + } + /* Uncomment if you need to seed the table. + struct seed: Migration { + func prepare(on database: Database) -> EventLoopFuture { + // 1 + let array: [<#Model#>] = [ + <#init#> + ] + // 2 + return array.map { obj in + obj.save(on: database) + } + .flatten(on: database.eventLoop) + } + + func revert(on database: Database) -> EventLoopFuture { + // 3 + <#Model#>.query(on: database).delete() + } + } + */ +} diff --git a/Sources/App/Models/f/Fluid.swift b/Sources/App/Models/f/Fluid.swift new file mode 100644 index 0000000..e968492 --- /dev/null +++ b/Sources/App/Models/f/Fluid.swift @@ -0,0 +1,112 @@ +// +// File.swift +// +// +// Created by Michiel Carman on 10/27/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class mdlFluid: Model, Content{ + + static let schema = "Fluid" + + @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 + @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? + + @Siblings(through: mdlXFluidViscosity.self, from: \.$fluid, to: \.$viscosity) public var viscosities: [mdlViscosity] + + + + init(){} + + init(id: Int? = nil, name: String, description: String, sortorder: Int = 0, isactive: Bool = true, createuserid: Int? = -1, createdate: Date? = nil, updateuserid: Int? = -1, updatedate: Date? = nil, viscosities: [mdlViscosity]?){ + self.id = id + self.name = name + self.description = description + self.sortorder = sortorder + self.isactive = isactive + self.createuserid = createuserid + self.createdate = createdate + self.updateuserid = updateuserid + self.updatedate = updatedate + self.$viscosities.value = viscosities + } +} + +extension mdlFluid { + struct Input: Content{ + let id: Int? + let name: String + let description: String + let sortoder: Int + let isactive: Bool + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + let viscosities: [mdlViscosity]? + } + + struct Output: Content{ + let id: Int? + let name: String + let description: String + let sortoder: Int + let isactive: Bool + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + let viscosities: [mdlViscosity]? + } + struct create: Migration{ + func prepare(on database: Database) -> EventLoopFuture { + return database.schema("Fluid") + .field("id", .int, .identifier(auto: true)) + .field("name", .string) + .field("description", .string) + .field("sortOrder", .int) + .field("isActive", .bool) + .field("createUserId", .int) + .field("createDate", .datetime) + .field("updateUserId", .int) + .field("updateDate", .datetime) + .create() + } + func revert(on database: Database) -> EventLoopFuture { + database.schema("Fluid").delete() + } + } + /* Uncomment if you need to seed the table. + struct seed: Migration { + func prepare(on database: Database) -> EventLoopFuture { + // 1 + let array: [<#Model#>] = [ + <#init#> + ] + // 2 + return array.map { obj in + obj.save(on: database) + } + .flatten(on: database.eventLoop) + } + + func revert(on database: Database) -> EventLoopFuture { + // 3 + <#Model#>.query(on: database).delete() + } + } + */ +} + diff --git a/Sources/App/Models/f/FuelLevel.swift b/Sources/App/Models/f/FuelLevel.swift new file mode 100644 index 0000000..622e925 --- /dev/null +++ b/Sources/App/Models/f/FuelLevel.swift @@ -0,0 +1,123 @@ +// +// File.swift +// +// +// Created by Michiel Carman on 10/29/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class mdlFuelLevel: Model, Content{ + struct Input: Content{ + let id: Int? + let name: String + let description: String + let isactive: Bool + let sortorder: Int + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + } + + struct Output: Content{ + let id: Int? + let name: String + let description: String + let isactive: Bool + let sortorder: Int + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + } + + static let schema = "FuelLevel" + + @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 + @Field(key: "sortOrder") var sortorder: Int + @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? + + init(){} + + init(id: Int? = nil){ + self.id = id + } + + init(id: Int? = nil + , name: String + , description: String + , isactive: Bool = true + , sortorder: Int = 0 + , createuserid: Int? = -1 + , createdate: Date? = nil + , updateuserid: Int? = -1 + , updatedate: Date? = nil + ){ + self.id = id + self.name = name + self.description = description + self.isactive = isactive + self.sortorder = sortorder + self.createuserid = createuserid + self.createdate = createdate + self.updateuserid = updateuserid + self.updatedate = updatedate + } +} + +extension mdlFuelLevel { + struct create: Migration{ + func prepare(on database: Database) -> EventLoopFuture { + return database.schema("FuelLevel") + .field("id", .int, .identifier(auto: true)) + .field("name", .string) + .field("description", .string) + .field("isActive", .bool) + .field("sortOrder", .int) + .field("createUserId", .int) + .field("createDate", .datetime) + .field("updateUserId", .int) + .field("updateDate", .datetime) + .create() + } + func revert(on database: Database) -> EventLoopFuture { + database.schema("FuelLevel").delete() + } + } + struct seed: Migration { + func prepare(on database: Database) -> EventLoopFuture { + // 1 + let array: [mdlFuelLevel] = [ + .init(name: "Full", description: "Full Tank", isactive: true, sortorder: 0), + .init(name: "Empty", description: "Empty Tank", isactive: true, sortorder: 1), + .init(name: "7/8", description: "7/8 full", isactive: true, sortorder: 2), + .init(name: "3/4", description: "3/4 full", isactive: true, sortorder: 3), + .init(name: "5/8", description: "5/8 full", isactive: true, sortorder: 4), + .init(name: "1/2", description: "1/2 full", isactive: true, sortorder: 5), + .init(name: "3/8", description: "3/8 full", isactive: true, sortorder: 6), + .init(name: "1/4", description: "1/4 full", isactive: true, sortorder: 7), + .init(name: "1/8", description: "1/8 full", isactive: true, sortorder: 8) + ] + // 2 + return array.map { obj in + obj.save(on: database) + } + .flatten(on: database.eventLoop) + } + + func revert(on database: Database) -> EventLoopFuture { + // 3 + mdlFuelLevel.query(on: database).delete() + } + } +} diff --git a/Sources/App/Models/g/Gate.swift b/Sources/App/Models/g/Gate.swift new file mode 100644 index 0000000..425ec7b --- /dev/null +++ b/Sources/App/Models/g/Gate.swift @@ -0,0 +1,124 @@ +// +// File.swift +// +// +// Created by Michiel Carman on 10/24/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class mdlGate: Model, Content{ + struct Input: Content{ + let id: Int? + let name: String + let description: String + let sortorder: Int + let isactive: Bool + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + let location: mdlLocation + } + + struct Output: Content{ + let id: Int? + let name: String + let description: String + let sortorder: Int + let isactive: Bool + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + let location: mdlLocation + } + + 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: "sortOrder") var sortorder: Int + @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? + + @Parent(key: "locationId") var location: mdlLocation + + //@Children(for: \.$gate) var users: [mdlUser] + + init(){} + + init(id: Int? = nil){ + self.id = id! + } + + init(id: Int? = nil, name: String, description: String, sortorder: Int, isactive: Bool = true, createuserid: Int? = -1, createdate: Date? = nil, updateuserid: Int? = -1, updatedate: Date? = nil, location: mdlLocation){ + self.id = id! + self.name = name + self.description = description + self.sortorder = sortorder + self.isactive = isactive + self.createuserid = createuserid + self.createdate = createdate + self.updateuserid = updateuserid + self.updatedate = updatedate + self.$location.id = location.id! + } +} + +extension mdlGate { + struct create: Migration{ + func prepare(on database: Database) -> EventLoopFuture { + return database.schema("Gate") + .field("id", .int, .identifier(auto: true)) + .field("name", .string) + .field("description", .string) + .field("sortOrder", .int) + .field("isActive", .bool) + .field("locationId", .int, .required, .references("Location", "id")) + .field("createUserId", .int) + .field("createDate", .datetime) + .field("updateUserId", .int) + .field("updateDate", .datetime) + .create() + } + func revert(on database: Database) -> EventLoopFuture { + database.schema("Gate").delete() + } + } + struct seed: Migration { + func prepare(on database: Database) -> EventLoopFuture { + // 1 + let array: [mdlGate] = [ + .init( + id: -1 + , name: "System" + , description: "" + , sortorder: 0 + , location: mdlLocation( + id: -1 + ) + ) + ] + // 2 + return array.map { obj in + obj.save(on: database) + } + .flatten(on: database.eventLoop) + } + + func revert(on database: Database) -> EventLoopFuture { + // 3 + mdlGate.query(on: database).delete() + } + } +} + + diff --git a/Sources/App/Models/i/IncompleteReason.swift b/Sources/App/Models/i/IncompleteReason.swift new file mode 100644 index 0000000..4696c8f --- /dev/null +++ b/Sources/App/Models/i/IncompleteReason.swift @@ -0,0 +1,84 @@ +// +// IncompleteReason.swift +// +// +// Created by Michiel Carman on 10/25/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class mdlIncompleteReason: Model, Content{ + struct Input: Content{ + let id: Int? + let name: String + let description: String + let isactive: Bool + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + let workorders: [mdlWorkOrder]? + } + + struct Output: Content{ + let id: Int? + let name: String + let description: String + let isactive: Bool + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + let workorders: [mdlWorkOrder]? + } + + static let schema = "IncompleteReason" + + @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 + @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: \.$incompletereason) var workorders: [mdlWorkOrder] + + init(){} + + init(id: Int? = nil, name: String, description: String, isactive: Bool = true, createuserid: Int? = -1, createdate: Date? = nil, updateuserid: Int? = -1, updatedate: Date? = nil, workorders: [mdlWorkOrder]?){ + self.id = id + self.name = name + self.description = description + self.isactive = isactive + self.createuserid = createuserid + self.createdate = createdate + self.updateuserid = updateuserid + self.updatedate = updatedate + self.$workorders.value = workorders + } +} + +extension mdlIncompleteReason { + struct create: Migration{ + func prepare(on database: Database) -> EventLoopFuture { + return database.schema("IncompleteReason") + .field("id", .int, .identifier(auto: true)) + .field("name", .string) + .field("description", .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("IncompleteReason").delete() + } + } +} diff --git a/Sources/App/Models/i/InputType.swift b/Sources/App/Models/i/InputType.swift new file mode 100644 index 0000000..c53a347 --- /dev/null +++ b/Sources/App/Models/i/InputType.swift @@ -0,0 +1,80 @@ +// +// InputType.swift +// +// +// Created by Michiel Carman on 10/25/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class mdlInputType: Model, Content{ + struct Input: Content{ + let id: Int? + let name: String + let items: [mdlItem]? + let inspectioncategoryitems: [mdlInspectionCategoryItem]? + } + + struct Output: Content{ + let id: Int? + let name: String + let items: [mdlItem]? + let inspectioncategoryitems: [mdlInspectionCategoryItem]? + + } + + static let schema = "InputType" + + @ID(custom: "id", generatedBy: .database) var id: Int? + @Field(key: "name") var name: String + + @Children(for: \.$inputtype) var items: [mdlItem] + @Children(for: \.$inputtype) var inspectioncategoryitems: [mdlInspectionCategoryItem] + + init(){} + + init(id: Int? = nil, name: String, items: [mdlItem]?, inspectioncategoryitems: [mdlInspectionCategoryItem]?){ + self.id = id + self.name = name + self.$items.value = items! + self.$inspectioncategoryitems.value = inspectioncategoryitems! + } +} + +extension mdlInputType { + struct create: Migration{ + func prepare(on database: Database) -> EventLoopFuture { + return database.schema("InputType") + .field("id", .int, .identifier(auto: true)) + .field("name", .string) + .create() + } + func revert(on database: Database) -> EventLoopFuture { + database.schema("InputType").delete() + } + } + struct seed: Migration { + func prepare(on database: Database) -> EventLoopFuture { + // 1 + let array: [mdlInputType] = [ + .init(name: "None", items: [], inspectioncategoryitems: []), + .init(name: "Radio Buttion List", items: [], inspectioncategoryitems: []), + .init(name: "Drop Down List", items: [], inspectioncategoryitems: []), + .init(name: "Text", items: [], inspectioncategoryitems: []) + ] + // 2 + return array.map { obj in + obj.save(on: database) + } + .flatten(on: database.eventLoop) + } + + func revert(on database: Database) -> EventLoopFuture { + // 3 + mdlInputType.query(on: database).delete() + } + } +} diff --git a/Sources/App/Models/i/Inspection.swift b/Sources/App/Models/i/Inspection.swift new file mode 100644 index 0000000..e1dae7c --- /dev/null +++ b/Sources/App/Models/i/Inspection.swift @@ -0,0 +1,128 @@ +// +// File.swift +// +// +// Created by Michiel Carman on 10/28/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class mdlInspection: Model, Content{ + + static let schema = "Inspection" + + @ID(custom: "id", generatedBy: .database) var id: Int? + @Field(key: "interval") var interval: String + @Field(key: "segment") var segment: String + @Field(key: "startDate") var startdate: Date? + @Field(key: "endDate") var enddate: Date? + @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? + @Parent(key: "workOrderId") var workorder: mdlWorkOrder + @Parent(key: "inspectionTypeId") var inspectiontype: mdlInspectionType + @Parent(key: "inspectionLevelId") var inspectionlevel: mdlInspectionLevel + @Siblings(through: mdlInspectionUser.self, from: \.$inspection, to: \.$user) public var technicians: [mdlUser] + + + @Children(for: \.$inspection) var inspectioncategories: [mdlInspectionCategory] + + init(){} + + init(id: Int? = nil, interval: String, segment: String, startdate: Date? = nil, enddate: Date? = nil, createuserid: Int? = -1, createdate: Date? = nil, updateuserid: Int? = -1, updatedate: Date? = nil, workorder: mdlWorkOrder, inspectiontye: mdlInspectionType, inspectionlevel: mdlInspectionLevel, technicians: [mdlUser], inspectioncategoryies: [mdlInspectionCategory]){ + self.id = id + self.interval = interval + self.segment = segment + self.startdate = startdate + self.enddate = enddate + self.createuserid = createuserid + self.createdate = createdate + self.updateuserid = updateuserid + self.updatedate = updatedate + self.$workorder.id = workorder.id! + self.$inspectiontype.id = inspectiontye.id! + self.$inspectionlevel.id = inspectionlevel.id! + self.$technicians.value = technicians + self.$inspectioncategories.value = inspectioncategoryies + } +} +extension mdlInspection { + struct Input: Content{ + let id: Int? + let interval: String + let segment: String + let startdate: Date? + let enddate: Date? + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + let workorder: mdlWorkOrder + let inspectiontype: mdlInspectionType + let inspectionlevel: mdlInspectionLevel + let technicians: [mdlUser]? + let inspectioncategories: [mdlInspectionCategory]? + } + + struct Output: Content{ + let id: Int? + let interval: String + let segment: String + let startdate: Date? + let enddate: Date? + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + let workorder: mdlWorkOrder + let inspectiontype: mdlInspectionType + let inspectionlevel: mdlInspectionLevel + let technicians: [mdlUser]? + let inspectioncategories: [mdlInspectionCategory]? + } + struct create: Migration{ + func prepare(on database: Database) -> EventLoopFuture { + return database.schema("Inspection") + .field("id", .int, .identifier(auto: true)) + .field("interval", .string) + .field("segment", .string) + .field("startDate", (.datetime)!) + .field("endDate", (.datetime)!) + .field("workOrderId", .int, .required, .references("WorkOrder", "id")) + .field("inspectionTypeId", .int, .references("InspectionType", "id")) + .field("inspectionLevelId", .int, .references("InspectionLevel", "id")) + .field("createUserId", .int) + .field("createDate", .datetime) + .field("updateUserId", .int) + .field("updateDate", .datetime) + .create() + } + func revert(on database: Database) -> EventLoopFuture { + database.schema("Inspection").delete() + } + } + /* Uncomment if you need to seed the table. + struct seed: Migration { + func prepare(on database: Database) -> EventLoopFuture { + // 1 + let array: [<#Model#>] = [ + <#init#> + ] + // 2 + return array.map { obj in + obj.save(on: database) + } + .flatten(on: database.eventLoop) + } + + func revert(on database: Database) -> EventLoopFuture { + // 3 + <#Model#>.query(on: database).delete() + } + } + */ +} diff --git a/Sources/App/Models/i/InspectionCategory.swift b/Sources/App/Models/i/InspectionCategory.swift new file mode 100644 index 0000000..06d7680 --- /dev/null +++ b/Sources/App/Models/i/InspectionCategory.swift @@ -0,0 +1,117 @@ +// +// InspectionCategory.swift +// +// +// Created by Michiel Carman on 10/28/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class mdlInspectionCategory: Model, Content{ + + static let schema = "InspectionCategory" + + @ID(custom: "id", generatedBy: .database) var id: Int? + @Field(key: "summary") var summary: String + @Field(key: "sortOrder") var sortorder: Int + @Field(key: "categoryName") var categoryname: String + @Field(key: "categoryDescription") var categorydescription: 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? + @Parent(key: "inspectionId") var inspection: mdlInspection + + @Children(for: \.$inspectioncategory) var inspectioncategoryitems: [mdlInspectionCategoryItem] + + init(){} + + init(id: Int? = nil, summary: String, sortorder: Int = 0, categoryname: String, categorydescription: String, isactive: Bool, createuserid: Int? = -1, createdate: Date? = nil, updateuserid: Int? = -1, updatedate: Date? = nil, inspection: mdlInspection, inspectioncategoyitems: [mdlInspectionCategoryItem]?){ + self.id = id + self.summary = summary + self.sortorder = sortorder + self.categoryname = categoryname + self.categorydescription = categorydescription + self.createuserid = createuserid + self.createdate = createdate + self.updateuserid = updateuserid + self.updatedate = updatedate + self.$inspection.id = inspection.id! + self.$inspectioncategoryitems.value = inspectioncategoyitems + } +} +extension mdlInspectionCategory { + struct Input: Content{ + let id: Int? + let summary: String + let sortorder: Int + let categoryname: String + let categorydesription: String + let isactive: Bool + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + let inspection: mdlInspection + let inspectioncategoryitems: [mdlInspectionCategoryItem]? + } + + struct Output: Content{ + let id: Int? + let summary: String + let sortorder: Int + let categoryname: String + let categorydesription: String + let isactive: Bool + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + let inspection: mdlInspection + let inspectioncategoryitems: [mdlInspectionCategoryItem]? + } + struct create: Migration{ + func prepare(on database: Database) -> EventLoopFuture { + return database.schema("InspectionCategory") + .field("id", .int, .identifier(auto: true)) + .field("summary", .string) + .field("sortOrder", .int) + .field("isActive", .bool) + .field("categoryName", .string) + .field("categoryDescription", .string) + .field("inspectionId", .int, .required, .references("Inspection", "id")) + .field("createUserId", .int) + .field("createDate", .datetime) + .field("updateUserId", .int) + .field("updateDate", .datetime) + .create() + } + func revert(on database: Database) -> EventLoopFuture { + database.schema("InspectionCategory").delete() + } + } + /* Uncomment if you need to seed the table. + struct seed: Migration { + func prepare(on database: Database) -> EventLoopFuture { + // 1 + let array: [<#Model#>] = [ + <#init#> + ] + // 2 + return array.map { obj in + obj.save(on: database) + } + .flatten(on: database.eventLoop) + } + + func revert(on database: Database) -> EventLoopFuture { + // 3 + <#Model#>.query(on: database).delete() + } + } + */ +} diff --git a/Sources/App/Models/i/InspectionCategoryItem.swift b/Sources/App/Models/i/InspectionCategoryItem.swift new file mode 100644 index 0000000..0448983 --- /dev/null +++ b/Sources/App/Models/i/InspectionCategoryItem.swift @@ -0,0 +1,157 @@ +// +// File.swift +// +// +// Created by Michiel Carman on 10/28/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class mdlInspectionCategoryItem: Model, Content{ + + static let schema = "InspectionCategoryItem" + + @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 + @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? + @Parent(key: "itemId") var item: mdlItem + @Parent(key: "inspectionCategoryId") var inspectioncategory: mdlInspectionCategory + @Parent(key: "userDefinedCodeId") var userdefinedcode: mdlUserDefinedCode //SMSC Code + @Parent(key: "inputTypeId") var inputtype: mdlInputType + @Parent(key: "inspectionCategoryItemId") var currentitem: mdlInspectionCategoryItem + @Parent(key: "parentId") var parent: mdlInspectionCategoryItem + @Children(for: \.$parent) var inspectioncategoryitems: [mdlInspectionCategoryItem] + @Children(for: \.$inspectioncategoryitem) var inspectioncategoryitemresponsetypes: [mdlInspectionCategoryItemResponseType] + @Children(for: \.$inspectioncategoryitem) var inspectioncategoryitemspecs: [mdlInspectionCategoryItemSpec] + @Children(for: \.$inspectioncategoryitem) var notes: [mdlNote] + @Children(for: \.$inspectioncategoryitem) var files: [mdlFile] + + init(){} + + init(id: Int? = nil, name: String, description: String, sortorder: Int = 0, createuserid: Int? = -1, createdate: Date? = nil, updateuserid: Int? = -1, updatedate: Date? = nil, item: mdlItem, inspectioncategory: mdlInspectionCategory, userdefinedcode: mdlUserDefinedCode, inputtype: mdlInputType, currentitem: mdlInspectionCategoryItem, parent: mdlInspectionCategoryItem, inspectioncategoryitems: [mdlInspectionCategoryItem]?, inspectioncategoryitemresponsetypes: [mdlInspectionCategoryItemResponseType]?, inspectioncategoryitemspecs: [mdlInspectionCategoryItemSpec]?, notes: [mdlNote]?, files: [mdlFile]?){ + self.id = id + self.name = name + self.description = description + self.sortorder = sortorder + self.createuserid = createuserid + self.createdate = createdate + self.updateuserid = updateuserid + self.updatedate = updatedate + self.$item.id = item.id! + self.$inspectioncategory.id = inspectioncategory.id! + self.$userdefinedcode.id = userdefinedcode.id! + self.$inputtype.id = inputtype.id! + self.currentitem.id = currentitem.id! + self.parent.id = parent.id! + self.$inspectioncategoryitems.value = inspectioncategoryitems + self.$inspectioncategoryitemresponsetypes.value = inspectioncategoryitemresponsetypes + self.$inspectioncategoryitemspecs.value = inspectioncategoryitemspecs + self.$notes.value = notes + self.$files.value = files + } +} +extension mdlInspectionCategoryItem { + struct Input: Content{ + let id: Int? + let name: String + let description: String + let sortorder: Int + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + let item: mdlItem + let inspectioncategory: mdlInspectionCategory + let userdefinedcode: mdlUserDefinedCode + let inputtype: mdlInputType + let currentitem: mdlInspectionCategoryItem + let parent: mdlInspectionCategoryItem + let inspectioncategoryitems: [mdlInspectionCategoryItem]? + let inspectioncategoryitemresponsetypes: [mdlInspectionCategoryItemResponseType]? + let inspectioncategoryitemspecs: [mdlInspectionCategoryItemSpec]? + let notes: [mdlNote]? + let files: [mdlFile]? + } + + struct Output: Content{ + let id: Int? + let name: String + let description: String + let sortorder: Int + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + let item: mdlItem + let inspectioncategory: mdlInspectionCategory + let userdefinedcode: mdlUserDefinedCode + let inputtype: mdlInputType + let currentitem: mdlInspectionCategoryItem + let parent: mdlInspectionCategoryItem + let inspectioncategoryitems: [mdlInspectionCategoryItem]? + let inspectioncategoryitemresponsetypes: [mdlInspectionCategoryItemResponseType]? + let inspectioncategoryitemspecs: [mdlInspectionCategoryItemSpec]? + let notes: [mdlNote]? + let files: [mdlFile]? + } + struct create: Migration{ + func prepare(on database: Database) -> EventLoopFuture { + return database.schema("InspectionCategoryItem") + .field("id", .int, .identifier(auto: true)) + .field("itemId", .int, .required, .references("Item", "id")) + .field("inspectionCategoryId", .int, .required, .references("InspectionCategory", "id")) + .field("userDefinedCodeId", .int, .references("UserDefinedCode", "id")) + .field("inputTypeId", .int, .required, .references("InputType", "id")) + .field("parentId", .int, .references("InspectionCategoryItem", "id")) + .field("name", .string) + .field("description", .string) + .field("sortOrder", .int) + .field("inspectionCategoryItemId", .int, .references("InspectionCategoryItem", "id")) + .field("createUserId", .int) + .field("createDate", .datetime) + .field("updateUserId", .int) + .field("updateDate", .datetime) + .create() + } + func revert(on database: Database) -> EventLoopFuture { + database.schema("InspectionCategoryItem").delete() + } + } + + /* + + @Parent(key: "userDefinedCodeId") var userdefinedcode: mdlUserDefinedCode //SMSC Code + @Parent(key: "inputTypeId") var inputtype: mdlInputType + @Parent(key: "inspectionCategoryItemId") var currentitem: mdlInspectionCategoryItem + @Parent(key: "parentId") + */ + /* Uncomment if you need to seed the table. + struct seed: Migration { + func prepare(on database: Database) -> EventLoopFuture { + // 1 + let array: [<#Model#>] = [ + <#init#> + ] + // 2 + return array.map { obj in + obj.save(on: database) + } + .flatten(on: database.eventLoop) + } + + func revert(on database: Database) -> EventLoopFuture { + // 3 + <#Model#>.query(on: database).delete() + } + } + */ +} diff --git a/Sources/App/Models/i/InspectionCategoryItemResponseType.swift b/Sources/App/Models/i/InspectionCategoryItemResponseType.swift new file mode 100644 index 0000000..f432846 --- /dev/null +++ b/Sources/App/Models/i/InspectionCategoryItemResponseType.swift @@ -0,0 +1,108 @@ +// +// InspectionCategoryItemResponseType.swift +// +// +// Created by Michiel Carman on 10/28/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class mdlInspectionCategoryItemResponseType: Model, Content{ + + static let schema = "InspectionCategoryItemResponseType" + + @ID(custom: "id", generatedBy: .database) var id: Int? + @Field(key: "name") var name: String + @Field(key: "sortOrder") var sortorder: Int + @Field(key: "isSelected") var isselected: 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? + @Parent(key: "inspectionCategoryItemId") var inspectioncategoryitem: mdlInspectionCategoryItem + @Parent(key: "responseTypeId") var responsetype: mdlResponseType + + init(){} + + init(id: Int? = nil, name: String, sortorder: Int = 0, isselected: Bool = false, createuserid: Int? = -1, createdate: Date? = nil, updateuserid: Int? = -1, updatedate: Date? = nil, inspectioncategoryitem: mdlInspectionCategoryItem, responsetype: mdlResponseType){ + self.id = id + self.name = name + self.sortorder = sortorder + self.isselected = isselected + self.createuserid = createuserid + self.createdate = createdate + self.updateuserid = updateuserid + self.updatedate = updatedate + self.$inspectioncategoryitem.id = inspectioncategoryitem.id! + self.$responsetype.id = responsetype.id! + } +} +extension mdlInspectionCategoryItemResponseType { + struct Input: Content{ + let id: Int? + let name: String + let sortorder: Int + let isselected: Bool + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + let inspectioncategoryitem: mdlInspectionCategoryItem + let responsetype: mdlResponseType + } + + struct Output: Content{ + let id: Int? + let name: String + let sortorder: Int + let isselected: Bool + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + let inspectioncategoryitem: mdlInspectionCategoryItem + let responsetype: mdlResponseType + } + struct create: Migration{ + func prepare(on database: Database) -> EventLoopFuture { + return database.schema("InspectionCategoryItemResponseType") + .field("id", .int, .identifier(auto: true)) + .field("name", .string) + .field("sortOrder", .int) + .field("isSelected", .bool) + .field("inspectionCategoryItemId", .int, .required, .references("InspectionCategoryItem", "id")) + .field("responseTypeId", .int, .required, .references("ResponseType", "id")) + .field("createUserId", .int) + .field("createDate", .datetime) + .field("updateUserId", .int) + .field("updateDate", .datetime) + .create() + } + func revert(on database: Database) -> EventLoopFuture { + database.schema("InspectionCategoryItemResponseType").delete() + } + } + /* Uncomment if you need to seed the table. + struct seed: Migration { + func prepare(on database: Database) -> EventLoopFuture { + // 1 + let array: [<#Model#>] = [ + <#init#> + ] + // 2 + return array.map { obj in + obj.save(on: database) + } + .flatten(on: database.eventLoop) + } + + func revert(on database: Database) -> EventLoopFuture { + // 3 + <#Model#>.query(on: database).delete() + } + } + */ +} diff --git a/Sources/App/Models/i/InspectionCategoryItemSpec.swift b/Sources/App/Models/i/InspectionCategoryItemSpec.swift new file mode 100644 index 0000000..7506edd --- /dev/null +++ b/Sources/App/Models/i/InspectionCategoryItemSpec.swift @@ -0,0 +1,108 @@ +// +// InspectionCategoryItemSpec.swift +// +// +// Created by Michiel Carman on 10/28/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class mdlInspectionCategoryItemSpec: Model, Content{ + + static let schema = "InspectionCategoryItemSpec" + + @ID(custom: "id", generatedBy: .database) var id: Int? + @Field(key: "name") var name: String + @Field(key: "numberOfTests") var numberoftests: Int + @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? + @Parent(key: "inspectionCategoryItemId") var inspectioncategoryitem: mdlInspectionCategoryItem + @Parent(key: "specId") var spec: mdlSpec + @Children(for: \.$inspectioncategoryitemspec) var inspectioncategoryitemspecitems: [mdlInspectionCategoryItemSpecItem] + + + init(){} + + init(id: Int? = nil, name: String, numberoftests: Int = 1, createuserid: Int? = -1, createdate: Date? = nil, updateuserid: Int? = -1, updatedate: Date? = nil, inspectioncategoryitem: mdlInspectionCategoryItem, spec: mdlSpec, inspectioncategoryitemspecitems: [mdlInspectionCategoryItemSpecItem]?){ + self.id = id + self.name = name + self.numberoftests = numberoftests + self.createuserid = createuserid + self.createdate = createdate + self.updateuserid = updateuserid + self.updatedate = updatedate + self.$inspectioncategoryitem.id = inspectioncategoryitem.id! + self.$inspectioncategoryitemspecitems.value = inspectioncategoryitemspecitems + self.$spec.id = spec.id! + } +} +extension mdlInspectionCategoryItemSpec { + struct Input: Content{ + let id: Int? + let name: String + let numberoftests: Int + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + let inspectioncategoryitem: mdlInspectionCategoryItem + let spec: mdlSpec + let inspectioncategoryitemspecitems: [mdlInspectionCategoryItemSpecItem]? + } + + struct Output: Content{ + let id: Int? + let name: String + let numberoftests: Int + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + let inspectioncategoryitem: mdlInspectionCategoryItem + let spec: mdlSpec + let inspectioncategoryitemspecitems: [mdlInspectionCategoryItemSpecItem]? + } + struct create: Migration{ + func prepare(on database: Database) -> EventLoopFuture { + return database.schema("InspectionCategoryItemSpec") + .field("id", .int, .identifier(auto: true)) + .field("name", .string) + .field("numberOfTests", .int) + .field("inspectionCategoryItemId", .int, .required, .references("InspectionCategoryItem", "id")) + .field("specId", .int, .required, .references("Spec", "id")) + .field("createUserId", .int) + .field("createDate", .datetime) + .field("updateUserId", .int) + .field("updateDate", .datetime) + .create() + } + func revert(on database: Database) -> EventLoopFuture { + database.schema("InspectionCategoryItemSpec").delete() + } + } + /* Uncomment if you need to seed the table. + struct seed: Migration { + func prepare(on database: Database) -> EventLoopFuture { + // 1 + let array: [<#Model#>] = [ + <#init#> + ] + // 2 + return array.map { obj in + obj.save(on: database) + } + .flatten(on: database.eventLoop) + } + + func revert(on database: Database) -> EventLoopFuture { + // 3 + <#Model#>.query(on: database).delete() + } + } + */ +} diff --git a/Sources/App/Models/i/InspectionCategoryItemSpecItem.swift b/Sources/App/Models/i/InspectionCategoryItemSpecItem.swift new file mode 100644 index 0000000..0d5b909 --- /dev/null +++ b/Sources/App/Models/i/InspectionCategoryItemSpecItem.swift @@ -0,0 +1,130 @@ +// +// File.swift +// +// +// Created by Michiel Carman on 10/28/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class mdlInspectionCategoryItemSpecItem: Model, Content{ + + static let schema = "InspectionCategoryItemSpecItem" + + @ID(custom: "id", generatedBy: .database) var id: Int? + @Field(key: "name") var name: String + @Field(key: "average") var average: Float + @Field(key: "qualifier") var qualifier: String + @Field(key: "result") var result: String + @Field(key: "sortOrder") var sortorder: Int + @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? + @Parent(key: "inspectionCategoryItemSpecId") var inspectioncategoryitemspec: mdlInspectionCategoryItemSpec + @Parent(key: "comparisonTypeId") var comparisontype: mdlComparisonType + @Parent(key: "unitId") var unit: mdlUnit + @Children(for: \.$inspectioncategoryitemspecitem) var inspectioncategoryitemspecitemtests: [mdlInspectionCategoryItemSpecItemTest] + @Children(for: \.$inspectioncategoryitemspecitem) var inspectioncategoryitemspecitemvalues: [mdlInspectionCategoryItemSpecItemValue] + init(){} + + init(id: Int? = nil, name: String, average: Float, qualifier: String, result: String, sortorder: Int, createuserid: Int? = -1, createdate: Date? = nil, updateuserid: Int? = -1, updatedate: Date? = nil, inspectioncategoryitemspec: mdlInspectionCategoryItemSpec, comparisontype: mdlComparisonType, unit: mdlUnit, inspectioncategoryitemspecitemtests: [mdlInspectionCategoryItemSpecItemTest]?, inspectioncategoryitemspecitemvalues: [mdlInspectionCategoryItemSpecItemValue]?){ + self.id = id + self.name = name + self.average = average + self.qualifier = qualifier + self.result = result + self.sortorder = sortorder + self.createuserid = createuserid + self.createdate = createdate + self.updateuserid = updateuserid + self.updatedate = updatedate + self.$inspectioncategoryitemspec.id = inspectioncategoryitemspec.id! + self.$comparisontype.id = comparisontype.id! + self.$unit.id = unit.id! + self.$inspectioncategoryitemspecitemtests.value = inspectioncategoryitemspecitemtests + self.$inspectioncategoryitemspecitemvalues.value = inspectioncategoryitemspecitemvalues + } +} +extension mdlInspectionCategoryItemSpecItem { + struct Input: Content{ + let id: Int? + let name: String + let average: Float + let qualifier: String + let result: String + let sortorder: Int + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + let inspectioncategoryitemspec: mdlInspectionCategoryItemSpec + let comparisontype: mdlComparisonType + let unit: mdlUnit + let inspectioncategoryitemspecitemtests: [mdlInspectionCategoryItemSpecItemTest]? + let inspectioncategoryitemspecitemvalues: [mdlInspectionCategoryItemSpecItemValue]? + } + + struct Output: Content{ + let id: Int? + let name: String + let average: Float + let qualifier: String + let result: String + let sortorder: Int + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + let inspectioncategoryitemspec: mdlInspectionCategoryItemSpec + let comparisontype: mdlComparisonType + let unit: mdlUnit + let inspectioncategoryitemspecitemtests: [mdlInspectionCategoryItemSpecItemTest]? + let inspectioncategoryitemspecitemvalues: [mdlInspectionCategoryItemSpecItemValue]? + } + struct create: Migration{ + func prepare(on database: Database) -> EventLoopFuture { + return database.schema("InspectionCategoryItemSpecItem") + .field("id", .int, .identifier(auto: true)) + .field("name", .string) + .field("average", .float) + .field("qualifier", .string) + .field("result", .string) + .field("sortOrder", .int) + .field("inspectionCategoryItemSpecId", .int, .required, .references("InspectionCategoryItemSpec", "id")) + .field("comparisonTypeId", .int, .required, .references("ComparisonType", "id")) + .field("unitId", .int, .required, .references("Unit", "id")) + .field("createUserId", .int) + .field("createDate", .datetime) + .field("updateUserId", .int) + .field("updateDate", .datetime) + .create() + } + func revert(on database: Database) -> EventLoopFuture { + database.schema("InspectionCategoryItemSpecItem").delete() + } + } + /* Uncomment if you need to seed the table. + struct seed: Migration { + func prepare(on database: Database) -> EventLoopFuture { + // 1 + let array: [<#Model#>] = [ + <#init#> + ] + // 2 + return array.map { obj in + obj.save(on: database) + } + .flatten(on: database.eventLoop) + } + + func revert(on database: Database) -> EventLoopFuture { + // 3 + <#Model#>.query(on: database).delete() + } + } + */ +} diff --git a/Sources/App/Models/i/InspectionCategoryItemSpecItemTest.swift b/Sources/App/Models/i/InspectionCategoryItemSpecItemTest.swift new file mode 100644 index 0000000..1911981 --- /dev/null +++ b/Sources/App/Models/i/InspectionCategoryItemSpecItemTest.swift @@ -0,0 +1,103 @@ +// +// InspectionCategoryItemSpecItemTest.swift +// +// +// Created by Michiel Carman on 10/28/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class mdlInspectionCategoryItemSpecItemTest: Model, Content{ + + static let schema = "InspectionCategoryItemSpecItemTest" + + @ID(custom: "id", generatedBy: .database) var id: Int? + @Field(key: "number") var number: Int + @Field(key: "value") var value: 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? + @Parent(key: "inspectionCategoryItemSpecItemId") var inspectioncategoryitemspecitem: mdlInspectionCategoryItemSpecItem + + init(){} + + init(id: Int? = nil, number: Int, value: String, isactive: Bool, createuserid: Int? = -1, createdate: Date? = nil, updateuserid: Int? = -1, updatedate: Date? = nil, inspectioncategoryitemspecitem: mdlInspectionCategoryItemSpecItem){ + self.id = id + self.number = number + self.value = value + self.isactive = isactive + self.createuserid = createuserid + self.createdate = createdate + self.updateuserid = updateuserid + self.updatedate = updatedate + self.$inspectioncategoryitemspecitem.id = inspectioncategoryitemspecitem.id! + } +} +extension mdlInspectionCategoryItemSpecItemTest { + struct Input: Content{ + let id: Int? + let number: Int + let value: String + let isactive: Bool + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + let inspectioncategoryitemspecitem: mdlInspectionCategoryItemSpecItem + } + + struct Output: Content{ + let id: Int? + let number: Int + let value: String + let isactive: Bool + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + let inspectioncategoryitemspecitem: mdlInspectionCategoryItemSpecItem + } + struct create: Migration{ + func prepare(on database: Database) -> EventLoopFuture { + return database.schema("InspectionCategoryItemSpecItemTest") + .field("id", .int, .identifier(auto: true)) + .field("number", .string) + .field("value", .string) + .field("isActive", .bool) + .field("inspectionCategoryItemSpecItemId", .int, .required, .references("InspectionCategoryItemSpecItem", "id")) + .field("createUserId", .int) + .field("createDate", .datetime) + .field("updateUserId", .int) + .field("updateDate", .datetime) + .create() + } + func revert(on database: Database) -> EventLoopFuture { + database.schema("InspectionCategoryItemSpecItemTest").delete() + } + } + /* Uncomment if you need to seed the table. + struct seed: Migration { + func prepare(on database: Database) -> EventLoopFuture { + // 1 + let array: [<#Model#>] = [ + <#init#> + ] + // 2 + return array.map { obj in + obj.save(on: database) + } + .flatten(on: database.eventLoop) + } + + func revert(on database: Database) -> EventLoopFuture { + // 3 + <#Model#>.query(on: database).delete() + } + } + */ +} diff --git a/Sources/App/Models/i/InspectionCategoryItemSpecItemValue.swift b/Sources/App/Models/i/InspectionCategoryItemSpecItemValue.swift new file mode 100644 index 0000000..1a8474f --- /dev/null +++ b/Sources/App/Models/i/InspectionCategoryItemSpecItemValue.swift @@ -0,0 +1,126 @@ +// +// File.swift +// +// +// Created by Michiel Carman on 10/28/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class mdlInspectionCategoryItemSpecItemValue: Model, Content{ + struct input{ + let id: Int? + let value: String + let sortorder: Int + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + let valuetype: mdlValueType + let inspectioncategoryitemspecitem: mdlInspectionCategoryItemSpecItem + } + + struct output{ + let id: Int? + let value: String + let sortorder: Int + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + let valuetype: mdlValueType + let inspectioncategoryitemspecitem: mdlInspectionCategoryItemSpecItem + } + + static let schema = "InspectionCategoryItemSpecItemValue" + + @ID(custom: "id", generatedBy: .database) var id: Int? + @Field(key: "value") var value: String + @Field(key: "sortOrder") var sortorder: Int + @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? + @Parent(key: "valueTypeId") var valuetype: mdlValueType + @Parent(key: "inspectionCategoryItemSpecItemId") var inspectioncategoryitemspecitem: mdlInspectionCategoryItemSpecItem + + init(){} + + init(id: Int? = nil, value: String, sortorder: Int, createuserid: Int? = -1, createdate: Date? = nil, updateuserid: Int? = -1, updatedate: Date? = nil, valuetype: mdlValueType, inspectioncategoryitemspecitem: mdlInspectionCategoryItemSpecItem){ + self.id = id + self.value = value + self.sortorder = sortorder + self.createuserid = createuserid + self.createdate = createdate + self.updateuserid = updateuserid + self.updatedate = updatedate + self.$valuetype.id = valuetype.id! + self.$inspectioncategoryitemspecitem.id = inspectioncategoryitemspecitem.id! + } +} +extension mdlInspectionCategoryItemSpecItemValue { + struct Input: Content{ + let id: Int? + let value: String + let sortorder: Int + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + let valuetype: mdlValueType + let inspectioncategoryitemspecitem: mdlInspectionCategoryItemSpecItem + } + + struct Output: Content{ + let id: Int? + let value: String + let sortorder: Int + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + let valuetype: mdlValueType + let inspectioncategoryitemspecitem: mdlInspectionCategoryItemSpecItem + } + struct create: Migration{ + func prepare(on database: Database) -> EventLoopFuture { + return database.schema("InspectionCategoryItemSpecItemValue") + .field("id", .int, .identifier(auto: true)) + .field("value", .string) + .field("sortOrder", .int) + .field("inspectionCategoryItemSpecItemId", .int, .required, .references("InspectionCategoryItemSpecItem", "id")) + .field("valueTypeId", .int, .required, .references("ValueType", "id")) + .field("createUserId", .int) + .field("createDate", .datetime) + .field("updateUserId", .int) + .field("updateDate", .datetime) + .create() + } + func revert(on database: Database) -> EventLoopFuture { + database.schema("InspectionCategoryItemSpecItemValue").delete() + } + } + /* Uncomment if you need to seed the table. + struct seed: Migration { + func prepare(on database: Database) -> EventLoopFuture { + // 1 + let array: [<#Model#>] = [ + <#init#> + ] + // 2 + return array.map { obj in + obj.save(on: database) + } + .flatten(on: database.eventLoop) + } + + func revert(on database: Database) -> EventLoopFuture { + // 3 + <#Model#>.query(on: database).delete() + } + } + */ +} diff --git a/Sources/App/Models/i/InspectionLevel.swift b/Sources/App/Models/i/InspectionLevel.swift new file mode 100644 index 0000000..aa46744 --- /dev/null +++ b/Sources/App/Models/i/InspectionLevel.swift @@ -0,0 +1,113 @@ +// +// File.swift +// +// +// Created by Michiel Carman on 10/27/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class mdlInspectionLevel: Model, Content{ + + static let schema = "InspectionLevel" + + @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 + @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? + + @Parent(key: "inspectionTypeId") var inspectiontype: mdlInspectionType + + @Children(for: \.$inspectionlevel) var templates: [mdlTemplate] + @Children(for: \.$inspectionlevel) var inspections: [mdlInspection] + + init(){} + + init(id: Int? = nil, name: String, description: String, isactive: Bool, createuserid: Int? = -1, createdate: Date? = nil, updateuserid: Int? = -1, updatedate: Date? = nil, inspectiontype: mdlInspectionType, templates: [mdlTemplate]?, inspections: [mdlInspection]?){ + self.id = id + self.name = name + self.description = description + self.isactive = isactive + self.createuserid = createuserid + self.createdate = createdate + self.updateuserid = updateuserid + self.updatedate = updatedate + self.$inspectiontype.id = inspectiontype.id! + self.$templates.value = templates + self.$inspections.value = inspections + } +} +extension mdlInspectionLevel { + struct Input: Content{ + let id: Int? + let name: String + let description: String + let isactive: Bool + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + let inspectiontype: mdlInspectionType + let templates: [mdlTemplate]? + let inspections: [mdlInspection]? + } + + struct Output: Content{ + let id: Int? + let name: String + let description: String + let isactive: Bool + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + let inspectiontype: mdlInspectionType + let templates: [mdlTemplate]? + let inspections: [mdlInspection]? + } + struct create: Migration{ + func prepare(on database: Database) -> EventLoopFuture { + return database.schema("InspectionLevel") + .field("id", .int, .identifier(auto: true)) + .field("name", .string) + .field("description", .string) + .field("isActive", .bool) + .field("inspectionTypeId", .int, .required, .references("InspectionType", "id")) + .field("createUserId", .int) + .field("createDate", .datetime) + .field("updateUserId", .int) + .field("updateDate", .datetime) + .create() + } + func revert(on database: Database) -> EventLoopFuture { + database.schema("InspectionLevel").delete() + } + } + /* Uncomment if you need to seed the table. + struct seed: Migration { + func prepare(on database: Database) -> EventLoopFuture { + // 1 + let array: [<#Model#>] = [ + <#init#> + ] + // 2 + return array.map { obj in + obj.save(on: database) + } + .flatten(on: database.eventLoop) + } + + func revert(on database: Database) -> EventLoopFuture { + // 3 + <#Model#>.query(on: database).delete() + } + } + */ +} diff --git a/Sources/App/Models/i/InspectionType.swift b/Sources/App/Models/i/InspectionType.swift new file mode 100644 index 0000000..d94ef1e --- /dev/null +++ b/Sources/App/Models/i/InspectionType.swift @@ -0,0 +1,110 @@ +// +// InspectionType.swift +// +// +// Created by Michiel Carman on 10/27/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class mdlInspectionType: Model, Content{ + + + static let schema = "InspectionType" + + @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 + @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: \.$inspectiontype) var templates: [mdlTemplate] + @Children(for: \.$inspectiontype) var inspections: [mdlInspection] + + init(){} + + init(id: Int? = nil, name: String, description: String, isactive: Bool, createuserid: Int? = -1, createdate: Date? = nil, updateuserid: Int? = -1, updatedate: Date? = nil, templates: [mdlTemplate]?, inspections: [mdlInspection]?){ + self.id = id + self.name = name + self.description = description + self.isactive = isactive + self.createuserid = createuserid + self.createdate = createdate + self.updateuserid = updateuserid + self.updatedate = updatedate + + self.$templates.value = templates + self.$inspections.value = inspections + } +} + +extension mdlInspectionType { + struct Input: Content{ + let id: Int? + let name: String + let description: String + let isactive: Bool + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + let templates: [mdlTemplate]? + let inspections: [mdlInspection]? + } + + struct Output: Content{ + let id: Int? + let name: String + let description: String + let isactive: Bool + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + let templates: [mdlTemplate]? + let inspections: [mdlInspection]? + } + struct create: Migration{ + func prepare(on database: Database) -> EventLoopFuture { + return database.schema("InspectionType") + .field("id", .int, .identifier(auto: true)) + .field("name", .string) + .field("description", .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("InspectionType").delete() + } + } + /* Uncomment if you need to seed the table. + struct seed: Migration { + func prepare(on database: Database) -> EventLoopFuture { + // 1 + let array: [<#Model#>] = [ + <#init#> + ] + // 2 + return array.map { obj in + obj.save(on: database) + } + .flatten(on: database.eventLoop) + } + + func revert(on database: Database) -> EventLoopFuture { + // 3 + <#Model#>.query(on: database).delete() + } + } + */ +} diff --git a/Sources/App/Models/i/InspectionUser.swift b/Sources/App/Models/i/InspectionUser.swift new file mode 100644 index 0000000..40be848 --- /dev/null +++ b/Sources/App/Models/i/InspectionUser.swift @@ -0,0 +1,95 @@ +// +// File.swift +// +// +// Created by Michiel Carman on 10/29/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class mdlInspectionUser: Model, Content{ + + static let schema = "InspectionUser" + + @ID(custom: "id", generatedBy: .database) var id: Int? + @Parent(key: "userId") var user: mdlUser + @Parent(key: "inspectionId") var inspection: mdlInspection + @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? + + init(){} + + init(id: Int? = nil, user: mdlUser, inspection: mdlInspection, createuserid: Int? = -1, createdate: Date? = nil, updateuserid: Int? = -1, updatedate: Date? = nil){ + self.id = id + self.$user.id = user.id! + self.$inspection.id = inspection.id! + self.createuserid = createuserid + self.createdate = createdate + self.updateuserid = updateuserid + self.updatedate = updatedate + } +} +extension mdlInspectionUser { + struct Input: Content{ + let id: Int? + let user: mdlUser + let inspection: mdlInspection + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + } + + struct Output: Content{ + let id: Int? + let user: mdlUser + let inspection: mdlInspection + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + } + struct create: Migration{ + func prepare(on database: Database) -> EventLoopFuture { + return database.schema("InspectionUser") + .field("id", .int, .identifier(auto: true)) + .field("userId", .int, .required, .references("User", "id")) + .field("inspectionId", .int, .required, .references("Inspection", "id")) + .field("createUserId", .int) + .field("createDate", .datetime) + .field("updateUserId", .int) + .field("updateDate", .datetime) + .create() + } + func revert(on database: Database) -> EventLoopFuture { + database.schema("Inspection").delete() + } + } + /* Uncomment if you need to seed the table. + struct seed: Migration { + func prepare(on database: Database) -> EventLoopFuture { + // 1 + let array: [<#Model#>] = [ + <#init#> + ] + // 2 + return array.map { obj in + obj.save(on: database) + } + .flatten(on: database.eventLoop) + } + + func revert(on database: Database) -> EventLoopFuture { + // 3 + <#Model#>.query(on: database).delete() + } + } + */ +} + + diff --git a/Sources/App/Models/i/Item.swift b/Sources/App/Models/i/Item.swift new file mode 100644 index 0000000..14b1591 --- /dev/null +++ b/Sources/App/Models/i/Item.swift @@ -0,0 +1,132 @@ +// +// Item.swift +// +// +// Created by Michiel Carman on 10/26/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +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 + @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? + + @Parent(key: "categoryId") var category: mdlCategory + @Parent(key: "userDefinedCodeId") var code: mdlUserDefinedCode + @Parent(key: "inputTypeId") var inputtype: mdlInputType + + @Children(for: \.$item) var specs: [mdlSpec] + @Children(for: \.$item) var templatecategoryitems: [mdlTemplateCategoryItem] + @Children(for: \.$item) var inspectioncategoryitems: [mdlInspectionCategoryItem] + + @Siblings(through: mdlXItemResponseType.self, from: \.$item, to: \.$responsetype) public var responsetypes: [mdlResponseType] + + + init(){} + + init(id: Int? = nil, name: String, description: String, isactive: Bool, createuserid: Int? = -1, createdate: Date? = nil, updateuserid: Int? = -1, updatedate: Date? = nil, responsetypes: [mdlResponseType]?, specs: [mdlSpec]?, templatecategoryitems: [mdlTemplateCategoryItem]?, inspectioncategoryitems: [mdlInspectionCategoryItem]?){ + self.id = id + self.name = name + self.description = description + self.isactive = isactive + self.createuserid = createuserid + self.createdate = createdate + self.updateuserid = updateuserid + self.updatedate = updatedate + self.$responsetypes.value = responsetypes + self.$specs.value = specs + self.$templatecategoryitems.value = templatecategoryitems + self.$inspectioncategoryitems.value = inspectioncategoryitems + } +} +extension mdlItem{ + struct Input: Content{ + let id: Int? + let name: String + let description: String + let isactive: Bool + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + let category: mdlCategory + let code: mdlUserDefinedCode + let inputtype: mdlInputType + let responsetypes: [mdlResponseType]? + let specs: [mdlSpec]? + let templatecategoryitems: [mdlTemplateCategoryItem]? + let inspectioncategoryitems: [mdlInspectionCategoryItem]? + } + + struct Output: Content{ + let id: Int? + let name: String + let description: String + let isactive: Bool + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + let category: mdlCategory + let code: mdlUserDefinedCode + let inputtype: mdlInputType + let responsetypes: [mdlResponseType]? + let specs: [mdlSpec]? + let templatecategoryitems: [mdlTemplateCategoryItem]? + let inspectioncategoryitems: [mdlInspectionCategoryItem]? + } +} +extension mdlItem { + struct create: Migration{ + func prepare(on database: Database) -> EventLoopFuture { + return database.schema("Item") + .field("id", .int, .identifier(auto: true)) + .field("name", .string) + .field("description", .string) + .field("isActive", .bool) + .field("categoryId", .int, .required, .references("Category", "id")) + .field("userDefinedCodeId", .int, .references("UserDefinedCode", "id")) + .field("inputTypeId", .int, .required, .references("InputType", "id")) + .field("createUserId", .int) + .field("createDate", .datetime) + .field("updateUserId", .int) + .field("updateDate", .datetime) + .create() + } + func revert(on database: Database) -> EventLoopFuture { + database.schema("Item").delete() + } + } + /* Uncomment if you need to seed the table. + struct seed: Migration { + func prepare(on database: Database) -> EventLoopFuture { + // 1 + let array: [<#Model#>] = [ + <#init#> + ] + // 2 + return array.map { obj in + obj.save(on: database) + } + .flatten(on: database.eventLoop) + } + + func revert(on database: Database) -> EventLoopFuture { + // 3 + <#Model#>.query(on: database).delete() + } + } + */ +} diff --git a/Sources/App/Models/j/JobSite.swift b/Sources/App/Models/j/JobSite.swift new file mode 100644 index 0000000..d40ff2b --- /dev/null +++ b/Sources/App/Models/j/JobSite.swift @@ -0,0 +1,112 @@ +// +// File.swift +// +// +// Created by Michiel Carman on 10/25/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class mdlJobSite: Model, Content{ + struct Input: Content{ + let id: Int? + let name: String + let description: String + let sortorder: Int + let isactive: Bool + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + } + + struct Output: Content{ + let id: Int? + let name: String + let description: String + let sortorder: Int + let isactive: Bool + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + } + + 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 + @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? + + init(){} + + init(name: String, description: String, sortorder: Int){ + self.name = name + self.description = description + self.sortorder = sortorder + self.isactive = true + self.createuserid = -1 + self.updateuserid = -1 + } + + init(id: Int? = nil, name: String, description: String, sortorder: Int, isactive: Bool = true, createuserid: Int? = -1, createdate: Date? = nil, updateuserid: Int? = -1, updatedate: Date? = nil){ + self.id = id + self.name = name + self.description = description + self.sortorder = sortorder + self.isactive = isactive + self.createuserid = createuserid + self.createdate = createdate + self.updateuserid = updateuserid + self.updatedate = updatedate + } +} +extension mdlJobSite { + struct create: Migration{ + func prepare(on database: Database) -> EventLoopFuture { + return database.schema("JobSite") + .field("id", .int, .identifier(auto: true)) + .field("name", .string) + .field("description", .string) + .field("sortOrder", .int) + .field("isActive", .bool) + .field("createUserId", .int) + .field("createDate", .datetime) + .field("updateUserId", .int) + .field("updateDate", .datetime) + .create() + } + func revert(on database: Database) -> EventLoopFuture { + database.schema("JobSite").delete() + } + } + struct seed: Migration { + func prepare(on database: Database) -> EventLoopFuture { + // 1 + let array: [mdlJobSite] = [ + .init(name: "HEAVY", description: "Heavy usage, difficult terrain/material", sortorder: 3), + .init(name: "MEDIUM", description: "Average usage, terrain/material", sortorder: 2), + .init(name: "LIGHT", description: "Light usage, easy terrain/material", sortorder: 1) + ] + // 2 + return array.map { obj in + obj.save(on: database) + } + .flatten(on: database.eventLoop) + } + + func revert(on database: Database) -> EventLoopFuture { + // 3 + mdlJobSite.query(on: database).delete() + } + } +} diff --git a/Sources/App/Models/l/LabSetting.swift b/Sources/App/Models/l/LabSetting.swift new file mode 100644 index 0000000..2f2d97f --- /dev/null +++ b/Sources/App/Models/l/LabSetting.swift @@ -0,0 +1,133 @@ +// +// LabSetting.swift +// +// +// Created by Michiel Carman on 10/24/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class mdlLabSetting: Model, Content{ + struct Input: Content{ + let id: Int? + let name: String + let description: String + let barcodedelimiter: String + let barcodeactive: Bool + let textactive: Bool + let logoactive: Bool + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + //let locations: [mdlLocation]? + let oilsamplelabels: [mdlOilSampleLabel]? + let users: [mdlUser]? + } + + struct Output: Content{ + let id: Int? + let name: String + let description: String + let barcodedelimiter: String + let barcodeactive: Bool + let textactive: Bool + let logoactive: Bool + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + let oilsamplelabels: [mdlOilSampleLabel]? + let users: [mdlUser]? + } + + 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: "barcodeDelimiter") var barcodedelimiter: String + @Field(key: "barcodeActive") var barcodeactive: Bool + @Field(key: "textActive") var textactive: Bool + @Field(key: "logoActive") var logoactive: 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? + //@Parent(key: "locationId") var location: mdlLocation + //@Children(for: \.$labsetting) var locations: [mdlLocation] + @Children(for: \.$labsetting) var oilsamplelabels: [mdlOilSampleLabel] + + @Siblings(through: mdlLocation.self, from: \.$labsetting, to: \.$user) public var users: [mdlUser] + + + + init(){} + + init(id: Int? = nil){ + self.id = id + } + + init(id: Int? = nil, name: String, description: String, barcodedelimiter: String, barcodeactive: Bool = false, textactive: Bool = false, logoactive: Bool = false, createuserid: Int? = -1, createdate: Date? = nil, updateuserid: Int? = -1, updatedate: Date? = nil, oilsamplelabels: [mdlOilSampleLabel]?, users: [mdlUser]?){ + self.id = id + self.name = name + self.description = description + self.barcodedelimiter = barcodedelimiter + self.barcodeactive = barcodeactive + self.textactive = textactive + self.logoactive = logoactive + self.createuserid = createuserid + self.createdate = createdate + self.updateuserid = updateuserid + self.updatedate = updatedate + self.$oilsamplelabels.value = oilsamplelabels + self.$users.value = users + } +} + +extension mdlLabSetting { + struct create: Migration{ + func prepare(on database: Database) -> EventLoopFuture { + return database.schema("LabSetting") + .field("id", .int, .identifier(auto: true)) + .field("name", .string) + .field("description", .string) + .field("barcodeDelimiter", .string) + .field("barcodeActive", .bool) + .field("textActive", .bool) + .field("logoActive", .bool) + .field("createUserId", .int) + .field("createDate", .datetime) + .field("updateUserId", .int) + .field("updateDate", .datetime) + .create() + } + func revert(on database: Database) -> EventLoopFuture { + database.schema("LabSetting").delete() + } + } + struct seed: Migration { + func prepare(on database: Database) -> EventLoopFuture { + // 1 + let array: [mdlLabSetting] = [ + .init(id: -1, name: "Default", description: "", barcodedelimiter: "", barcodeactive: false, textactive: false, logoactive: false, oilsamplelabels: [], users: []) + ] + // 2 + return array.map { obj in + obj.save(on: database) + } + .flatten(on: database.eventLoop) + } + + func revert(on database: Database) -> EventLoopFuture { + // 3 + mdlLabSetting.query(on: database).delete() + } + } +} + + + diff --git a/Sources/App/Models/l/Level.swift b/Sources/App/Models/l/Level.swift new file mode 100644 index 0000000..643d609 --- /dev/null +++ b/Sources/App/Models/l/Level.swift @@ -0,0 +1,104 @@ +// +// File.swift +// +// +// Created by Michiel Carman on 10/25/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class mdlLevel: Model, Content{ + struct Input: Content{ + let id: Int? + let name: String + let description: String + let sortorder: Int + let isactive: Bool + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + } + + struct Output: Content{ + let id: Int? + let name: String + let description: String + let sortorder: Int + let isactive: Bool + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + } + + static let schema = "Level" + + @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 + @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? + + init(){} + + init(id: Int? = nil, name: String, description: String, sortorder: Int, isactive: Bool = true, createuserid: Int? = -1, createdate: Date? = nil, updateuserid: Int? = -1, updatedate: Date? = nil){ + self.id = id + self.name = name + self.description = description + self.sortorder = sortorder + self.isactive = isactive + self.createuserid = createuserid + self.createdate = createdate + self.updateuserid = updateuserid + self.updatedate = updatedate + } +} + +extension mdlLevel { + struct create: Migration{ + func prepare(on database: Database) -> EventLoopFuture { + return database.schema("Level") + .field("id", .int, .identifier(auto: true)) + .field("name", .string) + .field("description", .string) + .field("sortOrder", .int) + .field("isActive", .bool) + .field("createUserId", .int) + .field("createDate", .datetime) + .field("updateUserId", .int) + .field("updateDate", .datetime) + .create() + } + func revert(on database: Database) -> EventLoopFuture { + database.schema("Level").delete() + } + } + /* + struct seed: Migration { + func prepare(on database: Database) -> EventLoopFuture { + // 1 + let array: [<#Model#>] = [ + <#init#> + ] + // 2 + return array.map { obj in + obj.save(on: database) + } + .flatten(on: database.eventLoop) + } + + func revert(on database: Database) -> EventLoopFuture { + // 3 + <#Model#>.query(on: database).delete() + } + } + */ +} diff --git a/Sources/App/Models/l/License.swift b/Sources/App/Models/l/License.swift new file mode 100644 index 0000000..3e67441 --- /dev/null +++ b/Sources/App/Models/l/License.swift @@ -0,0 +1,98 @@ +// +// License.swift +// +// +// Created by Michiel Carman on 10/25/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class mdlLicense: Model, Content{ + struct Input: Content{ + let id: Int? + let value: String + let sortorder: Int + let isactive: Bool + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + } + + struct Output: Content{ + let id: Int? + let value: String + let sortorder: Int + let isactive: Bool + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + } + + static let schema = "License" + + @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 + @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? + + init(){} + + init(id: Int? = nil, value: String, sortorder: Int, isactive: Bool, createuserid: Int? = -1, createdate: Date? = nil, updateuserid: Int? = -1, updatedate: Date? = nil){ + self.id = id + self.value = value + self.sortorder = sortorder + self.isactive = isactive + self.createuserid = createuserid + self.createdate = createdate + self.updateuserid = updateuserid + self.updatedate = updatedate + } +} +extension mdlLicense { + struct create: Migration{ + func prepare(on database: Database) -> EventLoopFuture { + return database.schema("License") + .field("id", .int, .identifier(auto: true)) + .field("value", .string) + .field("sortOrder", .int) + .field("isActive", .bool) + .field("createUserId", .int) + .field("createDate", .datetime) + .field("updateUserId", .int) + .field("updateDate", .datetime) + .create() + } + func revert(on database: Database) -> EventLoopFuture { + database.schema("License").delete() + } + } + /* + struct seed: Migration { + func prepare(on database: Database) -> EventLoopFuture { + // 1 + let array: [<#Model#>] = [ + <#init#> + ] + // 2 + return array.map { obj in + obj.save(on: database) + } + .flatten(on: database.eventLoop) + } + + func revert(on database: Database) -> EventLoopFuture { + // 3 + <#Model#>.query(on: database).delete() + } + } + */ +} diff --git a/Sources/App/Models/l/Location.swift b/Sources/App/Models/l/Location.swift new file mode 100644 index 0000000..1fe4958 --- /dev/null +++ b/Sources/App/Models/l/Location.swift @@ -0,0 +1,184 @@ +// +// Location.swift +// +// +// Created by Michiel Carman on 10/24/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class mdlLocation: Model, Content{ + struct Input: Content{ + let id: Int? + let name: String + let address: String + let address2: String + let city: String + let state: String + let zip: String + let dealercode: String + let logofile: String + let isactive: Bool + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + + let unit: mdlUnit + let labsetting: mdlLabSetting + + let user: mdlUser + let contacts: [mdlContact]? + let gates: [mdlGate]? + } + + struct Output: Content{ + let id: Int? + let name: String + let address: String + let address2: String + let city: String + let state: String + let zip: String + let dealercode: String + let logofile: String + let isactive: Bool + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + + let unit: mdlUnit + let labsetting: mdlLabSetting + + let user: mdlUser + let contacts: [mdlContact]? + let gates: [mdlGate]? + } + + static let schema = "Location" + + @ID(custom: "id", generatedBy: .database) var id: Int? + + @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: "dealerCode") var dealercode: String + @Field(key: "logoFile") var logofile: 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? + + @Parent(key: "unitId") var unit: mdlUnit + @Parent(key: "labSettingId") var labsetting: mdlLabSetting + @Parent(key: "userId") var user: mdlUser + //@Children(for: \.$location) var labsettings: [mdlLabSetting] + //@Children(for: \.$location) var users: [mdlUser] + @Children(for: \.$location) var contacts: [mdlContact] + @Children(for: \.$location) var gates: [mdlGate] + + init(){} + + init(id: Int? = nil){ + self.id = id! + } + + init(id: Int? = nil, name: String, address: String, address2: String, city: String, state: String, zip: String, dealercode: String, logofile: String, isactive: Bool = true, createuserid: Int? = -1, createdate: Date? = nil, updateuserid: Int? = -1, updatedate: Date? = nil, unit: mdlUnit, labsetting: mdlLabSetting, user: mdlUser, contacts: [mdlContact]?, gates: [mdlGate]?){ + self.id = id + self.name = name + self.address = address + self.address2 = address2 + self.city = city + self.state = state + self.zip = zip + self.dealercode = dealercode + self.logofile = logofile + self.isactive = isactive + + + self.createuserid = createuserid + self.createdate = createdate + self.updateuserid = updateuserid + self.updatedate = updatedate + self.$unit.id = unit.id! + self.$labsetting.id = labsetting.id! + self.$user.id = user.id! + self.$contacts.value = contacts + self.$gates.value = gates + } +} + +extension mdlLocation { + struct create: Migration{ + func prepare(on database: Database) -> EventLoopFuture { + return database.schema("Location") + .field("id", .int, .identifier(auto: true)) + .field("name", .string) + .field("address", .string) + .field("address2", .string) + .field("city", .string) + .field("state", .string) + .field("zip", .string) + .field("dealerCode", .string) + .field("logoFile", .string) + .field("isActive", .bool) + .field("labSettingId", .int, .required, .references("LabSetting", "id")) + .field("unitId", .int, .required, .references("Unit", "id")) + .field("userId", .int, .required, .references("User", "id")) + .field("createUserId", .int) + .field("createDate", .datetime) + .field("updateUserId", .int) + .field("updateDate", .datetime) + .create() + } + func revert(on database: Database) -> EventLoopFuture { + database.schema("Location").delete() + } + } + struct seed: Migration { + func prepare(on database: Database) -> EventLoopFuture { + // 1 + let array: [mdlLocation] = [ + .init( + id: -1 + , name: "System" + , address: "" + , address2: "" + , city: "", state: "" + , zip: "", dealercode: "" + , logofile: "" + , isactive: true + , unit: mdlUnit( + id: 11 + ) + , labsetting: mdlLabSetting(id: -1) + , user: mdlUser(id: -1) + , contacts: [] + , gates: [] + ) + ] + // 2 + return array.map { obj in + obj.save(on: database) + } + .flatten(on: database.eventLoop) + } + + func revert(on database: Database) -> EventLoopFuture { + // 3 + mdlLocation.query(on: database).delete() + } + } +} + + diff --git a/Sources/App/Models/m/Machine.swift b/Sources/App/Models/m/Machine.swift new file mode 100644 index 0000000..b14eacb --- /dev/null +++ b/Sources/App/Models/m/Machine.swift @@ -0,0 +1,173 @@ +// +// Machine.swift +// +// +// Created by Michiel Carman on 10/25/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class mdlMachine: Model, Content{ + + static let schema = "Machine" + + @ID(custom: "id", generatedBy: .database) var id: Int? + @Field(key: "manufacturerYear") var manufactureryear: String + @Field(key: "description") var description: String + @Field(key: "currentLocation") var currentlocation: String + @Field(key: "lastServiceDate") var lastservicedate: Date? + @Field(key: "isActive") var isactive: Bool + @Field(key: "voltage") var voltage: Decimal? + @Field(key: "kw") var kw: Decimal? + @Field(key: "phase") var phase: Int? + @Field(key: "inServiceDate") var inservicedate: Date? + @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? + + @Parent(key: "machineTypeId") var machinetype: mdlMachineType + @Parent(key: "modelId") var model: mdlModel + @Parent(key: "machineId") var parent: mdlMachine + + + @Children(for: \.$machine) var machinenumbers: [mdlMachineNumber] + @Children(for: \.$machine) var machinemeters: [mdlMachineMeter] + @Children(for: \.$parent) var children: [mdlMachine] + @Children(for: \.$machine) var templates: [mdlTemplate] + @Children(for: \.$machine) var workorders: [mdlWorkOrder] + + @Siblings(through: mdlXCustomerMachine.self, from: \.$machine, to: \.$customer) public var customers: [mdlCustomer] + + init(){} + + init(id: Int? = nil, manufactureryear: String, description: String, currentlocation: String, lastservicedate: Date? = nil, isactive: Bool = true, voltage: Decimal? = nil, kw: Decimal? = nil, phase: Int? = nil, inservicedate: Date? = nil, createuserid: Int? = -1, createdate: Date? = nil, updateuserid: Int? = -1, updatedate: Date? = nil, machinetype: mdlMachineType, parent: mdlMachine, model: mdlModel, machinenumbers: [mdlMachineNumber], machinemeters: [mdlMachineMeter], customers: [mdlCustomer], children: [mdlMachine], templates: [mdlTemplate], workorders: [mdlWorkOrder]){ + self.id = id + self.manufactureryear = manufactureryear + self.description = description + self.currentlocation = currentlocation + self.lastservicedate = lastservicedate + self.isactive = isactive + self.voltage = voltage + self.kw = kw + self.phase = phase + self.inservicedate = inservicedate + self.createuserid = createuserid + self.createdate = createdate + self.updateuserid = updateuserid + self.updatedate = updatedate + self.$model.id = model.id! + self.$machinenumbers.value = machinenumbers + self.$machinemeters.value = machinemeters + self.$customers.value = customers + self.$children.value = children + self.$templates.value = templates + self.$workorders.value = workorders + } +} +extension mdlMachine{ + struct Input: Content{ + let id: Int? + let manufactureryear: String + let description: String + let currentlocation: String + let lastservicedate: Date? + let isactive: Bool + let voltage: Decimal? + let kw: Decimal? + let phase: Int? + let inservicedate: Date? + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + let machinetype: mdlMachineType + let parent: mdlMachine + let model: mdlModel + let machinenumbers: [mdlMachineNumber] + let machinemeters: [mdlMachineMeter] + let customers: [mdlCustomer] + let children: [mdlMachine] + let templates: [mdlTemplate] + let workorders: [mdlWorkOrder] + + } + + struct Output: Content{ + let id: Int? + let manufactureryear: String + let description: String + let currentlocation: String + let lastservicedate: Date? + let isactive: Bool + let voltage: Decimal? + let kw: Decimal? + let phase: Int? + let inservicedate: Date? + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + let machinetype: mdlMachineType + let parent: mdlMachine + let model: mdlModel + let machinenumbers: [mdlMachineNumber] + let machinemeters: [mdlMachineMeter] + let customers: [mdlCustomer] + let children: [mdlMachine] + let templates: [mdlTemplate] + let workorders: [mdlWorkOrder] + } +} +extension mdlMachine { + struct create: Migration{ + func prepare(on database: Database) -> EventLoopFuture { + return database.schema("Machine") + .field("id", .int, .identifier(auto: true)) + .field("manufacturerYear", .string) + .field("description", .string) + .field("currentLocation", .string) + .field("lastServiceDate", .datetime) + .field("isActive", .bool) + .field("voltage", .float) + .field("kw", .float) + .field("phase", .int) + .field("inServiceDate", .datetime) + .field("modelId", .int, .required, .references("Model", "id")) + .field("machineTypeId", .int, .references("MachineType", "id")) + .field("machineId", .int, .references("Machine", "id")) + .field("createUserId", .int) + .field("createDate", .datetime) + .field("updateUserId", .int) + .field("updateDate", .datetime) + .create() + } + func revert(on database: Database) -> EventLoopFuture { + database.schema("Machine").delete() + } + } + /* Uncomment if you need to seed the table. + struct seed: Migration { + func prepare(on database: Database) -> EventLoopFuture { + // 1 + let array: [<#Model#>] = [ + <#init#> + ] + // 2 + return array.map { obj in + obj.save(on: database) + } + .flatten(on: database.eventLoop) + } + + func revert(on database: Database) -> EventLoopFuture { + // 3 + <#Model#>.query(on: database).delete() + } + } + */ +} + diff --git a/Sources/App/Models/m/MachineMeter.swift b/Sources/App/Models/m/MachineMeter.swift new file mode 100644 index 0000000..0305aee --- /dev/null +++ b/Sources/App/Models/m/MachineMeter.swift @@ -0,0 +1,108 @@ +// +// MachineMeter.swift +// +// +// Created by Michiel Carman on 10/26/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class mdlMachineMeter: Model, Content{ + + static let schema = "MachineMeter" + + @ID(custom: "id", generatedBy: .database) var id: Int? + @Field(key: "label") var label: String + @Field(key: "value") var value: String + @Field(key: "imgFile") var imgfile: String + @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? + + @Parent(key: "machineId") var machine: mdlMachine + + init(){} + + init(id: Int? = nil, label: String, value: String, imgfile: String, createuserid: Int? = -1, createdate: Date? = nil, updateuserid: Int? = -1, updatedate: Date? = nil, machine: mdlMachine){ + self.id = id + self.label = label + self.value = value + self.imgfile = imgfile + self.createuserid = createuserid + self.createdate = createdate + self.updateuserid = updateuserid + self.updatedate = updatedate + self.$machine.id = machine.id! + } +} + +extension mdlMachineMeter{ + struct Input: Content{ + let id: Int? + let label: String + let value: String + let imgfile: String + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + let machine: mdlMachine + } + + struct Output: Content{ + let id: Int? + let label: String + let value: String + let imgfile: String + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + let machine: mdlMachine + } +} + +extension mdlMachineMeter { + struct create: Migration{ + func prepare(on database: Database) -> EventLoopFuture { + return database.schema("MachineMeter") + .field("id", .int, .identifier(auto: true)) + .field("label", .string) + .field("value", .string) + .field("imgFile", .string) + .field("machineId", .int, .required, .references("Machine", "id")) + .field("createUserId", .int) + .field("createDate", .datetime) + .field("updateUserId", .int) + .field("updateDate", .datetime) + .create() + } + func revert(on database: Database) -> EventLoopFuture { + database.schema("MachineMeter").delete() + } + } + /* Uncomment if you need to seed the table. + struct seed: Migration { + func prepare(on database: Database) -> EventLoopFuture { + // 1 + let array: [<#Model#>] = [ + <#init#> + ] + // 2 + return array.map { obj in + obj.save(on: database) + } + .flatten(on: database.eventLoop) + } + + func revert(on database: Database) -> EventLoopFuture { + // 3 + <#Model#>.query(on: database).delete() + } + } + */ +} diff --git a/Sources/App/Models/m/MachineNumber.swift b/Sources/App/Models/m/MachineNumber.swift new file mode 100644 index 0000000..5d46068 --- /dev/null +++ b/Sources/App/Models/m/MachineNumber.swift @@ -0,0 +1,109 @@ +// +// MachineNumber.swift +// +// +// Created by Michiel Carman on 10/25/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class mdlMachineNumber: Model, Content{ + + static let schema = "MachineNumber" + + @ID(custom: "id", generatedBy: .database) var id: Int? + @Field(key: "label") var label: String + @Field(key: "value") var value: String + @Field(key: "imgFile") var imgfile: String + @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? + + @Parent(key: "machineId") var machine: mdlMachine + + init(){} + + init(id: Int? = nil, label: String, value: String, imgfile: String, createuserid: Int? = -1, createdate: Date? = nil, updateuserid: Int? = -1, updatedate: Date? = nil, machine: mdlMachine){ + self.id = id + self.label = label + self.value = value + self.imgfile = imgfile + self.createuserid = createuserid + self.createdate = createdate + self.updateuserid = updateuserid + self.updatedate = updatedate + self.$machine.id = machine.id! + } +} + +extension mdlMachineNumber{ + struct Input: Content{ + let id: Int? + let label: String + let value: String + let imgfile: String + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + let machine: mdlMachine + } + + struct Output: Content{ + let id: Int? + let label: String + let value: String + let imgfile: String + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + let machine: mdlMachine + } +} + +extension mdlMachineNumber { + struct create: Migration{ + func prepare(on database: Database) -> EventLoopFuture { + return database.schema("MachineNumber") + .field("id", .int, .identifier(auto: true)) + .field("label", .string) + .field("value", .string) + .field("imgFile", .string) + .field("machineId", .int, .required, .references("Machine", "id")) + .field("createUserId", .int) + .field("createDate", .datetime) + .field("updateUserId", .int) + .field("updateDate", .datetime) + .create() + } + func revert(on database: Database) -> EventLoopFuture { + database.schema("MachineNumber").delete() + } + } + /* Uncomment if you need to seed the table. + struct seed: Migration { + func prepare(on database: Database) -> EventLoopFuture { + // 1 + let array: [<#Model#>] = [ + <#init#> + ] + // 2 + return array.map { obj in + obj.save(on: database) + } + .flatten(on: database.eventLoop) + } + + func revert(on database: Database) -> EventLoopFuture { + // 3 + <#Model#>.query(on: database).delete() + } + } + */ +} + diff --git a/Sources/App/Models/m/MachineType.swift b/Sources/App/Models/m/MachineType.swift new file mode 100644 index 0000000..ab4f4be --- /dev/null +++ b/Sources/App/Models/m/MachineType.swift @@ -0,0 +1,110 @@ +// +// MachineType.swift +// +// +// Created by Michiel Carman on 10/26/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class mdlMachineType: Model, Content{ + + + static let schema = "MachineType" + + @ID(custom: "id", generatedBy: .database) var id: Int? + @Field(key: "name") var name: String + @Field(key: "description") var description: String + @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: \.$machinetype) var machines: [mdlMachine] + + init(){} + + init(name: String, description: String){ + self.name = name + self.description = description + self.createuserid = -1 + self.updateuserid = -1 + } + + init(id: Int? = nil, name: String, description: String, createuserid: Int? = -1, createdate: Date? = nil, updateuserid: Int? = -1, updatedate: Date? = nil, machines: [mdlMachine]){ + self.id = id + self.name = name + self.description = description + self.createuserid = createuserid + self.createdate = createdate + self.updateuserid = updateuserid + self.updatedate = updatedate + self.$machines.value = machines + } +} +extension mdlMachineType{ + struct Input: Content{ + let id: Int? + let name: String + let description: String + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + let machines: [mdlMachine]? + } + + struct Output: Content{ + let id: Int? + let name: String + let description: String + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + let machines: [mdlMachine]? + } +} +extension mdlMachineType { + struct create: Migration{ + func prepare(on database: Database) -> EventLoopFuture { + return database.schema("MachineType") + .field("id", .int, .identifier(auto: true)) + .field("name", .string) + .field("description", .string) + + .field("createUserId", .int) + .field("createDate", .datetime) + .field("updateUserId", .int) + .field("updateDate", .datetime) + .create() + } + func revert(on database: Database) -> EventLoopFuture { + database.schema("MachineType").delete() + } + } + //Uncomment if you need to seed the table. + struct seed: Migration { + func prepare(on database: Database) -> EventLoopFuture { + // 1 + let array: [mdlMachineType] = [ + .init(name: "Primary", description: "Parent Machine(top level)"), + .init(name: "Attachment", description: "Child component") + ] + // 2 + return array.map { obj in + obj.save(on: database) + } + .flatten(on: database.eventLoop) + } + + func revert(on database: Database) -> EventLoopFuture { + // 3 + mdlMachineType.query(on: database).delete() + } + } + +} diff --git a/Sources/App/Models/m/Make.swift b/Sources/App/Models/m/Make.swift new file mode 100644 index 0000000..18ca843 --- /dev/null +++ b/Sources/App/Models/m/Make.swift @@ -0,0 +1,111 @@ +// +// Make.swift +// +// +// Created by Michiel Carman on 10/25/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +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 + @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: \.$make) var models: [mdlModel] + @Children(for: \.$make) var templates: [mdlTemplate] + + init(){} + + init(id: Int? = nil, name: String, description: String, isactive: Bool = true, createuserid: Int? = -1, createdate: Date? = nil, updateuserid: Int? = -1, updatedate: Date? = nil, models: [mdlModel]?, templates: [mdlTemplate]?){ + self.id = id + self.name = name + self.description = description + self.isactive = isactive + self.createuserid = createuserid + self.createdate = createdate + self.updateuserid = updateuserid + self.updatedate = updatedate + self.$models.value = models + self.$templates.value = templates + } +} +extension mdlMake{ + struct Input: Content{ + let id: Int? + let name: String + let description: String + let isactive: Bool + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + let models: [mdlModel]? + let templates: [mdlTemplate]? + } + + struct Output: Content{ + let id: Int? + let name: String + let description: String + let isactive: Bool + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + let models: [mdlModel]? + let templates: [mdlTemplate]? + } +} + +extension mdlMake { + struct create: Migration{ + func prepare(on database: Database) -> EventLoopFuture { + return database.schema("Make") + .field("id", .int, .identifier(auto: true)) + .field("name", .string) + .field("description", .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("Make").delete() + } + } + /* Uncomment if you need to seed the table. + struct seed: Migration { + func prepare(on database: Database) -> EventLoopFuture { + // 1 + let array: [<#Model#>] = [ + <#init#> + ] + // 2 + return array.map { obj in + obj.save(on: database) + } + .flatten(on: database.eventLoop) + } + + func revert(on database: Database) -> EventLoopFuture { + // 3 + <#Model#>.query(on: database).delete() + } + } + */ +} + diff --git a/Sources/App/Models/m/Model.swift b/Sources/App/Models/m/Model.swift new file mode 100644 index 0000000..0f1d586 --- /dev/null +++ b/Sources/App/Models/m/Model.swift @@ -0,0 +1,121 @@ +// +// File.swift +// +// +// Created by Michiel Carman on 10/25/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver +import CryptoKit + +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 + @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? + + @Parent(key: "makeId") var make: mdlMake + @Parent(key: "productId") var product: mdlProduct + @Children(for: \.$model) var templates: [mdlTemplate] + @Children(for: \.$model) var machines: [mdlMachine] + + init(){} + + init(id: Int? = nil, name: String, description: String, isactive: Bool = true, createuserid: Int? = -1, createdate: Date? = nil, updateuserid: Int? = -1, updatedate: Date? = nil, make: mdlMake, product: mdlProduct, templates: [mdlTemplate]?, machines: [mdlMachine]?){ + self.id = id + self.name = name + self.description = description + self.isactive = isactive + self.createuserid = createuserid + self.createdate = createdate + self.updateuserid = updateuserid + self.updatedate = updatedate + self.$make.id = make.id! + self.$product.id = product.id! + self.$templates.value = templates + self.$machines.value = machines + } +} +extension mdlModel{ + struct Input: Content{ + let id: Int? + let name: String + let description: String + let isactive: Bool + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + let make: mdlMake + let product: mdlProduct + let templates: [mdlTemplate]? + let machines: [mdlMachine]? + } + + struct Output: Content{ + let id: Int? + let name: String + let description: String + let isactive: Bool + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + let make: mdlMake + let product: mdlProduct + let templates: [mdlTemplate]? + let machines: [mdlMachine]? + } +} +extension mdlModel { + struct create: Migration{ + func prepare(on database: Database) -> EventLoopFuture { + return database.schema("Model") + .field("id", .int, .identifier(auto: true)) + .field("name", .string) + .field("description", .string) + .field("isActive", .bool) + .field("productId", .int, .required, .references("Product", "id")) + .field("makeId", .int, .required, .references("Make", "id")) + .field("createUserId", .int) + .field("createDate", .datetime) + .field("updateUserId", .int) + .field("updateDate", .datetime) + .create() + } + func revert(on database: Database) -> EventLoopFuture { + database.schema("Model").delete() + } + } + /* Uncomment if you need to seed the table. + struct seed: Migration { + func prepare(on database: Database) -> EventLoopFuture { + // 1 + let array: [<#Model#>] = [ + <#init#> + ] + // 2 + return array.map { obj in + obj.save(on: database) + } + .flatten(on: database.eventLoop) + } + + func revert(on database: Database) -> EventLoopFuture { + // 3 + <#Model#>.query(on: database).delete() + } + } + */ +} + diff --git a/Sources/App/Models/m/Module.swift b/Sources/App/Models/m/Module.swift new file mode 100644 index 0000000..47e466a --- /dev/null +++ b/Sources/App/Models/m/Module.swift @@ -0,0 +1,125 @@ +// +// Module.swift +// +// +// Created by Michiel Carman on 10/25/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class mdlModule: Model, Content{ + struct Input: Content{ + let id: Int? + let name: String + let description: String + let sortorder: Int + let isactive: Bool + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + let users: [mdlUser]? + } + + struct Output: Content{ + let id: Int? + let name: String + let description: String + let sortorder: Int + let isactive: Bool + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + let users: [mdlUser]? + } + + static let schema = "Module" + + @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 + @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? + + @Siblings(through: mdlXUserModule.self, from: \.$module, to: \.$user) public var users: [mdlUser] + + + + init(){} + + init(id: Int?){ + self.id = id + } + + init(name: String, description: String){ + self.name = name + self.description = description + self.sortorder = 0 + self.isactive = true + self.createuserid = -1 + self.updateuserid = -1 + } + + init(id: Int? = nil, name: String, description: String, sortorder: Int, isactive: Bool = true, createuserid: Int? = -1, createdate: Date? = nil, updateuserid: Int? = -1, updatedate: Date? = nil, users: [mdlUser]?){ + self.id = id + self.name = name + self.description = description + self.sortorder = sortorder + self.isactive = isactive + self.createuserid = createuserid + self.createdate = createdate + self.updateuserid = updateuserid + self.updatedate = updatedate + self.$users.value = users + } +} +extension mdlModule { + struct create: Migration{ + func prepare(on database: Database) -> EventLoopFuture { + return database.schema("Module") + .field("id", .int, .identifier(auto: true)) + .field("name", .string) + .field("description", .string) + .field("sortOrder", .int) + .field("isActive", .bool) + .field("createUserId", .int) + .field("createDate", .datetime) + .field("updateUserId", .int) + .field("updateDate", .datetime) + .create() + } + func revert(on database: Database) -> EventLoopFuture { + database.schema("Module").delete() + } + } + struct seed: Migration { + func prepare(on database: Database) -> EventLoopFuture { + // 1 + let array: [mdlModule] = [ + .init(name: "Oil Sample", description: "Allows Oil Sample Labels to be printed"), + .init(name: "Consumption", description: "Allows fluid consumptions to be recorded"), + .init(name: "Part", description: "Allows parts usage to be recorded"), + .init(name: "Inspection", description: "Allows Inspections") + ] + // 2 + return array.map { obj in + obj.save(on: database) + } + .flatten(on: database.eventLoop) + } + + func revert(on database: Database) -> EventLoopFuture { + // 3 + mdlModule.query(on: database).delete() + } + } +} + diff --git a/Sources/App/Models/n/Note.swift b/Sources/App/Models/n/Note.swift new file mode 100644 index 0000000..b84cc02 --- /dev/null +++ b/Sources/App/Models/n/Note.swift @@ -0,0 +1,112 @@ +// +// File.swift +// +// +// Created by Michiel Carman on 10/29/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class mdlNote: Model, Content{ + + static let schema = "Note" + + @ID(custom: "id", generatedBy: .database) var id: Int? + @Field(key: "text") var text: String + @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? + @Parent(key: "workOrderId") var workorder: mdlWorkOrder + @Parent(key: "inspectionCategoryItemId") var inspectioncategoryitem: mdlInspectionCategoryItem + @Parent(key: "noteTypeId") var notetype: mdlNoteType + + init(){} + + init(id: Int? = nil + , text: String + , createuserid: Int? = -1 + , createdate: Date? = nil + , updateuserid: Int? = -1 + , updatedate: Date? = nil + , workorder: mdlWorkOrder + , inspectioncategoryitem: mdlInspectionCategoryItem + , notetype: mdlNoteType + ){ + self.id = id + self.text = text + self.createuserid = createuserid + self.createdate = createdate + self.updateuserid = updateuserid + self.updatedate = updatedate + self.$workorder.id = workorder.id! + self.inspectioncategoryitem.id = inspectioncategoryitem.id! + self.$notetype.id = notetype.id! + } +} +extension mdlNote { + struct Input: Content{ + let id: Int? + let text: String + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + let workorder: mdlWorkOrder + let inspectioncategoryitem: mdlInspectionCategoryItem + let notetype: mdlNoteType + } + + struct Output: Content{ + let id: Int? + let text: String + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + let workorder: mdlWorkOrder + let inspectioncategoryitem: mdlInspectionCategoryItem + let notetype: mdlNoteType + } + struct create: Migration{ + func prepare(on database: Database) -> EventLoopFuture { + return database.schema("Note") + .field("id", .int, .identifier(auto: true)) + .field("text", .string) + .field("workOrderId", .int, .references("WorkOrder", "id")) + .field("inspectionCategoryItemId", .int, .references("InspectionCategoryItem", "id")) + .field("noteTypeId", .int, .references("NoteType", "id")) + .field("createUserId", .int) + .field("createDate", .datetime) + .field("updateUserId", .int) + .field("updateDate", .datetime) + .create() + } + func revert(on database: Database) -> EventLoopFuture { + database.schema("Note").delete() + } + } + /* Uncomment if you need to seed the table. + struct seed: Migration { + func prepare(on database: Database) -> EventLoopFuture { + // 1 + let array: [<#Model#>] = [ + <#init#> + ] + // 2 + return array.map { obj in + obj.save(on: database) + } + .flatten(on: database.eventLoop) + } + + func revert(on database: Database) -> EventLoopFuture { + // 3 + <#Model#>.query(on: database).delete() + } + } + */ +} diff --git a/Sources/App/Models/n/NoteType.swift b/Sources/App/Models/n/NoteType.swift new file mode 100644 index 0000000..9f13179 --- /dev/null +++ b/Sources/App/Models/n/NoteType.swift @@ -0,0 +1,107 @@ +// +// File.swift +// +// +// Created by Michiel Carman on 10/25/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class mdlNoteType: Model, Content{ + struct Input: Content{ + let id: Int? + let name: String + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + let notes: [mdlNote]? + } + + struct Output: Content{ + let id: Int? + let name: String + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + let notes: [mdlNote]? + } + + static let schema = "NoteType" + + @ID(custom: "id", generatedBy: .database) var id: Int? + @Field(key: "name") var name: String + @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: \.$notetype) var notes: [mdlNote] + + init(){} + + init(name: String){ + self.name = name + self.createuserid = -1 + self.updateuserid = -1 + } + + init(id: Int? = nil, name: String, createuserid: Int? = -1, createdate: Date? = nil, updateuserid: Int? = -1, updatedate: Date? = nil, notes: [mdlNote]?){ + self.id = id + self.name = name + self.createuserid = createuserid + self.createdate = createdate + self.updateuserid = updateuserid + self.updatedate = updatedate + self.$notes.value = notes + } +} +extension mdlNoteType { + struct create: Migration{ + func prepare(on database: Database) -> EventLoopFuture { + return database.schema("NoteType") + .field("id", .int, .identifier(auto: true)) + .field("name", .string) + .field("createUserId", .int) + .field("createDate", .datetime) + .field("updateUserId", .int) + .field("updateDate", .datetime) + .create() + } + func revert(on database: Database) -> EventLoopFuture { + database.schema("NoteType").delete() + } + } + struct seed: Migration { + func prepare(on database: Database) -> EventLoopFuture { + // 1 + let array: [mdlNoteType] = [ + .init(name: "InspectionType"), + .init(name: "InspectionItem"), + .init(name: "FuelItem"), + .init(name: "Inspection"), + .init(name: "InspectionPhoto"), + .init(name: "Fuel"), + .init(name: "UrgentRepair"), + .init(name: "RecommendedRepair"), + .init(name: "Part"), + .init(name: "Incomplete"), + .init(name: "Reassign"), + .init(name: "WorkOrder") + ] + // 2 + return array.map { obj in + obj.save(on: database) + } + .flatten(on: database.eventLoop) + } + + func revert(on database: Database) -> EventLoopFuture { + // 3 + mdlNoteType.query(on: database).delete() + } + } +} diff --git a/Sources/App/Models/o/OilSample.swift b/Sources/App/Models/o/OilSample.swift new file mode 100644 index 0000000..c445ee4 --- /dev/null +++ b/Sources/App/Models/o/OilSample.swift @@ -0,0 +1,98 @@ +// +// OilSample.swift +// +// +// Created by Michiel Carman on 10/28/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class mdlOilSample: Model, Content{ + + static let schema = "OilSample" + + @ID(custom: "id", generatedBy: .database) var id: Int? + @Field(key: "segment") var segment: String + @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? + @Parent(key: "workOrderId") var workorder: mdlWorkOrder + @Children(for: \.$oilsample) var oilsampleitems: [mdlOilSampleItem] + + init(){} + + init(id: Int? = nil, segment: String, createuserid: Int? = -1, createdate: Date? = nil, updateuserid: Int? = -1, updatedate: Date? = nil, workorder: mdlWorkOrder, oilsampleitems: [mdlOilSampleItem]?){ + self.id = id + self.segment = segment + self.createuserid = createuserid + self.createdate = createdate + self.updateuserid = updateuserid + self.updatedate = updatedate + self.$workorder.id = workorder.id! + self.$oilsampleitems.value = oilsampleitems + } +} +extension mdlOilSample { + struct Input: Content{ + let id: Int? + let segment: String + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + let workorder: mdlWorkOrder + let oilsampleitems: [mdlOilSampleItem]? + } + + struct Output: Content{ + let id: Int? + let segment: String + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + let workorder: mdlWorkOrder + let oilsampleitems: [mdlOilSampleItem]? + } + struct create: Migration{ + func prepare(on database: Database) -> EventLoopFuture { + return database.schema("OilSample") + .field("id", .int, .identifier(auto: true)) + .field("segment", .string) + .field("workOrderId", .int, .required, .references("WorkOrder", "id")) + + .field("createUserId", .int) + .field("createDate", .datetime) + .field("updateUserId", .int) + .field("updateDate", .datetime) + .create() + } + func revert(on database: Database) -> EventLoopFuture { + database.schema("OilSample").delete() + } + } + /* Uncomment if you need to seed the table. + struct seed: Migration { + func prepare(on database: Database) -> EventLoopFuture { + // 1 + let array: [<#Model#>] = [ + <#init#> + ] + // 2 + return array.map { obj in + obj.save(on: database) + } + .flatten(on: database.eventLoop) + } + + func revert(on database: Database) -> EventLoopFuture { + // 3 + <#Model#>.query(on: database).delete() + } + } + */ +} diff --git a/Sources/App/Models/o/OilSampleItem.swift b/Sources/App/Models/o/OilSampleItem.swift new file mode 100644 index 0000000..62dab1f --- /dev/null +++ b/Sources/App/Models/o/OilSampleItem.swift @@ -0,0 +1,232 @@ +// +// OilSampleItem.swift +// +// +// Created by Michiel Carman on 10/28/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class mdlOilSampleItem: Model, Content{ + struct input{ + let id: Int? + let compartmentname: String + let compartmentcode: String + let compartmentlocationname1: String + let compartmentlocationcode1: String + let compartmentlocationname2: String + let compartmentlocationcode2: String + let hoursonoil: Decimal? + let oiladded: Decimal? + let jobsitename: String + let fluidname: String + let viscosityname: String + let oilchanged: Bool? + let filterchanged: Bool? + let levelname: String + let comment: String + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + let oilsample: mdlOilSample + } + + struct output{ + let id: Int? + let compartmentname: String + let compartmentcode: String + let compartmentlocationname1: String + let compartmentlocationcode1: String + let compartmentlocationname2: String + let compartmentlocationcode2: String + let hoursonoil: Decimal? + let oiladded: Decimal? + let jobsitename: String + let fluidname: String + let viscosityname: String + let oilchanged: Bool? + let filterchanged: Bool? + let levelname: String + let comment: String + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + let oilsample: mdlOilSample + } + + static let schema = "OilSampleItem" + + @ID(custom: "id", generatedBy: .database) var id: Int? + @Field(key: "compartmentName") var compartmentname: String + @Field(key: "compartmentCode") var compartmentcode: String + @Field(key: "compartmentLocationName1") var compartmentlocationname1: String + @Field(key: "compartmentLocationCode1") var compartmentlocationcode1: String + @Field(key: "compartmentLocationName2") var compartmentlocationname2: String + @Field(key: "compartmentLocationCode2") var compartmentlocationcode2: String + @Field(key: "hoursOnOil") var hoursonoil: Decimal? + @Field(key: "oilAdded") var oiladded: Decimal? + @Field(key: "jobsiteName") var jobsitename: String + @Field(key: "fluidName") var fluidname: String + @Field(key: "viscosityName") var viscosityname: String + @Field(key: "oilChanged") var oilchanged: Bool? + @Field(key: "filterChanged") var filterchanged: Bool? + @Field(key: "levelName") var levelname: String + @Field(key: "comment") var comment: String + @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? + @Parent(key: "oilSampleId") var oilsample: mdlOilSample + + init(){} + + init(id: Int? = nil + , compartmentname: String + , compartmentcode: String + , compartmentlocationname1: String + , compartmentlocationcode1: String + , compartmentlocationname2: String + , compartmentlocationcode2: String + , hoursonoil: Decimal? = nil + , oiladded: Decimal? = nil + , jobsitename: String + , fluidname: String + , viscosityname: String + , oilchanged: Bool? = nil + , filterchanged: Bool? = nil + , levelname: String + , comment: String + , createuserid: Int? = -1 + , createdate: Date? = nil + , updateuserid: Int? = -1 + , updatedate: Date? = nil + , oilsample: mdlOilSample + ){ + self.id = id + self.compartmentname = compartmentname + self.compartmentcode = compartmentcode + self.compartmentlocationname1 = compartmentlocationname1 + self.compartmentlocationcode1 = compartmentlocationcode1 + self.compartmentlocationname2 = compartmentlocationname2 + self.compartmentlocationcode2 = compartmentlocationcode2 + self.hoursonoil = hoursonoil + self.oiladded = oiladded + self.jobsitename = jobsitename + self.fluidname = fluidname + self.viscosityname = viscosityname + self.oilchanged = oilchanged + self.filterchanged = filterchanged + self.levelname = levelname + self.comment = comment + self.createuserid = createuserid + self.createdate = createdate + self.updateuserid = updateuserid + self.updatedate = updatedate + self.$oilsample.id = oilsample.id! + } +} + +extension mdlOilSampleItem { + struct Input: Content{ + let id: Int? + let compartmentname: String + let compartmentcode: String + let compartmentlocationname1: String + let compartmentlocationcode1: String + let compartmentlocationname2: String + let compartmentlocationcode2: String + let hoursonoil: Decimal? + let oiladded: Decimal? + let jobsitename: String + let fluidname: String + let viscosityname: String + let oilchanged: Bool? + let filterchanged: Bool? + let levelname: String + let comment: String + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + let oilsample: mdlOilSample + } + + struct Output: Content{ + let id: Int? + let compartmentname: String + let compartmentcode: String + let compartmentlocationname1: String + let compartmentlocationcode1: String + let compartmentlocationname2: String + let compartmentlocationcode2: String + let hoursonoil: Decimal? + let oiladded: Decimal? + let jobsitename: String + let fluidname: String + let viscosityname: String + let oilchanged: Bool? + let filterchanged: Bool? + let levelname: String + let comment: String + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + let oilsample: mdlOilSample + } + struct create: Migration{ + func prepare(on database: Database) -> EventLoopFuture { + return database.schema("OilSampleItem") + .field("id", .int, .identifier(auto: true)) + .field("compartmentName", .string) + .field("compartmentCode", .string) + .field("compartmentLocationName1", .string) + .field("compartmentLocationName2", .string) + .field("compartmentLocationCode1", .string) + .field("compartmentLocationCode2", .string) + .field("hoursOnOil", .float) + .field("oilAdded", .float) + .field("jobsiteName", .string) + .field("fluidName", .string) + .field("viscosityName", .string) + .field("oilChanged", .bool) + .field("filterChanged", .bool) + .field("levelName", .bool) + .field("comment", .string) + .field("oilSampleId", .int, .required, .references("OilSample", "id")) + .field("createUserId", .int) + .field("createDate", .datetime) + .field("updateUserId", .int) + .field("updateDate", .datetime) + .create() + } + func revert(on database: Database) -> EventLoopFuture { + database.schema("OilSampleItem").delete() + } + } + /* Uncomment if you need to seed the table. + struct seed: Migration { + func prepare(on database: Database) -> EventLoopFuture { + // 1 + let array: [<#Model#>] = [ + <#init#> + ] + // 2 + return array.map { obj in + obj.save(on: database) + } + .flatten(on: database.eventLoop) + } + + func revert(on database: Database) -> EventLoopFuture { + // 3 + <#Model#>.query(on: database).delete() + } + } + */ +} diff --git a/Sources/App/Models/o/OilSampleLabel.swift b/Sources/App/Models/o/OilSampleLabel.swift new file mode 100644 index 0000000..f682936 --- /dev/null +++ b/Sources/App/Models/o/OilSampleLabel.swift @@ -0,0 +1,175 @@ +// +// OilSampleLabel.swift +// +// +// Created by Michiel Carman on 10/28/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class mdlOilSampleLabel: Model, Content{ + + static let schema = "OilSampleLabel" + + @ID(custom: "id", generatedBy: .database) var id: Int? + @Field(key: "name") var name: String + @Field(key: "description") var description: String + @Field(key: "size") var size: String + @Field(key: "offset") var offset: String + @Field(key: "hrez") var hrez: String + @Field(key: "vrez") var vrez: String + @Field(key: "height") var height: String + @Field(key: "quantity") var quantity: Int + @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? + @Parent(key: "labSettingId") var labsetting: mdlLabSetting + + + + + init(){} + + init(id: Int?) + { + self.id = id + } + + init( + name: String + ,description: String + ,size: String + ,offset: String + ,hrez: String + ,vrez: String + ,height: String + ,quantity: Int + ){ + self.name = name + self.description = description + self.size = size + self.offset = offset + self.hrez = hrez + self.vrez = vrez + self.height = height + self.quantity = quantity + self.$labsetting.id = mdlLabSetting(id: -1).id! + self.createuserid = -1 + self.updateuserid = -1 + } + + init( + id: Int? + ,name: String + ,description: String + ,size: String + ,offset: String + ,hrez: String + ,vrez: String + ,height: String + ,quantity: Int + ,createdate: Date? + ,createuserid: Int? + ,updatedate: Date? + ,updateuserid: Int? + ,labsetting: mdlLabSetting + ){ + self.id = id + self.name = name + self.description = description + self.size = size + self.offset = offset + self.hrez = hrez + self.vrez = vrez + self.height = height + self.quantity = quantity + self.createuserid = createuserid + self.createdate = createdate + self.updateuserid = updateuserid + self.updatedate = updatedate + self.$labsetting.id = labsetting.id! + } +} + +extension mdlOilSampleLabel { + struct Input: Content{ + let id: Int? + let name: String + let description: String + let size: String + let offset: String + let hrez: String + let vrez: String + let height: String + let quantity: Int + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + let labsetting: mdlLabSetting + } + + struct Output: Content{ + let id: Int? + let name: String + let description: String + let size: String + let offset: String + let hrez: String + let vrez: String + let height: String + let quantity: Int + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + let labsetting: mdlLabSetting + } + struct create: Migration{ + func prepare(on database: Database) -> EventLoopFuture { + return database.schema("OilSampleLabel") + .field("id", .int, .identifier(auto: true)) + .field("name", .string) + .field("description", .string) + .field("size", .string) + .field("offset", .string) + .field("hrez", .string) + .field("vrez", .string) + .field("height", .string) + .field("quantity", .int) + .field("labSettingId", .int, .required, .references("LabSetting", "id")) + .field("createUserId", .int) + .field("createDate", .datetime) + .field("updateUserId", .int) + .field("updateDate", .datetime) + .create() + } + func revert(on database: Database) -> EventLoopFuture { + database.schema("OilSampleItem").delete() + } + } + // Uncomment if you need to seed the table. + struct seed: Migration { + func prepare(on database: Database) -> EventLoopFuture { + // 1 + let array: [mdlOilSampleLabel] = [ + .init(name: "Label 1", description: "", size: "2X4", offset: "0", hrez: "200", vrez: "200", height: "600", quantity: 1) + ] + // 2 + return array.map { obj in + obj.save(on: database) + } + .flatten(on: database.eventLoop) + } + + func revert(on database: Database) -> EventLoopFuture { + // 3 + mdlOilSampleLabel.query(on: database).delete() + } + } + // +} diff --git a/Sources/App/Models/p/Part.swift b/Sources/App/Models/p/Part.swift new file mode 100644 index 0000000..9c12240 --- /dev/null +++ b/Sources/App/Models/p/Part.swift @@ -0,0 +1,103 @@ +// +// File.swift +// +// +// Created by Michiel Carman on 10/27/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class mdlPart: Model, Content{ + + static let schema = "Part" + + @ID(custom: "id", generatedBy: .database) var id: Int? + @Field(key: "name") var name: String + @Field(key: "number") var number: String + @Field(key: "description") var description: 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? + + init(){} + + init(id: Int? = nil, name: String, number: String, description: String, isactive: Bool, createuserid: Int? = -1, createdate: Date? = nil, updateuserid: Int? = -1, updatedate: Date? = nil){ + self.id = id + self.name = name + self.number = number + self.description = description + self.isactive = isactive + self.createuserid = createuserid + self.createdate = createdate + self.updateuserid = updateuserid + self.updatedate = updatedate + } +} +extension mdlPart { + struct Input: Content{ + let id: Int? + let name: String + let number: String + let description: String + let isactive: Bool + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + } + + struct Output: Content{ + let id: Int? + let name: String + let number: String + let description: String + let isactive: Bool + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + } + struct create: Migration{ + func prepare(on database: Database) -> EventLoopFuture { + return database.schema("Part") + .field("id", .int, .identifier(auto: true)) + .field("name", .string) + .field("number", .string) + .field("description", .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("Part").delete() + } + } + /* Uncomment if you need to seed the table. + struct seed: Migration { + func prepare(on database: Database) -> EventLoopFuture { + // 1 + let array: [<#Model#>] = [ + <#init#> + ] + // 2 + return array.map { obj in + obj.save(on: database) + } + .flatten(on: database.eventLoop) + } + + func revert(on database: Database) -> EventLoopFuture { + // 3 + <#Model#>.query(on: database).delete() + } + } + */ +} diff --git a/Sources/App/Models/p/Priority.swift b/Sources/App/Models/p/Priority.swift new file mode 100644 index 0000000..3ea3c16 --- /dev/null +++ b/Sources/App/Models/p/Priority.swift @@ -0,0 +1,101 @@ +// +// Priority.swift +// +// +// Created by Michiel Carman on 10/25/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class mdlPriority: Model, Content{ + struct Input: Content{ + let id: Int? + let name: String + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + let workorders: [mdlWorkOrder]? + } + + struct Output: Content{ + let id: Int? + let name: String + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + let workorders: [mdlWorkOrder]? + } + + static let schema = "Priority" + + @ID(custom: "id", generatedBy: .database) var id: Int? + @Field(key: "name") var name: String + @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: \.$priority) var workorders: [mdlWorkOrder] + + init(){} + + init(name: String){ + self.name = name + self.createuserid = -1 + self.updateuserid = -1 + } + + init(id: Int? = nil, name: String, createuserid: Int? = -1, createdate: Date? = nil, updateuserid: Int? = -1, updatedate: Date? = nil, workorders: [mdlWorkOrder]?){ + self.id = id + self.name = name + self.createuserid = createuserid + self.createdate = createdate + self.updateuserid = updateuserid + self.updatedate = updatedate + self.$workorders.value = workorders + } +} + +extension mdlPriority { + struct create: Migration{ + func prepare(on database: Database) -> EventLoopFuture { + return database.schema("Priority") + .field("id", .int, .identifier(auto: true)) + .field("name", .string) + .field("createUserId", .int) + .field("createDate", .datetime) + .field("updateUserId", .int) + .field("updateDate", .datetime) + .create() + } + func revert(on database: Database) -> EventLoopFuture { + database.schema("Priority").delete() + } + } + struct seed: Migration { + func prepare(on database: Database) -> EventLoopFuture { + // 1 + let array: [mdlPriority] = [ + .init(name: "URGENT"), + .init(name: "HIGH"), + .init(name: "MEDIUM"), + .init(name: "LOW") + ] + // 2 + return array.map { obj in + obj.save(on: database) + } + .flatten(on: database.eventLoop) + } + + func revert(on database: Database) -> EventLoopFuture { + // 3 + mdlPriority.query(on: database).delete() + } + } +} + diff --git a/Sources/App/Models/p/Product.swift b/Sources/App/Models/p/Product.swift new file mode 100644 index 0000000..369f5bc --- /dev/null +++ b/Sources/App/Models/p/Product.swift @@ -0,0 +1,112 @@ +// +// Product.swift +// +// +// Created by Michiel Carman on 10/25/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class mdlProduct: Model, Content{ + + static let schema = "Product" + + @ID(custom: "id", generatedBy: .database) var id: Int? + @Field(key: "code") var code: String + @Field(key: "description") var description: 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: \.$product) var models: [mdlModel] + @Children(for: \.$product) var templates: [mdlTemplate] + + init(){} + + + init(id: Int? = nil, code: String, description: String, isactive: Bool = true, createuserid: Int? = -1, createdate: Date? = nil, updateuserid: Int? = -1, updatedate: Date? = nil, models: [mdlModel]?, templates: [mdlTemplate]?){ + self.id = id + self.code = code + self.description = description + self.isactive = isactive + self.createuserid = createuserid + self.createdate = createdate + self.updateuserid = updateuserid + self.updatedate = updatedate + self.$models.value = models + self.$templates.value = templates + } +} +//JSON Content +extension mdlProduct{ + struct Input: Content{ + let id: Int? + let code: String + let description: String + let isactive: Bool + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + let models: [mdlModel]? + let templates: [mdlTemplate]? + } + + struct Output: Content{ + let id: Int? + let code: String + let description: String + let isactive: Bool + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + let models: [mdlModel]? + let templates: [mdlTemplate]? + } +} + +extension mdlProduct { + struct create: Migration{ + func prepare(on database: Database) -> EventLoopFuture { + return database.schema("Product") + .field("id", .int, .identifier(auto: true)) + .field("code", .string) + .field("description", .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("Product").delete() + } + } + /* + struct seed: Migration { + func prepare(on database: Database) -> EventLoopFuture { + // 1 + let array: [<#Model#>] = [ + <#init#> + ] + // 2 + return array.map { obj in + obj.save(on: database) + } + .flatten(on: database.eventLoop) + } + + func revert(on database: Database) -> EventLoopFuture { + // 3 + <#Model#>.query(on: database).delete() + } + } + */ +} + diff --git a/Sources/App/Models/r/Reason.swift b/Sources/App/Models/r/Reason.swift new file mode 100644 index 0000000..81eee1f --- /dev/null +++ b/Sources/App/Models/r/Reason.swift @@ -0,0 +1,112 @@ +// +// File.swift +// +// +// Created by Michiel Carman on 10/25/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class mdlReason: Model, Content{ + struct Input: Content{ + let id: Int? + let name: String + let description: String + let isactive: Bool + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + let workorders: [mdlWorkOrder]? + } + + struct Output: Content{ + let id: Int? + let name: String + let description: String + let isactive: Bool + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + let workorders: [mdlWorkOrder]? + } + + 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 + @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: \.$reason) var workorders: [mdlWorkOrder] + + init(){} + + init(name: String){ + self.name = name + self.description = "" + self.updateuserid = -1 + self.createuserid = -1 + self.isactive = true + } + + init(id: Int? = nil, name: String, description: String, isactive: Bool = true, createuserid: Int? = -1, createdate: Date? = nil, updateuserid: Int? = -1, updatedate: Date? = nil, workorders: [mdlWorkOrder]?){ + self.id = id + self.name = name + self.description = description + self.isactive = isactive + self.createuserid = createuserid + self.createdate = createdate + self.updateuserid = updateuserid + self.updatedate = updatedate + self.$workorders.value = workorders + } +} + +extension mdlReason { + struct create: Migration{ + func prepare(on database: Database) -> EventLoopFuture { + return database.schema("Reason") + .field("id", .int, .identifier(auto: true)) + .field("name", .string) + .field("description", .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("Reason").delete() + } + } + /* + struct seed: Migration { + func prepare(on database: Database) -> EventLoopFuture { + // 1 + let array: [mdlReason] = [ + <#init#> + ] + // 2 + return array.map { obj in + obj.save(on: database) + } + .flatten(on: database.eventLoop) + } + + func revert(on database: Database) -> EventLoopFuture { + // 3 + mdlReason.query(on: database).delete() + } + } + */ +} + diff --git a/Sources/App/Models/r/RepairType.swift b/Sources/App/Models/r/RepairType.swift new file mode 100644 index 0000000..5a2cfaa --- /dev/null +++ b/Sources/App/Models/r/RepairType.swift @@ -0,0 +1,108 @@ +// +// RepairType.swift +// +// +// Created by Michiel Carman on 10/25/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class mdlRepairType: Model, Content{ + struct Input: Content{ + let id: Int? + let name: String + let color: String + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + let responsetypes: [mdlResponseType]? + } + + struct Output: Content{ + let id: Int? + let name: String + let color: String + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + let responsetypes: [mdlResponseType]? + } + + static let schema = "RepairType" + + @ID(custom: "id", generatedBy: .database) var id: Int? + @Field(key: "name") var name: String + @Field(key: "color") var color: String + @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: \.$repairtype) var responsetypes: [mdlResponseType] + + init(){} + + init(name: String, color: String){ + self.name = name + self.color = color + self.createuserid = -1 + self.updateuserid = -1 + } + + init(id: Int? = nil, name: String, color: String, createuserid: Int? = -1, createdate: Date? = nil, updateuserid: Int? = -1, updatedate: Date? = nil, responsetypes: [mdlResponseType]){ + self.id = id + self.name = name + self.color = color + self.createuserid = createuserid + self.createdate = createdate + self.updateuserid = updateuserid + self.updatedate = updatedate + self.$responsetypes.value = responsetypes + } +} + +extension mdlRepairType { + struct create: Migration{ + func prepare(on database: Database) -> EventLoopFuture { + return database.schema("RepairType") + .field("id", .int, .identifier(auto: true)) + .field("name", .string) + .field("color", .string) + .field("createUserId", .int) + .field("createDate", .datetime) + .field("updateUserId", .int) + .field("updateDate", .datetime) + .create() + } + func revert(on database: Database) -> EventLoopFuture { + database.schema("RepairType").delete() + } + } + struct seed: Migration { + func prepare(on database: Database) -> EventLoopFuture { + // 1 + let array: [mdlRepairType] = [ + .init(name: "None", color: "#ffffff"), + .init(name: "Recommended Repair", color: "#FFCC00"), + .init(name: "Urgent Repair", color: "#FF0000"), + .init(name: "N/A", color: "#ffffff") + ] + // 2 + return array.map { obj in + obj.save(on: database) + } + .flatten(on: database.eventLoop) + } + + func revert(on database: Database) -> EventLoopFuture { + // 3 + mdlRepairType.query(on: database).delete() + } + } +} + diff --git a/Sources/App/Models/r/ResponseType.swift b/Sources/App/Models/r/ResponseType.swift new file mode 100644 index 0000000..b44da73 --- /dev/null +++ b/Sources/App/Models/r/ResponseType.swift @@ -0,0 +1,119 @@ +// +// ResponseType.swift +// +// +// Created by Michiel Carman on 10/26/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +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 + @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? + + @Parent(key: "repairTypeId") var repairtype: mdlRepairType + + @Children(for: \.$responsetype) var inspectioncategoryitemresopnsetypes: [mdlInspectionCategoryItemResponseType] + + @Siblings(through: mdlXItemResponseType.self, from: \.$responsetype, to: \.$item) public var items: [mdlItem] + + + + init(){} + + init(id: Int? = nil, name: String, color: String, isactive: Bool, createuserid: Int? = -1, createdate: Date? = nil, updateuserid: Int? = -1, updatedate: Date? = nil, repairtype: mdlRepairType, items: [mdlItem], inspectioncategoryitemresopnsetypes: [mdlInspectionCategoryItemResponseType]){ + self.id = id + self.name = name + self.color = color + self.isactive = isactive + self.createuserid = createuserid + self.createdate = createdate + self.updateuserid = updateuserid + self.updatedate = updatedate + self.$repairtype.id = repairtype.id! + self.$items.value = items + self.$inspectioncategoryitemresopnsetypes.value = inspectioncategoryitemresopnsetypes + } +} +extension mdlResponseType{ + struct Input: Content{ + let id: Int? + let name: String + let color: String + let isactive: Bool + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + let repairtype: mdlRepairType + let items: [mdlItem] + let inspectioncategoryitemresopnsetypes: [mdlInspectionCategoryItemResponseType] + } + + struct Output: Content{ + let id: Int? + let name: String + let color: String + let isactive: Bool + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + let repairtype: mdlRepairType + let items: [mdlItem] + let inspectioncategoryitemresopnsetypes: [mdlInspectionCategoryItemResponseType] + } +} +extension mdlResponseType { + struct create: Migration{ + func prepare(on database: Database) -> EventLoopFuture { + return database.schema("ResponseType") + .field("id", .int, .identifier(auto: true)) + .field("name", .string) + .field("color", .string) + .field("isActive", .bool) + .field("repairTypeId", .int, .required, .references("RepairType", "id")) + .field("createUserId", .int) + .field("createDate", .datetime) + .field("updateUserId", .int) + .field("updateDate", .datetime) + .create() + } + func revert(on database: Database) -> EventLoopFuture { + database.schema("ResponseType").delete() + } + } + /* Uncomment if you need to seed the table. + struct seed: Migration { + func prepare(on database: Database) -> EventLoopFuture { + // 1 + let array: [<#Model#>] = [ + <#init#> + ] + // 2 + return array.map { obj in + obj.save(on: database) + } + .flatten(on: database.eventLoop) + } + + func revert(on database: Database) -> EventLoopFuture { + // 3 + <#Model#>.query(on: database).delete() + } + } + */ +} + diff --git a/Sources/App/Models/r/Role.swift b/Sources/App/Models/r/Role.swift new file mode 100644 index 0000000..eb4c1cd --- /dev/null +++ b/Sources/App/Models/r/Role.swift @@ -0,0 +1,81 @@ +// +// Role.swift +// +// +// Created by Michiel Carman on 10/24/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class mdlRole: Model, Content{ + struct Input: Content{ + let id: Int? + let name: String + let description: String + let users: [mdlUser]? + } + + struct Output: Content{ + let id: Int? + let name: String + let description: String + let users: [mdlUser]? + } + + 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) public var users: [mdlUser] + + init(){} + + init(id: Int? = nil){ + self.id = id + } + + init(id: Int? = nil, name: String, description: String, users: [mdlUser]?){ + self.id = id + self.name = name + self.description = description + self.$users.value = users + } +} + +extension mdlRole { + struct create: Migration{ + func prepare(on database: Database) -> EventLoopFuture { + return database.schema("Role") + .field("id", .int, .identifier(auto: true)) + .field("name", .string) + .field("description", .string) + .create() + } + func revert(on database: Database) -> EventLoopFuture { + database.schema("Role").delete() + } + } + struct seed: Migration { + func prepare(on database: Database) -> EventLoopFuture { + // 1 + let array: [mdlRole] = [ + .init(id: -1, name: "SuperAdmin", description: "System User Account", users: []) + ] + // 2 + return array.map { obj in + obj.save(on: database) + } + .flatten(on: database.eventLoop) + } + + func revert(on database: Database) -> EventLoopFuture { + // 3 + mdlRole.query(on: database).delete() + } + } +} diff --git a/Sources/App/Models/s/Signature.swift b/Sources/App/Models/s/Signature.swift new file mode 100644 index 0000000..1c28a89 --- /dev/null +++ b/Sources/App/Models/s/Signature.swift @@ -0,0 +1,106 @@ +// +// Signature.swift +// +// +// Created by Michiel Carman on 10/29/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class mdlSignature: Model, Content{ + + static let schema = "Signature" + + @ID(custom: "id", generatedBy: .database) var id: Int? + @Field(key: "path") var path: String + @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? + @Parent(key: "workOrderId") var workorder: mdlWorkOrder + @Parent(key: "signatureTypeId") var signaturetype: mdlSignatureType + + init(){} + + init(id: Int? = nil + , path: String + , createuserid: Int? = -1 + , createdate: Date? = nil + , updateuserid: Int? = -1 + , updatedate: Date? = nil + , workorder: mdlWorkOrder + , signaturetype: mdlSignatureType + ){ + self.id = id + self.path = path + self.createuserid = createuserid + self.createdate = createdate + self.updateuserid = updateuserid + self.updatedate = updatedate + self.$workorder.id = workorder.id! + self.$signaturetype.id = signaturetype.id! + } +} +extension mdlSignature { + struct Input: Content{ + let id: Int? + let path: String + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + let workorder: mdlWorkOrder + let signaturetype: mdlSignatureType + } + + struct Output: Content{ + let id: Int? + let path: String + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + let workorder: mdlWorkOrder + let signaturetype: mdlSignatureType + } + struct create: Migration{ + func prepare(on database: Database) -> EventLoopFuture { + return database.schema("Signature") + .field("id", .int, .identifier(auto: true)) + .field("path", .string) + .field("workOrderId", .int, .required, .references("WorkOrder", "id")) + .field("signatureTypeId", .int, .required, .references("SignatureType", "id")) + .field("createUserId", .int) + .field("createDate", .datetime) + .field("updateUserId", .int) + .field("updateDate", .datetime) + .create() + } + func revert(on database: Database) -> EventLoopFuture { + database.schema("Signature").delete() + } + } + /* Uncomment if you need to seed the table. + struct seed: Migration { + func prepare(on database: Database) -> EventLoopFuture { + // 1 + let array: [<#Model#>] = [ + <#init#> + ] + // 2 + return array.map { obj in + obj.save(on: database) + } + .flatten(on: database.eventLoop) + } + + func revert(on database: Database) -> EventLoopFuture { + // 3 + <#Model#>.query(on: database).delete() + } + } + */ +} diff --git a/Sources/App/Models/s/SignatureType.swift b/Sources/App/Models/s/SignatureType.swift new file mode 100644 index 0000000..212e95e --- /dev/null +++ b/Sources/App/Models/s/SignatureType.swift @@ -0,0 +1,99 @@ +// +// File.swift +// +// +// Created by Michiel Carman on 10/25/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class mdlSignatureType: Model, Content{ + struct Input: Content{ + let id: Int? + let name: String + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + let signatures: [mdlSignature]? + } + + struct Output: Content{ + let id: Int? + let name: String + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + let signatures: [mdlSignature]? + } + + static let schema = "SignatureType" + + @ID(custom: "id", generatedBy: .database) var id: Int? + @Field(key: "name") var name: String + @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: \.$signaturetype) var signatures: [mdlSignature] + + init(){} + + init(name: String){ + self.name = name + self.createuserid = -1 + self.updateuserid = -1 + } + + init(id: Int? = nil, name: String, createuserid: Int? = -1, createdate: Date? = nil, updateuserid: Int? = -1, updatedate: Date? = nil, signatures: [mdlSignature]? ){ + self.id = id + self.name = name + self.createuserid = createuserid + self.createdate = createdate + self.updateuserid = updateuserid + self.updatedate = updatedate + self.$signatures.value = signatures + } +} + +extension mdlSignatureType { + struct create: Migration{ + func prepare(on database: Database) -> EventLoopFuture { + return database.schema("SignatureType") + .field("id", .int, .identifier(auto: true)) + .field("name", .string) + .field("createUserId", .int) + .field("createDate", .datetime) + .field("updateUserId", .int) + .field("updateDate", .datetime) + .create() + } + func revert(on database: Database) -> EventLoopFuture { + database.schema("SignatureType").delete() + } + } + struct seed: Migration { + func prepare(on database: Database) -> EventLoopFuture { + // 1 + let array: [mdlSignatureType] = [ + .init(name: "Technician"), + .init(name: "Customer") + ] + // 2 + return array.map { obj in + obj.save(on: database) + } + .flatten(on: database.eventLoop) + } + + func revert(on database: Database) -> EventLoopFuture { + // 3 + mdlSignatureType.query(on: database).delete() + } + } +} + diff --git a/Sources/App/Models/s/Spec.swift b/Sources/App/Models/s/Spec.swift new file mode 100644 index 0000000..b2d03e4 --- /dev/null +++ b/Sources/App/Models/s/Spec.swift @@ -0,0 +1,113 @@ +// +// Spec.swift +// +// +// Created by Michiel Carman on 10/27/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +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 + @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? + + @Parent(key: "itemId") var item: mdlItem + @Children(for: \.$spec) var specitems: [mdlSpecItem] + @Children(for: \.$spec) var templatecategoryitemspecs: [mdlTemplateCategoryItemSpec] + + init(){} + + init(id: Int? = nil, name: String, numberoftests: Int = 1, isactive: Bool = true, createuserid: Int? = -1, createdate: Date? = nil, updateuserid: Int? = -1, updatedate: Date? = nil, item: mdlItem, specitems: [mdlSpecItem]?, templatecategoryitemspecs: [mdlTemplateCategoryItemSpec]?){ + self.id = id + self.name = name + self.numberoftests = numberoftests + self.isactive = isactive + self.createuserid = createuserid + self.createdate = createdate + self.updateuserid = updateuserid + self.updatedate = updatedate + self.$item.id = item.id! + self.$templatecategoryitemspecs.value = templatecategoryitemspecs + } +} +extension mdlSpec{ + struct Input: Content{ + let id: Int? + let name: String + let numberoftests: Int + let isactive: Bool + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + let item: mdlItem + let specitems: [mdlSpecItem]? + let templatecategoryitemspecs: [mdlTemplateCategoryItemSpec]? + } + + struct Output: Content{ + let id: Int? + let name: String + let numberoftests: Int + let isactive: Bool + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + let item: mdlItem + let specitems: [mdlSpecItem]? + let templatecategoryitemspecs: [mdlTemplateCategoryItemSpec]? + } +} +extension mdlSpec { + struct create: Migration{ + func prepare(on database: Database) -> EventLoopFuture { + return database.schema("Spec") + .field("id", .int, .identifier(auto: true)) + .field("name", .string) + .field("numberOfTests", .int) + .field("isActive", .bool) + .field("itemId", .int, .required, .references("Item", "id")) + .field("createUserId", .int) + .field("createDate", .datetime) + .field("updateUserId", .int) + .field("updateDate", .datetime) + .create() + } + func revert(on database: Database) -> EventLoopFuture { + database.schema("Spec").delete() + } + } + /* Uncomment if you need to seed the table. + struct seed: Migration { + func prepare(on database: Database) -> EventLoopFuture { + // 1 + let array: [<#Model#>] = [ + <#init#> + ] + // 2 + return array.map { obj in + obj.save(on: database) + } + .flatten(on: database.eventLoop) + } + + func revert(on database: Database) -> EventLoopFuture { + // 3 + <#Model#>.query(on: database).delete() + } + } + */ +} diff --git a/Sources/App/Models/s/SpecItem.swift b/Sources/App/Models/s/SpecItem.swift new file mode 100644 index 0000000..35467e5 --- /dev/null +++ b/Sources/App/Models/s/SpecItem.swift @@ -0,0 +1,120 @@ +// +// SpecItem.swift +// +// +// Created by Michiel Carman on 10/27/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class mdlSpecItem: Model, Content{ + struct Input: Content{ + let id: Int? + let name: String + let qualifier: String + let sortorder: Int + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + let spec: mdlSpec + let comparisontype: mdlComparisonType + let unit: mdlUnit + let specitemvalues: [mdlSpecItemValue] + } + + struct Output: Content{ + let id: Int? + let name: String + let qualifier: String + let sortorder: Int + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + let spec: mdlSpec + let comparisontype: mdlComparisonType + let unit: mdlUnit + let specitemvalues: [mdlSpecItemValue] + } + + 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: "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? + + @Parent(key: "specId") var spec: mdlSpec + @Parent(key: "comparisonTypeId") var comparisontype: mdlComparisonType + @Parent(key: "unitId") var unit: mdlUnit + + @Children(for: \.$specitem) var specitemvalues: [mdlSpecItemValue] + + init(){} + + init(id: Int? = nil, name: String, qualifier: String, sortorder: Int, createuserid: Int? = -1, createdate: Date? = nil, updateuserid: Int? = -1, updatedate: Date? = nil, spec: mdlSpec, comparisontype: mdlComparisonType, unit: mdlUnit){ + self.id = id + self.name = name + self.qualifier = qualifier + self.sortorder = sortorder + self.createuserid = createuserid + self.createdate = createdate + self.updateuserid = updateuserid + self.updatedate = updatedate + self.$spec.id = spec.id! + self.$comparisontype.id = comparisontype.id! + self.$unit.id = unit.id! + //self.$specitemvalues.value = specitemvalues + } +} + +extension mdlSpecItem { + struct create: Migration{ + func prepare(on database: Database) -> EventLoopFuture { + return database.schema("SpecItem") + .field("id", .int, .identifier(auto: true)) + .field("name", .string) + .field("qualifier", .string) + .field("sortOrder", .int) + .field("specId", .int, .required, .references("Spec", "id")) + .field("comparisonTypeId", .int, .required, .references("ComparisonType", "id")) + .field("unitId", .int, .required, .references("Unit", "id")) + .field("createUserId", .int) + .field("createDate", .datetime) + .field("updateUserId", .int) + .field("updateDate", .datetime) + .create() + } + func revert(on database: Database) -> EventLoopFuture { + database.schema("SpecItem").delete() + } + } + /* Uncomment if you need to seed the table. + struct seed: Migration { + func prepare(on database: Database) -> EventLoopFuture { + // 1 + let array: [<#Model#>] = [ + <#init#> + ] + // 2 + return array.map { obj in + obj.save(on: database) + } + .flatten(on: database.eventLoop) + } + + func revert(on database: Database) -> EventLoopFuture { + // 3 + <#Model#>.query(on: database).delete() + } + } + */ +} diff --git a/Sources/App/Models/s/SpecItemValue.swift b/Sources/App/Models/s/SpecItemValue.swift new file mode 100644 index 0000000..1e6237c --- /dev/null +++ b/Sources/App/Models/s/SpecItemValue.swift @@ -0,0 +1,112 @@ +// +// SpecItemValue.swift +// +// +// Created by Michiel Carman on 10/27/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +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: "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? + @Parent(key: "specItemId") var specitem: mdlSpecItem + @Parent(key: "valueTypeId") var valuetype: mdlValueType + + init(){} + + init(id: Int? = nil + , value: String + , sortorder: Int + , createuserid: Int? = -1 + , createdate: Date? = nil + , updateuserid: Int? = -1 + , updatedate: Date? = nil + , specitem: mdlSpecItem + , valuetype: mdlValueType + ){ + self.id = id + self.value = value + self.sortorder = sortorder + self.createuserid = createuserid + self.createdate = createdate + self.updateuserid = updateuserid + self.updatedate = updatedate + self.$specitem.id = specitem.id! + self.$valuetype.id = valuetype.id! + } +} +extension mdlSpecItemValue { + struct Input: Content{ + let id: Int? + let value: String + let sortorder: Int + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + let specitem: mdlSpecItem + let valuetype: mdlValueType + } + struct Output: Content{ + let id: Int? + let value: String + let sortorder: Int + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + let specitem: mdlSpecItem + let valuetype: mdlValueType + } + struct create: Migration{ + func prepare(on database: Database) -> EventLoopFuture { + return database.schema("SpecItemValue") + .field("id", .int, .identifier(auto: true)) + .field("value", .string) + .field("sortOrder", .int) + .field("specItemId", .int, .required, .references("SpecItem", "id")) + .field("valueTypeId", .int, .required, .references("ValueType", "id")) + .field("createUserId", .int) + .field("createDate", .datetime) + .field("updateUserId", .int) + .field("updateDate", .datetime) + .create() + } + func revert(on database: Database) -> EventLoopFuture { + database.schema("SpecItemValue").delete() + } + } + /* Uncomment if you need to seed the table. + struct seed: Migration { + func prepare(on database: Database) -> EventLoopFuture { + // 1 + let array: [<#Model#>] = [ + <#init#> + ] + // 2 + return array.map { obj in + obj.save(on: database) + } + .flatten(on: database.eventLoop) + } + + func revert(on database: Database) -> EventLoopFuture { + // 3 + <#Model#>.query(on: database).delete() + } + } + */ +} + diff --git a/Sources/App/Models/s/Status.swift b/Sources/App/Models/s/Status.swift new file mode 100644 index 0000000..efb1d75 --- /dev/null +++ b/Sources/App/Models/s/Status.swift @@ -0,0 +1,108 @@ +// +// Status.swift +// +// +// Created by Michiel Carman on 10/25/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class mdlStatus: Model, Content{ + struct Input: Content{ + let id: Int? + let name: String + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + let workorders: [mdlWorkOrder]? + } + + struct Output: Content{ + let id: Int? + let name: String + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + let workorders: [mdlWorkOrder]? + } + + static let schema = "Status" + + @ID(custom: "id", generatedBy: .database) var id: Int? + @Field(key: "name") var name: String + @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? + + @Siblings(through: mdlWorkOrderStatus.self, from: \.$status, to: \.$workorder) public var workorders: [mdlWorkOrder] + + + + init(){} + + init(name: String){ + self.name = name + self.createuserid = -1 + self.updateuserid = -1 + } + + init(id: Int? = nil, name: String, createuserid: Int? = -1, createdate: Date? = nil, updateuserid: Int? = -1, updatedate: Date? = nil, workorders: [mdlWorkOrder]?){ + self.id = id + self.name = name + self.createuserid = createuserid + self.createdate = createdate + self.updateuserid = updateuserid + self.updatedate = updatedate + self.$workorders.value = workorders + } +} + +extension mdlStatus { + struct create: Migration{ + func prepare(on database: Database) -> EventLoopFuture { + return database.schema("Status") + .field("id", .int, .identifier(auto: true)) + .field("name", .string) + .field("createUserId", .int) + .field("createDate", .datetime) + .field("updateUserId", .int) + .field("updateDate", .datetime) + .create() + } + func revert(on database: Database) -> EventLoopFuture { + database.schema("Status").delete() + } + } + struct seed: Migration { + func prepare(on database: Database) -> EventLoopFuture { + // 1 + let array: [mdlStatus] = [ + .init(name: "Open"), + .init(name: "Synced"), + .init(name: "Completed"), + .init(name: "Approved"), + .init(name: "Incomplete"), + .init(name: "Reassigned"), + .init(name: "Pending"), + .init(name: "Deleted") + ] + // 2 + return array.map { obj in + obj.save(on: database) + } + .flatten(on: database.eventLoop) + } + + func revert(on database: Database) -> EventLoopFuture { + // 3 + mdlStatus.query(on: database).delete() + } + } +} + diff --git a/Sources/App/Models/t/Template.swift b/Sources/App/Models/t/Template.swift new file mode 100644 index 0000000..a3fc332 --- /dev/null +++ b/Sources/App/Models/t/Template.swift @@ -0,0 +1,142 @@ +// +// Template.swift +// +// +// Created by Michiel Carman on 10/27/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class mdlTemplate: Model, Content{ + + static let schema = "Template" + + @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 + @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? + @Parent(key: "inspectionTypeId") var inspectiontype: mdlInspectionType + @Parent(key: "inspectionLevelId") var inspectionlevel: mdlInspectionLevel + @Parent(key: "customerId") var customer: mdlCustomer + @Parent(key: "productId") var product: mdlProduct + @Parent(key: "makeId") var make: mdlMake + @Parent(key: "modelId") var model: mdlModel + @Parent(key: "machineId") var machine: mdlMachine + + + @Children(for: \.$template) var categories: [mdlTemplateCategory] + + + + init(){} + + init(id: Int? = nil, name: String, description: String, isactive: Bool, createuserid: Int? = -1, createdate: Date? = nil, updateuserid: Int? = -1, updatedate: Date? = nil, inspectiontype: mdlInspectionType, inspectionlevel: mdlInspectionLevel, customer: mdlCustomer, product: mdlProduct, make: mdlMake, model: mdlModel, machine: mdlMachine, categories: [mdlTemplateCategory]?){ + self.id = id + self.name = name + self.description = description + self.isactive = isactive + self.createuserid = createuserid + self.createdate = createdate + self.updateuserid = updateuserid + self.updatedate = updatedate + self.$inspectiontype.id = inspectiontype.id! + self.$inspectionlevel.id = inspectiontype.id! + self.$customer.id = customer.id! + self.$product.id = product.id! + self.$make.id = make.id! + self.$model.id = model.id! + self.$machine.id = machine.id! + self.$categories.value = categories + } +} + +extension mdlTemplate { + struct Input: Content{ + let id: Int? + let name: String + let description: String + let isactive: Bool + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + let inspectiontype: mdlInspectionType + let inspectionlevel: mdlInspectionLevel + let customer: mdlCustomer + let product: mdlProduct + let make: mdlMake + let model: mdlModel + let machine: mdlMachine + let categories: [mdlTemplateCategory]? + } + + struct Output: Content{ + let id: Int? + let name: String + let description: String + let isactive: Bool + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + let inspectiontype: mdlInspectionType + let inspectionlevel: mdlInspectionLevel + let customer: mdlCustomer + let product: mdlProduct + let make: mdlMake + let model: mdlModel + let machine: mdlMachine + let categories: [mdlTemplateCategory]? + } + struct create: Migration{ + func prepare(on database: Database) -> EventLoopFuture { + return database.schema("Template") + .field("id", .int, .identifier(auto: true)) + .field("name", .string) + .field("description", .string) + .field("isActive", .bool) + .field("inspectionTypeId", .int, .references("InspectionType", "id")) + .field("inspectionLevelId", .int, .references("InspectionLevel", "id")) + .field("customerId", .int, .references("Customer", "id")) + .field("productId", .int, .references("Product", "id")) + .field("makeId", .int, .references("Make", "id")) + .field("modelId", .int, .references("Model", "id")) + .field("machineId", .int, .references("Machine", "id")) + .field("createUserId", .int) + .field("createDate", .datetime) + .field("updateUserId", .int) + .field("updateDate", .datetime) + .create() + } + func revert(on database: Database) -> EventLoopFuture { + database.schema("Template").delete() + } + } + /* Uncomment if you need to seed the table. + struct seed: Migration { + func prepare(on database: Database) -> EventLoopFuture { + // 1 + let array: [<#Model#>] = [ + <#init#> + ] + // 2 + return array.map { obj in + obj.save(on: database) + } + .flatten(on: database.eventLoop) + } + + func revert(on database: Database) -> EventLoopFuture { + // 3 + <#Model#>.query(on: database).delete() + } + } + */ +} diff --git a/Sources/App/Models/t/TemplateCategory.swift b/Sources/App/Models/t/TemplateCategory.swift new file mode 100644 index 0000000..2f7904c --- /dev/null +++ b/Sources/App/Models/t/TemplateCategory.swift @@ -0,0 +1,106 @@ +// +// File.swift +// +// +// Created by Michiel Carman on 10/27/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class mdlTemplateCategory: Model, Content{ + + static let schema = "TemplateCategory" + + @ID(custom: "id", generatedBy: .database) var id: Int? + @Parent(key: "templateId") var template: mdlTemplate + @Parent(key: "categoryId") var category: mdlCategory + @Field(key: "sortOrder") var sortorder: Int + @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: \.$templatecategory) var templatecategoryitems: [mdlTemplateCategoryItem] + + + + init(){} + + init(id: Int? = nil, template: mdlTemplate, category: mdlCategory, sortorder: Int = 0, createuserid: Int? = -1, createdate: Date? = nil, updateuserid: Int? = -1, updatedate: Date? = nil, templatecategoryitems: [mdlTemplateCategoryItem]?){ + self.id = id + self.$template.id = template.id! + self.$category.id = category.id! + self.sortorder = sortorder + self.createuserid = createuserid + self.createdate = createdate + self.updateuserid = updateuserid + self.updatedate = updatedate + self.$templatecategoryitems.value = templatecategoryitems + } +} + +extension mdlTemplateCategory { + struct Input: Content{ + let id: Int? + let template: mdlTemplate + let category: mdlCategory + let sortorder: Int + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + let templatecategoryitems: [mdlTemplateCategoryItem]? + } + + struct Output: Content{ + let id: Int? + let template: mdlTemplate + let category: mdlCategory + let sortorder: Int + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + let templatecategoryitems: [mdlTemplateCategoryItem]? + } + struct create: Migration{ + func prepare(on database: Database) -> EventLoopFuture { + return database.schema("TemplateCategory") + .field("id", .int, .identifier(auto: true)) + .field("templateId", .int, .required, .references("Template", "id")) + .field("categoryId", .int, .required, .references("Category", "id")) + .field("sortOrder", .int) + .field("createUserId", .int) + .field("createDate", .datetime) + .field("updateUserId", .int) + .field("updateDate", .datetime) + .create() + } + func revert(on database: Database) -> EventLoopFuture { + database.schema("TemplateCategory").delete() + } + } + /* Uncomment if you need to seed the table. + struct seed: Migration { + func prepare(on database: Database) -> EventLoopFuture { + // 1 + let array: [<#Model#>] = [ + <#init#> + ] + // 2 + return array.map { obj in + obj.save(on: database) + } + .flatten(on: database.eventLoop) + } + + func revert(on database: Database) -> EventLoopFuture { + // 3 + <#Model#>.query(on: database).delete() + } + } + */ +} diff --git a/Sources/App/Models/t/TemplateCategoryItem.swift b/Sources/App/Models/t/TemplateCategoryItem.swift new file mode 100644 index 0000000..ee3c1ea --- /dev/null +++ b/Sources/App/Models/t/TemplateCategoryItem.swift @@ -0,0 +1,103 @@ +// +// TemplateCategoryItem.swift +// +// +// Created by Michiel Carman on 10/27/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class mdlTemplateCategoryItem: Model, Content{ + + static let schema = "TemplateCategoryItem" + + @ID(custom: "id", generatedBy: .database) var id: Int? + @Parent(key: "templateCategoryId") var templatecategory: mdlTemplateCategory + @Parent(key: "itemId") var item: mdlItem + @Field(key: "sortOrder") var sortorder: Int + @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: \.$templatecategoryitem) var templatecategoryitemspecs: [mdlTemplateCategoryItemSpec] + + init(){} + + init(id: Int? = nil, templatecategory: mdlTemplateCategory, item: mdlItem, sortorder: Int = 0, createuserid: Int? = -1, createdate: Date? = nil, updateuserid: Int? = -1, updatedate: Date? = nil, templatecategoryitemspecs: [mdlTemplateCategoryItemSpec]?){ + self.id = id + self.$templatecategory.id = templatecategory.id! + self.$item.id = item.id! + self.sortorder = sortorder + self.createuserid = createuserid + self.createdate = createdate + self.updateuserid = updateuserid + self.updatedate = updatedate + self.$templatecategoryitemspecs.value = templatecategoryitemspecs + } +} +extension mdlTemplateCategoryItem { + struct Input: Content{ + let id: Int? + let templatecategory: mdlTemplateCategory + let item: mdlItem + let sortorder: Int + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + let templatecategoryitemspecs: [mdlTemplateCategoryItemSpec]? + } + + struct Output: Content{ + let id: Int? + let templatecategory: mdlTemplateCategory + let item: mdlItem + let sortorder: Int + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + let templatecategoryitemspecs: [mdlTemplateCategoryItemSpec]? + } + struct create: Migration{ + func prepare(on database: Database) -> EventLoopFuture { + return database.schema("TemplateCategoryItem") + .field("id", .int, .identifier(auto: true)) + .field("templateCategoryId", .int, .required, .references("TemplateCategory", "id")) + .field("itemId", .int, .required, .references("Item", "id")) + .field("sortOrder", .int) + .field("createUserId", .int) + .field("createDate", .datetime) + .field("updateUserId", .int) + .field("updateDate", .datetime) + .create() + } + func revert(on database: Database) -> EventLoopFuture { + database.schema("TemplateCategoryItem").delete() + } + } + /* Uncomment if you need to seed the table. + struct seed: Migration { + func prepare(on database: Database) -> EventLoopFuture { + // 1 + let array: [<#Model#>] = [ + <#init#> + ] + // 2 + return array.map { obj in + obj.save(on: database) + } + .flatten(on: database.eventLoop) + } + + func revert(on database: Database) -> EventLoopFuture { + // 3 + <#Model#>.query(on: database).delete() + } + } + */ +} diff --git a/Sources/App/Models/t/TemplateCategoryItemSpec.swift b/Sources/App/Models/t/TemplateCategoryItemSpec.swift new file mode 100644 index 0000000..71a788a --- /dev/null +++ b/Sources/App/Models/t/TemplateCategoryItemSpec.swift @@ -0,0 +1,98 @@ +// +// TemplateCategoryItemSpec.swift +// +// +// Created by Michiel Carman on 10/27/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class mdlTemplateCategoryItemSpec: Model, Content{ + + static let schema = "TemplateCategoryItemSpec" + + @ID(custom: "id", generatedBy: .database) var id: Int? + @Parent(key: "templateCategoryItemId") var templatecategoryitem: mdlTemplateCategoryItem + @Parent(key: "specId") var spec: mdlSpec + @Field(key: "sortOrder") var sortorder: Int + @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? + + init(){} + + init(id: Int? = nil, templatecategoryitem: mdlTemplateCategoryItem, spec: mdlSpec, sortorder: Int = 0, createuserid: Int? = -1, createdate: Date? = nil, updateuserid: Int? = -1, updatedate: Date? = nil){ + self.id = id + self.$templatecategoryitem.id = templatecategoryitem.id! + self.$spec.id = spec.id! + self.sortorder = sortorder + self.createuserid = createuserid + self.createdate = createdate + self.updateuserid = updateuserid + self.updatedate = updatedate + } +} +extension mdlTemplateCategoryItemSpec { + struct Input: Content{ + let id: Int? + let templatecategoryitem: mdlTemplateCategoryItem + let spec: mdlSpec + let sortorder: Int + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + } + + struct Output: Content{ + let id: Int? + let templatecategoryitem: mdlTemplateCategoryItem + let spec: mdlSpec + let sortorder: Int + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + } + struct create: Migration{ + func prepare(on database: Database) -> EventLoopFuture { + return database.schema("TemplateCategoryItemSpec") + .field("id", .int, .identifier(auto: true)) + .field("templateCategoryItemId", .int, .required, .references("TemplateCategoryItem", "id")) + .field("specId", .int, .required, .references("Spec", "id")) + .field("sortOrder", .int) + .field("createUserId", .int) + .field("createDate", .datetime) + .field("updateUserId", .int) + .field("updateDate", .datetime) + .create() + } + func revert(on database: Database) -> EventLoopFuture { + database.schema("TemplateCategoryItemSpec").delete() + } + } + /* Uncomment if you need to seed the table. + struct seed: Migration { + func prepare(on database: Database) -> EventLoopFuture { + // 1 + let array: [<#Model#>] = [ + <#init#> + ] + // 2 + return array.map { obj in + obj.save(on: database) + } + .flatten(on: database.eventLoop) + } + + func revert(on database: Database) -> EventLoopFuture { + // 3 + <#Model#>.query(on: database).delete() + } + } + */ +} diff --git a/Sources/App/Models/u/Unit.swift b/Sources/App/Models/u/Unit.swift new file mode 100644 index 0000000..485e390 --- /dev/null +++ b/Sources/App/Models/u/Unit.swift @@ -0,0 +1,135 @@ +// +// Unit.swift +// +// +// Created by Michiel Carman on 10/24/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class mdlUnit: Model, Content{ + struct Input: Content{ + let id: Int? + let name: String + let description: String + let isactive: Bool + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + let datatype: mdlDataType + let locations: [mdlLocation]? + let inspectioncategoryitemspecitems: [mdlInspectionCategoryItemSpecItem]? + } + + struct Output: Content{ + let id: Int? + let name: String + let description: String + let isactive: Bool + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + let datatype: mdlDataType + let locations: [mdlLocation]? + let inspectioncategoryitemspecitems: [mdlInspectionCategoryItemSpecItem]? + } + + static let schema = "Unit" + + @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 + @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? + + @Parent(key: "dataTypeId") var datatype: mdlDataType + + @Children(for: \.$unit) var locations: [mdlLocation] + @Children(for: \.$unit) var inspectioncategoryitemspecitems: [mdlInspectionCategoryItemSpecItem] + + init(){} + + init(id: Int? = nil){ + + self.id = id + } + + init(id: Int? = nil, name: String, description: String, isactive: Bool = true, createuserid: Int? = -1, createdate: Date? = nil, updateuserid: Int? = -1, updatedate: Date? = nil, datatype: mdlDataType, locations: [mdlLocation]?, inspectioncategoryitemspecitems: [mdlInspectionCategoryItemSpecItem]?){ + self.id = id + self.name = name + self.description = description + self.isactive = isactive + self.createuserid = createuserid + self.createdate = createdate + self.updateuserid = updateuserid + self.updatedate = updatedate + self.$datatype.id = datatype.id! + self.$locations.value = locations + self.$inspectioncategoryitemspecitems.value = inspectioncategoryitemspecitems + } +} + +extension mdlUnit { + struct create: Migration{ + func prepare(on database: Database) -> EventLoopFuture { + return database.schema("Unit") + .field("id", .int, .identifier(auto: true)) + .field("name", .string) + .field("description", .string) + .field("isActive", .bool) + .field("dataTypeId", .int, .required, .references("DataType", "id")) + .field("createUserId", .int) + .field("createDate", .datetime) + .field("updateUserId", .int) + .field("updateDate", .datetime) + .create() + } + func revert(on database: Database) -> EventLoopFuture { + database.schema("Unit").delete() + } + } + struct seed: Migration { + func prepare(on database: Database) -> EventLoopFuture { + // 1 + let array: [mdlUnit] = [ + .init(name: "in", description: "Inches", datatype: mdlDataType(id: 3), locations: [], inspectioncategoryitemspecitems: []), + .init(name: "Text", description: "Unit type for text based responses", datatype: mdlDataType(id: 1), locations: [], inspectioncategoryitemspecitems: []), + .init(name: "sec", description: "Seconds", datatype: mdlDataType(id: 3), locations: [], inspectioncategoryitemspecitems: []), + .init(name: "A", description: "Amps", datatype: mdlDataType(id: 3), locations: [], inspectioncategoryitemspecitems: []), + .init(name: "hrs", description: "Hours", datatype: mdlDataType(id: 3), locations: [], inspectioncategoryitemspecitems: []), + .init(name: "Date", description: "DateTime", datatype: mdlDataType(id: 4), locations: [], inspectioncategoryitemspecitems: []), + .init(name: "Bool", description: "Boolean", datatype: mdlDataType(id: 5), locations: [], inspectioncategoryitemspecitems: []), + .init(name: "String", description: "String", datatype: mdlDataType(id: 1), locations: [], inspectioncategoryitemspecitems: []), + .init(name: "Integer", description: "Integer", datatype: mdlDataType(id: 2), locations: [], inspectioncategoryitemspecitems: []), + .init(name: "Decimal", description: "Decimal", datatype: mdlDataType(id: 3), locations: [], inspectioncategoryitemspecitems: []), + .init(name: "Gallons", description: "Gallons", datatype: mdlDataType(id: 3), locations: [], inspectioncategoryitemspecitems: []), + .init(name: "Liters", description: "Liters", datatype: mdlDataType(id: 3), locations: [], inspectioncategoryitemspecitems: []), + .init(name: "mm", description: "millimeters", datatype: mdlDataType(id: 3), locations: [], inspectioncategoryitemspecitems: []), + .init(name: "32nds", description: "32nds", datatype: mdlDataType(id: 2), locations: [], inspectioncategoryitemspecitems: []), + .init(name: "R.P.M.", description: "Revolutions Per Minute", datatype: mdlDataType(id: 2), locations: [], inspectioncategoryitemspecitems: []), + .init(name: "PSI", description: "Pounds per Square Inch", datatype: mdlDataType(id: 3), locations: [], inspectioncategoryitemspecitems: []), + .init(name: "in^3", description: "Cubic Inches", datatype: mdlDataType(id: 3), locations: [], inspectioncategoryitemspecitems: []), + .init(name: "Amps", description: "Amperage", datatype: mdlDataType(id: 2), locations: [], inspectioncategoryitemspecitems: []), + .init(name: "%", description: "PERCENTAGE", datatype: mdlDataType(id: 2), locations: [], inspectioncategoryitemspecitems: []) + ] + // 2 + return array.map { obj in + obj.save(on: database) + } + .flatten(on: database.eventLoop) + } + + func revert(on database: Database) -> EventLoopFuture { + // 3 + mdlUnit.query(on: database).delete() + } + } +} diff --git a/Sources/App/Models/u/User.swift b/Sources/App/Models/u/User.swift new file mode 100644 index 0000000..a389028 --- /dev/null +++ b/Sources/App/Models/u/User.swift @@ -0,0 +1,153 @@ +// +// User.swift +// +// +// Created by Michiel Carman on 10/24/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +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: "activationCode") var activationcode: 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? + + @Parent(key: "divisionId") var division: mdlDivision + //@Parent(key: "locationId") var location: mdlLocation + //@Parent(key: "gateId") var gate: mdlGate + //@Children(for: \.$user) var workorderusers: [mdlWorkOrderUser] + @Siblings(through: mdlWorkOrderUser.self, from: \.$user, to: \.$workorder) public var workorders: [mdlWorkOrder] + + + @Siblings(through: mdlXUserRole.self, from: \.$user, to: \.$role) public var roles: [mdlRole] + @Siblings(through: mdlXUserModule.self, from: \.$user, to: \.$module) public var modules: [mdlModule] + @Siblings(through: mdlInspectionUser.self, from: \.$user, to: \.$inspection) public var inspections: [mdlInspection] + @Siblings(through: mdlLocation.self, from: \.$user, to: \.$labsetting) public var labsettings: [mdlLabSetting] + + + + + init(){} + + init(id: Int? = nil){ + self.id = id + } + + init(id: Int? = nil, number: String, firstname: String, lastname: String, username: String, password: String, activationcode: String, isactive: Bool = true, createuserid: Int? = -1, createdate: Date? = nil, updateuserid: Int? = -1, updatedate: Date? = nil, division: mdlDivision, roles: [mdlRole]?, modules: [mdlModule]?, workorderusers: [mdlWorkOrder]?, inspections: [mdlInspection]?, labsettings: [mdlLabSetting]?){ + self.id = id + self.number = number + self.firstname = firstname + self.lastname = lastname + self.username = username + self.password = password + self.activationcode = activationcode + self.isactive = isactive + self.createuserid = createuserid + self.createdate = createdate + self.updateuserid = updateuserid + self.updatedate = updatedate + + self.$division.id = division.id! + + self.$roles.value = roles + self.$modules.value = modules + self.$workorders.value = workorderusers + self.$inspections.value = inspections + self.$labsettings.value = labsettings + } +} + +extension mdlUser { + struct Input: Content{ + let id: Int? + let number: String + let firstname: String + let lastname: String + let username: String + let password: String + let activationcode: String + let isactive: Bool + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + let division: mdlDivision + let inspections: [mdlInspection]? + let roles: [mdlRole]? + let modules: [mdlModule]? + let workorderusers: [mdlWorkOrder]? + let labsettings: [mdlLabSetting]? + } + struct Output: Content{ + let id: Int? + let number: String + let firstname: String + let lastname: String + let username: String + let password: String + let activationcode: String + let isactive: Bool + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + let division: mdlDivision + let inspections: [mdlInspection]? + let roles: [mdlRole]? + let modules: [mdlModule]? + let workorderusers: [mdlWorkOrder]? + let labsettings: [mdlLabSetting]? + } + struct create: Migration{ + func prepare(on database: Database) -> EventLoopFuture { + return 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("activationCode", .string) + .field("isActive", .bool) + .field("createUserId", .int) + .field("createDate", .datetime) + .field("updateUserId", .int) + .field("updateDate", .datetime) + .field("divisionId", .int, .required, .references("Division", "id")) + //.field("gateId", .int, .references("Gate", "id")) + .create() + } + func revert(on database: Database) -> EventLoopFuture { + database.schema("User").delete() + } + } + struct seed: Migration{ + func prepare(on database: Database) -> EventLoopFuture { + let array: [mdlUser] = [ + .init(id: -1, number: "0000", firstname: "System", lastname: "Admin", username: "sysadmin", password: "p@$$w0rd", activationcode: "", isactive: true, createuserid: -1, updateuserid: -1, division: mdlDivision(id: -1), roles: [], modules: [], workorderusers: [], inspections: [], labsettings: []) + ] + return array.map{obj in obj.save(on: database) + } + .flatten(on: database.eventLoop) + } + func revert(on database: Database) -> EventLoopFuture { + mdlUser.query(on: database).delete() + } + } +} diff --git a/Sources/App/Models/u/UserDefinedCode.swift b/Sources/App/Models/u/UserDefinedCode.swift new file mode 100644 index 0000000..5f430b4 --- /dev/null +++ b/Sources/App/Models/u/UserDefinedCode.swift @@ -0,0 +1,117 @@ +// +// UserDefinedCode.swift +// +// +// Created by Michiel Carman on 10/26/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class mdlUserDefinedCode: Model, Content{ + + static let schema = "UserDefinedCode" + + @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 + @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: \.$code) var items: [mdlItem] + @Children(for: \.$userdefinedcode) var inspectioncategoryitems: [mdlInspectionCategoryItem] + + init(){} + + init(name: String, description: String){ + self.name = name + self.description = description + self.isactive = true + self.createuserid = -1 + self.updateuserid = -1 + } + + init(id: Int? = nil, name: String, desription: String, isactive: Bool = true, createuserid: Int? = -1, createdate: Date? = nil, updateuserid: Int? = -1, updatedate: Date? = nil, items: [mdlItem], inspectioncategoryitems: [mdlInspectionCategoryItem]){ + self.id = id + self.name = name + self.description = desription + self.isactive = isactive + self.createuserid = createuserid + self.createdate = createdate + self.updateuserid = updateuserid + self.updatedate = updatedate + self.$items.value = items + self.$inspectioncategoryitems.value = inspectioncategoryitems + } +} +extension mdlUserDefinedCode{ + struct Input: Content{ + let id: Int? + let name: String + let description: String + let isactive: Bool + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + let items: [mdlItem] + let inspectioncategoryitems: [mdlInspectionCategoryItem] + } + + struct Output: Content{ + let id: Int? + let name: String + let description: String + let isactive: Bool + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + let items: [mdlItem] + let inspectioncategoryitems: [mdlInspectionCategoryItem] + } +} +extension mdlUserDefinedCode { + struct create: Migration{ + func prepare(on database: Database) -> EventLoopFuture { + return database.schema("UserDefinedCode") + .field("id", .int, .identifier(auto: true)) + .field("name", .string) + .field("description", .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("UserDefinedCode").delete() + } + } + // Uncomment if you need to seed the table. + struct seed: Migration { + func prepare(on database: Database) -> EventLoopFuture { + // 1 + let array: [mdlUserDefinedCode] = [ + .init(name: "Default", description: "Catch all for startup and incase its not used") + ] + // 2 + return array.map { obj in + obj.save(on: database) + } + .flatten(on: database.eventLoop) + } + + func revert(on database: Database) -> EventLoopFuture { + // 3 + mdlUserDefinedCode.query(on: database).delete() + } + } + +} diff --git a/Sources/App/Models/v/ValueType.swift b/Sources/App/Models/v/ValueType.swift new file mode 100644 index 0000000..ae5203e --- /dev/null +++ b/Sources/App/Models/v/ValueType.swift @@ -0,0 +1,112 @@ +// +// ValueType.swift +// +// +// Created by Michiel Carman on 10/25/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class mdlValueType: Model, Content{ + struct Input: Content{ + let id: Int? + let name: String + let description: String + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + let specitemvalues: [mdlSpecItemValue]? + let inspectioncategoryitemspecitemvalues: [mdlInspectionCategoryItemSpecItemValue]? + } + + struct Output: Content{ + let id: Int? + let name: String + let description: String + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + let specitemvalues: [mdlSpecItemValue]? + let inspectioncategoryitemspecitemvalues: [mdlInspectionCategoryItemSpecItemValue]? + } + + static let schema = "ValueType" + + @ID(custom: "id", generatedBy: .database) var id: Int? + @Field(key: "name") var name: String + @Field(key: "description") var description: String + @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: \.$valuetype) var specitemvalues: [mdlSpecItemValue] + @Children(for: \.$valuetype) var inspectioncategoryitemspecitemvalues: [mdlInspectionCategoryItemSpecItemValue] + + init(){} + + init(name: String, description: String){ + self.name = name + self.description = description + self.createuserid = -1 + self.updateuserid = -1 + } + + init(id: Int? = nil, name: String, description: String, createuserid: Int? = -1, createdate: Date? = nil, updateuserid: Int? = -1, updatedate: Date? = nil, specitemvalues: [mdlSpecItemValue]?, inspectioncategoryitemspecitemvalues: [mdlInspectionCategoryItemSpecItemValue]?){ + self.id = id + self.name = name + self.description = description + self.createuserid = createuserid + self.createdate = createdate + self.updateuserid = updateuserid + self.updatedate = updatedate + self.$specitemvalues.value = specitemvalues + self.$inspectioncategoryitemspecitemvalues.value = inspectioncategoryitemspecitemvalues + } +} + +extension mdlValueType { + struct create: Migration{ + func prepare(on database: Database) -> EventLoopFuture { + return database.schema("ValueType") + .field("id", .int, .identifier(auto: true)) + .field("name", .string) + .field("description", .string) + .field("createUserId", .int) + .field("createDate", .datetime) + .field("updateUserId", .int) + .field("updateDate", .datetime) + .create() + } + func revert(on database: Database) -> EventLoopFuture { + database.schema("ValueType").delete() + } + } + struct seed: Migration { + func prepare(on database: Database) -> EventLoopFuture { + // 1 + let array: [mdlValueType] = [ + .init(name: "Base", description: ""), + .init(name: "Max", description: ""), + .init(name: "Min", description: ""), + .init(name: "Variance", description: "") + ] + // 2 + return array.map { obj in + obj.save(on: database) + } + .flatten(on: database.eventLoop) + } + + func revert(on database: Database) -> EventLoopFuture { + // 3 + mdlValueType.query(on: database).delete() + } + } +} + diff --git a/Sources/App/Models/v/Viscosity.swift b/Sources/App/Models/v/Viscosity.swift new file mode 100644 index 0000000..f18ce9a --- /dev/null +++ b/Sources/App/Models/v/Viscosity.swift @@ -0,0 +1,110 @@ +// +// File.swift +// +// +// Created by Michiel Carman on 10/27/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +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: "sortOrder") var sortorder: Int + @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? + + @Siblings(through: mdlXFluidViscosity.self, from: \.$viscosity, to: \.$fluid) public var fluids: [mdlFluid] + + + + init(){} + + init(id: Int? = nil, name: String, description: String, sortorder: Int, isactive: Bool, createuserid: Int? = -1, createdate: Date? = nil, updateuserid: Int? = -1, updatedate: Date? = nil, fluids: [mdlFluid]?){ + self.id = id + self.name = name + self.description = description + self.sortorder = sortorder + self.isactive = isactive + self.createuserid = createuserid + self.createdate = createdate + self.updateuserid = updateuserid + self.updatedate = updatedate + self.$fluids.value = fluids + } +} +extension mdlViscosity { + struct Input: Content{ + let id: Int? + let name: String + let description: String + let sortorder: Int + let isactive: Bool + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + let fluids: [mdlFluid]? + } + + struct Output: Content{ + let id: Int? + let name: String + let description: String + let sortorder: Int + let isactive: Bool + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + let fluids: [mdlFluid]? + } + struct create: Migration{ + func prepare(on database: Database) -> EventLoopFuture { + return database.schema("Viscosity") + .field("id", .int, .identifier(auto: true)) + .field("name", .string) + .field("description", .string) + .field("sortOrder", .int) + .field("isActive", .bool) + .field("createUserId", .int) + .field("createDate", .datetime) + .field("updateUserId", .int) + .field("updateDate", .datetime) + .create() + } + func revert(on database: Database) -> EventLoopFuture { + database.schema("Viscosity").delete() + } + } + /* Uncomment if you need to seed the table. + struct seed: Migration { + func prepare(on database: Database) -> EventLoopFuture { + // 1 + let array: [<#Model#>] = [ + <#init#> + ] + // 2 + return array.map { obj in + obj.save(on: database) + } + .flatten(on: database.eventLoop) + } + + func revert(on database: Database) -> EventLoopFuture { + // 3 + <#Model#>.query(on: database).delete() + } + } + */ +} diff --git a/Sources/App/Models/w/WokrOrder.swift b/Sources/App/Models/w/WokrOrder.swift new file mode 100644 index 0000000..7368183 --- /dev/null +++ b/Sources/App/Models/w/WokrOrder.swift @@ -0,0 +1,171 @@ +// +// WorkOrder.swift +// +// +// Created by Michiel Carman on 10/27/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +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: "specialInstruction") var specialinstruction: String + @Field(key: "scheduledStartDate") var scheduledstartdate: Date + @Field(key: "scheduledEndDate") var scheduledenddate: Date + @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? + @Parent(key: "customerId") var customer: mdlCustomer + @Parent(key: "machineId") var machine: mdlMachine + @Parent(key: "priorityId") var priority: mdlPriority + @Parent(key: "reasonId") var reason: mdlReason + @Parent(key: "incompleteReasonId") var incompletereason: mdlIncompleteReason + //@Children(for: \.$workorder) var users: [mdlWorkOrderUser] + @Children(for: \.$workorder) var workorderstatuses: [mdlWorkOrderStatus] + @Children(for: \.$workorder) var inspections: [mdlInspection] + @Children(for: \.$workorder) var consumptions: [mdlConsumption] + @Children(for: \.$workorder) var notes: [mdlNote] + @Children(for: \.$workorder) var files: [mdlFile] + @Children(for: \.$workorder) var signatures: [mdlSignature] + @Children(for: \.$workorder) var parts: [mdlWorkOrderPart] + + @Siblings(through: mdlWorkOrderUser.self, from: \.$workorder, to: \.$user) public var userss: [mdlUser] + + + @Siblings(through: mdlWorkOrderStatus.self, from: \.$workorder, to: \.$status) public var statuses: [mdlStatus] + + + + init(){} + + init(id: Int? = nil, number: String, specialinstruction: String, scheduledstartdate: Date, scheduledenddate: Date, createuserid: Int? = -1, createdate: Date? = nil, updateuserid: Int? = -1, updatedate: Date? = nil, customer: mdlCustomer, machine: mdlMachine, priority: mdlPriority, reason: mdlReason, incompletereason: mdlIncompleteReason, users: [mdlUser]?, workorderstatuses: [mdlWorkOrderStatus]?, inspections: [mdlInspection]?, consumptions: [mdlConsumption]?, notes: [mdlNote]?, files: [mdlFile]?, signatures: [mdlSignature]?, parts: [mdlWorkOrderPart]?, statuses: [mdlStatus]?){ + self.id = id + self.number = number + self.specialinstruction = specialinstruction + self.scheduledstartdate = scheduledstartdate + self.scheduledenddate = scheduledenddate + self.createuserid = createuserid + self.createdate = createdate + self.updateuserid = updateuserid + self.updatedate = updatedate + self.$customer.id = customer.id! + self.$machine.id = machine.id! + self.$priority.id = priority.id! + self.$reason.id = reason.id! + self.$incompletereason.id = incompletereason.id! + self.$userss.value = users + self.$workorderstatuses.value = workorderstatuses + self.$inspections.value = inspections + self.$consumptions.value = consumptions + self.$notes.value = notes + self.$files.value = files + self.$signatures.value = signatures + self.$parts.value = parts + self.$statuses.value = statuses + } +} +extension mdlWorkOrder { + struct Input: Content{ + let id: Int? + let number: String + let specialinstruction: String + let scheduledstartdate: Date + let scheduledenddate: Date + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + let customer: mdlCustomer + let machine: mdlMachine + let priority: mdlPriority + let reason: mdlReason + let incompletereason: mdlIncompleteReason + let workorderstatuses: [mdlWorkOrderStatus]? + let users: [mdlUser]? + let inspections: [mdlInspection]? + let consumptions: [mdlConsumption]? + let notes: [mdlNote]? + let files: [mdlFile]? + let signatures: [mdlSignature]? + let parts: [mdlWorkOrderPart]? + let statuses: [mdlStatus]? + } + + struct Output: Content{ + let id: Int? + let number: String + let specialinstruction: String + let scheduledstartdate: Date + let scheduledenddate: Date + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + let customer: mdlCustomer + let machine: mdlMachine + let priority: mdlPriority + let reason: mdlReason + let incompletereason: mdlIncompleteReason + let workorderstatuses: [mdlWorkOrderStatus]? + let users: [mdlUser]? + let inspections: [mdlInspection]? + let consumptions: [mdlConsumption]? + let notes: [mdlNote]? + let files: [mdlFile]? + let signatures: [mdlSignature]? + let parts: [mdlWorkOrderPart]? + let statuses: [mdlStatus]? + } + struct create: Migration{ + func prepare(on database: Database) -> EventLoopFuture { + return database.schema("WorkOrder") + .field("id", .int, .identifier(auto: true)) + .field("number", .string) + .field("specialInstruction", .string) + .field("scheduledStartDate", .datetime) + .field("scheduledEndDate", .datetime) + .field("customerId", .int, .required, .references("Customer", "id")) + .field("machineId", .int, .required, .references("Machine", "id")) + .field("priorityId", .int, .references("Priority", "id")) + .field("reasonId", .int, .references("Reason", "id")) + .field("incompleteReasonId", .int, .references("IncompleteReason", "id")) + + .field("createUserId", .int) + .field("createDate", .datetime) + .field("updateUserId", .int) + .field("updateDate", .datetime) + .create() + } + func revert(on database: Database) -> EventLoopFuture { + database.schema("WorkOrder").delete() + } + } + /* Uncomment if you need to seed the table. + struct seed: Migration { + func prepare(on database: Database) -> EventLoopFuture { + // 1 + let array: [<#Model#>] = [ + <#init#> + ] + // 2 + return array.map { obj in + obj.save(on: database) + } + .flatten(on: database.eventLoop) + } + + func revert(on database: Database) -> EventLoopFuture { + // 3 + <#Model#>.query(on: database).delete() + } + } + */ +} diff --git a/Sources/App/Models/w/WorkOrderPart.swift b/Sources/App/Models/w/WorkOrderPart.swift new file mode 100644 index 0000000..f2a6b4a --- /dev/null +++ b/Sources/App/Models/w/WorkOrderPart.swift @@ -0,0 +1,82 @@ +// +// File.swift +// +// +// Created by Michiel Carman on 10/29/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class mdlWorkOrderPart: Model, Content{ + struct input{ + let id: Int? + let refdocnumber: String + let partnumber: String + let partname: String + let qtyissued: Decimal + let qtyreturned: Decimal + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + let workorder: mdlWorkOrder + } + + struct output{ + let id: Int? + let refdocnumber: String + let partnumber: String + let partname: String + let qtyissued: Decimal + let qtyreturned: Decimal + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + let workorder: mdlWorkOrder + } + + static let schema = "WorkOrderPart" + + @ID(custom: "id", generatedBy: .database) var id: Int? + @Field(key: "refDocNumber") var refdocnumber: String + @Field(key: "partNumber") var partnumber: String + @Field(key: "partName") var partname: String + @Field(key: "qtyIssed") var qtyissued: Decimal + @Field(key: "qtyReturned") var qtyreturned: Decimal + @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? + @Parent(key: "workOrderId") var workorder: mdlWorkOrder + + init(){} + + init(id: Int? = nil + , refdocnumber: String + , partnumber: String + , partname: String + , qtyissued: Decimal + , qtyreturned: Decimal + , createuserid: Int? = -1 + , createdate: Date? = nil + , updateuserid: Int? = -1 + , updatedate: Date? = nil + , workorder: mdlWorkOrder + ){ + self.id = id + self.refdocnumber = refdocnumber + self.partnumber = partnumber + self.partname = partname + self.qtyissued = qtyissued + self.qtyreturned = qtyreturned + self.createuserid = createuserid + self.createdate = createdate + self.updateuserid = updateuserid + self.updatedate = updatedate + self.$workorder.id = workorder.id! + } +} diff --git a/Sources/App/Models/w/WorkOrderStatus.swift b/Sources/App/Models/w/WorkOrderStatus.swift new file mode 100644 index 0000000..beb0221 --- /dev/null +++ b/Sources/App/Models/w/WorkOrderStatus.swift @@ -0,0 +1,103 @@ +// +// File.swift +// +// +// Created by Michiel Carman on 10/27/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class mdlWorkOrderStatus: Model, Content{ + + static let schema = "WorkOrderStatus" + + @ID(custom: "id", generatedBy: .database) var id: Int? + @Parent(key: "statusId") var status: mdlStatus + @Parent(key: "workOrderId") var workorder: mdlWorkOrder + @Field(key: "date") var date: Date? + @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? + + init(){} + + init(id: Int? = nil, status: mdlStatus, workorder: mdlWorkOrder, date: Date = Date(), isactive: Bool = true, createuserid: Int? = -1, createdate: Date? = nil, updateuserid: Int? = -1, updatedate: Date? = nil){ + self.id = id + self.$status.id = status.id! + self.$workorder.id = workorder.id! + self.date = date + self.isactive = isactive + self.createuserid = createuserid + self.createdate = createdate + self.updateuserid = updateuserid + self.updatedate = updatedate + } +} +extension mdlWorkOrderStatus { + struct Input: Content{ + let id: Int? + let workorder: mdlWorkOrder + let status: mdlStatus + let date: Date + let isactive: Bool + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + } + + struct Output: Content{ + let id: Int? + let workorder: mdlWorkOrder + let status: mdlStatus + let date: Date + let isactive: Bool + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + } + struct create: Migration{ + func prepare(on database: Database) -> EventLoopFuture { + return database.schema("WorkOrderStatus") + .field("id", .int, .identifier(auto: true)) + .field("statusId", .int, .required, .references("Status", "id")) + .field("workOrderId", .int, .required, .references("WorkOrder", "id")) + .field("date", .datetime) + .field("isActive", .bool) + .field("createUserId", .int) + .field("createDate", .datetime) + .field("updateUserId", .int) + .field("updateDate", .datetime) + .create() + } + func revert(on database: Database) -> EventLoopFuture { + database.schema("WorkOrderStatus").delete() + } + } + /* Uncomment if you need to seed the table. + struct seed: Migration { + func prepare(on database: Database) -> EventLoopFuture { + // 1 + let array: [<#Model#>] = [ + <#init#> + ] + // 2 + return array.map { obj in + obj.save(on: database) + } + .flatten(on: database.eventLoop) + } + + func revert(on database: Database) -> EventLoopFuture { + // 3 + <#Model#>.query(on: database).delete() + } + } + */ +} diff --git a/Sources/App/Models/w/WorkOrderUser.swift b/Sources/App/Models/w/WorkOrderUser.swift new file mode 100644 index 0000000..bbaa832 --- /dev/null +++ b/Sources/App/Models/w/WorkOrderUser.swift @@ -0,0 +1,99 @@ +// +// File.swift +// +// +// Created by Michiel Carman on 10/27/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class mdlWorkOrderUser: Model, Content{ + + static let schema = "WorkOrderUser" + + @ID(custom: "id", generatedBy: .database) var id: Int? + @Parent(key: "userId") var user: mdlUser + @Parent(key: "workOrderId") var workorder: mdlWorkOrder + @Field(key: "assigned") var assigned: 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? + + init(){} + + init(id: Int? = nil, user: mdlUser, workorder: mdlWorkOrder, assigned: Bool = false, createuserid: Int? = -1, createdate: Date? = nil, updateuserid: Int? = -1, updatedate: Date? = nil){ + self.id = id + self.$user.id = user.id! + self.$workorder.id = workorder.id! + self.assigned = assigned + self.createuserid = createuserid + self.createdate = createdate + self.updateuserid = updateuserid + self.updatedate = updatedate + } +} +extension mdlWorkOrderUser { + struct Input: Content{ + let id: Int? + let user: mdlUser + let workorder: mdlWorkOrder + let assigned: Bool + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + } + + struct Output: Content{ + let id: Int? + let user: mdlUser + let workorder: mdlWorkOrder + let assigned: Bool + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + } + struct create: Migration{ + func prepare(on database: Database) -> EventLoopFuture { + return database.schema("WorkOrderUser") + .field("id", .int, .identifier(auto: true)) + .field("userId", .int, .required, .references("User", "id")) + .field("workOrderId", .int, .required, .references("WorkOrder", "id")) + .field("assigned", .bool) + + .field("createUserId", .int) + .field("createDate", .datetime) + .field("updateUserId", .int) + .field("updateDate", .datetime) + .create() + } + func revert(on database: Database) -> EventLoopFuture { + database.schema("WorkOrderUser").delete() + } + } + /* Uncomment if you need to seed the table. + struct seed: Migration { + func prepare(on database: Database) -> EventLoopFuture { + // 1 + let array: [<#Model#>] = [ + <#init#> + ] + // 2 + return array.map { obj in + obj.save(on: database) + } + .flatten(on: database.eventLoop) + } + + func revert(on database: Database) -> EventLoopFuture { + // 3 + <#Model#>.query(on: database).delete() + } + } + */ +} diff --git a/Sources/App/Models/x/XCustomerMachine.swift b/Sources/App/Models/x/XCustomerMachine.swift new file mode 100644 index 0000000..1c27c4c --- /dev/null +++ b/Sources/App/Models/x/XCustomerMachine.swift @@ -0,0 +1,100 @@ +// +// XCustomerMachine.swift +// +// +// Created by Michiel Carman on 10/26/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class mdlXCustomerMachine: Model, Content{ + + static let schema = "XCustomerMachine" + + @ID(custom: "id", generatedBy: .database) var id: Int? + @Parent(key: "customerId") var customer: mdlCustomer + @Parent(key: "machineId") var machine: mdlMachine + @Field(key: "createUserId" ) var createuserid: Int? + @Field(key: "isActive") var isactive: Bool + @Timestamp(key: "createDate", on: .create) var createdate: Date? + @Timestamp(key: "updateDate", on: .update) var updatedate: Date? + @Field(key: "updateUserId") var updateuserid: Int? + + + init(){} + + init(id: Int? = nil, customer: mdlCustomer, machine: mdlMachine, createuserid: Int? = -1, isactive: Bool = false, createdate: Date? = nil, updatedate: Date? = nil, updateuserid: Int? = nil){ + self.id = id + self.$customer.id = customer.id! + self.$machine.id = machine.id! + self.createuserid = createuserid + self.isactive = isactive + self.createdate = createdate + } +} +extension mdlXCustomerMachine{ + struct Input: Content{ + let id: Int? + let customer: mdlCustomer + let machine: mdlMachine + let createdate: Date? + let isactive: Bool + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + } + + struct Output: Content{ + let id: Int? + let customer: mdlCustomer + let machine: mdlMachine + let createdate: Date? + let isactive: Bool + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + } +} +extension mdlXCustomerMachine { + struct create: Migration{ + func prepare(on database: Database) -> EventLoopFuture { + return database.schema("XCustomerMachine") + .field("id", .int, .identifier(auto: true)) + .field("customerId", .int, .required, .references("Customer", "id")) + .field("machineId", .int, .required, .references("Machine", "id")) + .field("isActive", .bool) + .field("createUserId", .int) + .field("createDate", .datetime) + .field("updateUserId", .int) + .field("updateDate", .datetime) + .create() + } + func revert(on database: Database) -> EventLoopFuture { + database.schema("XCustomerMachine").delete() + } + } + /* Uncomment if you need to seed the table. + struct seed: Migration { + func prepare(on database: Database) -> EventLoopFuture { + // 1 + let array: [<#Model#>] = [ + <#init#> + ] + // 2 + return array.map { obj in + obj.save(on: database) + } + .flatten(on: database.eventLoop) + } + + func revert(on database: Database) -> EventLoopFuture { + // 3 + <#Model#>.query(on: database).delete() + } + } + */ +} + diff --git a/Sources/App/Models/x/XFluidViscosity.swift b/Sources/App/Models/x/XFluidViscosity.swift new file mode 100644 index 0000000..6369473 --- /dev/null +++ b/Sources/App/Models/x/XFluidViscosity.swift @@ -0,0 +1,98 @@ +// +// XFluidViscosity.swift +// +// +// Created by Michiel Carman on 10/27/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class mdlXFluidViscosity: Model, Content{ + + static let schema = "XFluidViscosity" + + @ID(custom: "id", generatedBy: .database) var id: Int? + @Parent(key: "fluidId") var fluid: mdlFluid + @Parent(key: "viscosityId") var viscosity: mdlViscosity + @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? + @Field(key: "sortOrder") var sortorder: Int + + init(){} + + init(id: Int? = nil, fluid: mdlFluid, viscosity: mdlViscosity, createuserid: Int? = -1, createdate: Date? = nil, updateuserid: Int? = -1, updatedate: Date? = nil, sortorder: Int){ + self.id = id + self.$fluid.id = fluid.id! + self.$viscosity.id = viscosity.id! + self.createuserid = createuserid + self.createdate = createdate + self.updateuserid = updateuserid + self.updatedate = updatedate + self.sortorder = sortorder + } +} +extension mdlXFluidViscosity { + struct Input: Content{ + let id: Int? + let fluid: mdlFluid + let viscosity: mdlViscosity + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + let sortorder: Int + } + + struct Output: Content{ + let id: Int? + let fluid: mdlFluid + let viscosity: mdlViscosity + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + let sortorder: Int + } + struct create: Migration{ + func prepare(on database: Database) -> EventLoopFuture { + return database.schema("XFluidViscosity") + .field("id", .int, .identifier(auto: true)) + .field("fluidId", .int, .required, .references("Fluid", "id")) + .field("viscosityId", .int, .required, .references("Viscosity", "id")) + .field("sortOrder", .int) + .field("createUserId", .int) + .field("createDate", .datetime) + .field("updateUserId", .int) + .field("updateDate", .datetime) + .create() + } + func revert(on database: Database) -> EventLoopFuture { + database.schema("XFluidViscosity").delete() + } + } + /* Uncomment if you need to seed the table. + struct seed: Migration { + func prepare(on database: Database) -> EventLoopFuture { + // 1 + let array: [<#Model#>] = [ + <#init#> + ] + // 2 + return array.map { obj in + obj.save(on: database) + } + .flatten(on: database.eventLoop) + } + + func revert(on database: Database) -> EventLoopFuture { + // 3 + <#Model#>.query(on: database).delete() + } + } + */ +} diff --git a/Sources/App/Models/x/XItemResponseType.swift b/Sources/App/Models/x/XItemResponseType.swift new file mode 100644 index 0000000..872f6da --- /dev/null +++ b/Sources/App/Models/x/XItemResponseType.swift @@ -0,0 +1,96 @@ +// +// File.swift +// +// +// Created by Michiel Carman on 10/26/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class mdlXItemResponseType: Model, Content{ + + static let schema = "XItemResponseType" + + @ID(custom: "id", generatedBy: .database) var id: Int? + @Parent(key: "itemId") var item: mdlItem + @Parent(key: "responseTypeId") var responsetype: mdlResponseType + @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? + + init(){} + + init(id: Int? = nil, item: mdlItem, responsetype: mdlResponseType, createuserid: Int? = -1, createdate: Date? = nil, updateuserid: Int? = -1, updatedate: Date? = nil){ + self.id = id + self.$item.id = item.id! + self.$responsetype.id = responsetype.id! + self.createuserid = createuserid + self.createdate = createdate + self.updateuserid = updateuserid + self.updatedate = updatedate + } +} +extension mdlXItemResponseType{ + struct Input: Content{ + let id: Int? + let item: mdlItem + let responsetype: mdlResponseType + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + } + + struct Output: Content{ + let id: Int? + let item: mdlItem + let responsetype: mdlResponseType + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + } +} +extension mdlXItemResponseType { + struct create: Migration{ + func prepare(on database: Database) -> EventLoopFuture { + return database.schema("XItemResponseType") + .field("id", .int, .identifier(auto: true)) + .field("itemId", .int, .required, .references("Item", "id")) + .field("responseTypeId", .int, .required, .references("ResponseType", "id")) + + .field("createUserId", .int) + .field("createDate", .datetime) + .field("updateUserId", .int) + .field("updateDate", .datetime) + .create() + } + func revert(on database: Database) -> EventLoopFuture { + database.schema("XItemResponseType").delete() + } + } + /* Uncomment if you need to seed the table. + struct seed: Migration { + func prepare(on database: Database) -> EventLoopFuture { + // 1 + let array: [<#Model#>] = [ + <#init#> + ] + // 2 + return array.map { obj in + obj.save(on: database) + } + .flatten(on: database.eventLoop) + } + + func revert(on database: Database) -> EventLoopFuture { + // 3 + <#Model#>.query(on: database).delete() + } + } + */ +} diff --git a/Sources/App/Models/x/XUserModule.swift b/Sources/App/Models/x/XUserModule.swift new file mode 100644 index 0000000..c6658ea --- /dev/null +++ b/Sources/App/Models/x/XUserModule.swift @@ -0,0 +1,108 @@ +// +// XUserModule.swift +// +// +// Created by Michiel Carman on 10/27/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class mdlXUserModule: Model, Content{ + struct Input: Content{ + let id: Int? + let user: mdlUser + let module: mdlModule + let isactive: Bool + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + } + + struct Output: Content{ + let id: Int? + let user: mdlUser + let module: mdlModule + let isactive: Bool + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + } + + static let schema = "XUserModule" + + @ID(custom: "id", generatedBy: .database) var id: Int? + @Parent(key: "userId") var user: mdlUser + @Parent(key: "moduleId") var module: mdlModule + @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? + + init(){} + + init(user: mdlUser, module: mdlModule) { + self.$user.id = user.id! + self.$module.id = module.id! + self.isactive = true + self.createuserid = -1 + self.updateuserid = -1 + } + + init(id: Int? = nil, user: mdlUser, module: mdlModule, isactive: Bool = false, createuserid: Int? = -1, createdate: Date? = nil, updateuserid: Int? = -1, updatedate: Date? = nil){ + self.id = id + self.$user.id = user.id! + self.$module.id = module.id! + self.isactive = isactive + self.createuserid = createuserid + self.createdate = createdate + self.updateuserid = updateuserid + self.updatedate = updatedate + } +} + +extension mdlXUserModule { + struct create: Migration{ + func prepare(on database: Database) -> EventLoopFuture { + return database.schema("XUserModule") + .field("id", .int, .identifier(auto: true)) + .field("userId", .int, .required, .references("User", "id")) + .field("moduleId", .int, .required, .references("Module", "id")) + .field("isActive", .bool) + .field("createUserId", .int) + .field("createDate", .datetime) + .field("updateUserId", .int) + .field("updateDate", .datetime) + .create() + } + func revert(on database: Database) -> EventLoopFuture { + database.schema("XUserModule").delete() + } + } + struct seed: Migration { + func prepare(on database: Database) -> EventLoopFuture { + // 1 + let array: [mdlXUserModule] = [ + .init(user: mdlUser(id: -1), module: mdlModule(id: 1)), + .init(user: mdlUser(id: -1), module: mdlModule(id: 2)), + .init(user: mdlUser(id: -1), module: mdlModule(id: 3)), + .init(user: mdlUser(id: -1), module: mdlModule(id: 4)) + ] + // 2 + return array.map { obj in + obj.save(on: database) + } + .flatten(on: database.eventLoop) + } + + func revert(on database: Database) -> EventLoopFuture { + // 3 + mdlXUserModule.query(on: database).delete() + } + } +} diff --git a/Sources/App/Models/x/XUserRole.swift b/Sources/App/Models/x/XUserRole.swift new file mode 100644 index 0000000..8866d41 --- /dev/null +++ b/Sources/App/Models/x/XUserRole.swift @@ -0,0 +1,93 @@ +// +// XUserRole.swift +// +// +// Created by Michiel Carman on 10/24/21. +// + +import Foundation +import Vapor +import Fluent +import FluentPostgresDriver + +final class mdlXUserRole: Model, Content{ + struct Input: Content{ + let id: Int? + let user: mdlUser + let role: mdlRole + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + } + + struct Output: Content{ + let id: Int? + let user: mdlUser + let role: mdlRole + let createdate: Date? + let createuserid: Int? + let updatedate: Date? + let updateuserid: Int? + } + + static let schema = "XUserRole" + + @ID(custom: "id", generatedBy: .database) var id: Int? + @Parent(key: "userId") var user: mdlUser + @Parent(key: "roleId") var role: mdlRole + @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? + + init(){} + + init(id: Int? = nil, user: mdlUser, role: mdlRole, createuserid: Int? = -1, createdate: Date? = nil, updateuserid: Int? = -1, updatedate: Date? = nil){ + self.id = id + self.$user.id = user.id! + self.$role.id = role.id! + self.createuserid = createuserid + self.createdate = createdate + self.updateuserid = updateuserid + self.updatedate = updatedate + } +} + +extension mdlXUserRole { + struct create: Migration{ + func prepare(on database: Database) -> EventLoopFuture { + return database.schema("XUserRole") + .field("id", .int, .identifier(auto: true)) + .field("userId", .int) + .field("roleId", .int) + + .field("createUserId", .int) + .field("createDate", .datetime) + .field("updateUserId", .int) + .field("updateDate", .datetime) + .create() + } + func revert(on database: Database) -> EventLoopFuture { + database.schema("XUserRole").delete() + } + } + struct seed: Migration { + func prepare(on database: Database) -> EventLoopFuture { + // 1 + let array: [mdlXUserRole] = [ + .init( user: mdlUser(id: -1), role: mdlRole(id: -1), createuserid: -1, updateuserid: -1) + ] + // 2 + return array.map { obj in + obj.save(on: database) + } + .flatten(on: database.eventLoop) + } + + func revert(on database: Database) -> EventLoopFuture { + // 3 + mdlXUserRole.query(on: database).delete() + } + } +} diff --git a/Sources/App/configure.swift b/Sources/App/configure.swift new file mode 100644 index 0000000..2fa5305 --- /dev/null +++ b/Sources/App/configure.swift @@ -0,0 +1,124 @@ +import Fluent +import FluentPostgresDriver +import Vapor + +// configures your application +public func configure(_ app: Application) throws { + // uncomment to serve files from /Public folder + app.middleware.use(FileMiddleware(publicDirectory: app.directory.publicDirectory)) + + app.databases.use(.postgres(hostname: "localhost", username: "michielcarman", password: "mCarman2019", database: "connexion"), as: .psql) + //Log + app.logger.logLevel = .debug + + app.migrations.add(mdlDataType.create())//Controller Created + app.migrations.add(mdlDataType.seed())//Controller Created + app.migrations.add(mdlUnit.create())//Controller Created + app.migrations.add(mdlUnit.seed())//Controller Created + app.migrations.add(mdlFuelLevel.create())//Controller Created + app.migrations.add(mdlFuelLevel.seed())//Controller Created + app.migrations.add(mdlDivision.create())//Controller Created + app.migrations.add(mdlDivision.seed())//Controller Created + app.migrations.add(mdlLabSetting.create())//Controller Created + app.migrations.add(mdlLabSetting.seed())//Controller Created + app.migrations.add(mdlCustomer.create())//Controller Created + app.migrations.add(mdlUser.create())//Controller Created + app.migrations.add(mdlUser.seed())//Controller Created + app.migrations.add(mdlLocation.create())//Controller Created + app.migrations.add(mdlLocation.seed())//Controller Created + app.migrations.add(mdlGate.create())//Controller Created + app.migrations.add(mdlGate.seed())//Controller Created + app.migrations.add(mdlRole.create())//Controller Created + app.migrations.add(mdlRole.seed())//Controller Created + app.migrations.add(mdlXUserRole.create())//Controller Created + app.migrations.add(mdlXUserRole.seed())//Controller Created + app.migrations.add(mdlInputType.create())//Controller Created + app.migrations.add(mdlInputType.seed())//Controller Created + app.migrations.add(mdlComparisonType.create())//Controller Created + app.migrations.add(mdlComparisonType.seed())//Controller Created + app.migrations.add(mdlCompartment.create())//Controller Created + app.migrations.add(mdlCompartmentGroup.create())//Controller Created + app.migrations.add(mdlCompartmentLocation.create())//Controller Created + app.migrations.add(mdlIncompleteReason.create())//Controller Created + app.migrations.add(mdlJobSite.create())//Controller Created + app.migrations.add(mdlJobSite.seed())//Controller Created + app.migrations.add(mdlLevel.create())//Controller Created + app.migrations.add(mdlLicense.create())//Controller Created + app.migrations.add(mdlNoteType.create())//Controller Created + app.migrations.add(mdlNoteType.seed())//Controller Created + app.migrations.add(mdlPriority.create())//Controller Created + app.migrations.add(mdlPriority.seed())//Controller Created + app.migrations.add(mdlReason.create())//Controller Created + app.migrations.add(mdlRepairType.create())//Controller Created + app.migrations.add(mdlRepairType.seed())//Controller Created + app.migrations.add(mdlSignatureType.create())//Controller Created + app.migrations.add(mdlSignatureType.seed())//Controller Created + app.migrations.add(mdlStatus.create())//Controller Created + app.migrations.add(mdlStatus.seed())//Controller Created + app.migrations.add(mdlValueType.create())//Controller Created + app.migrations.add(mdlValueType.seed())//Controller Created + app.migrations.add(mdlModule.create())//Controller Created + app.migrations.add(mdlModule.seed())//Controller Created + app.migrations.add(mdlContact.create())//Controller Created + app.migrations.add(mdlContactMethod.create())//Controller Created + app.migrations.add(mdlXUserModule.create())//Controller Created + app.migrations.add(mdlXUserModule.seed())//Controller Created + app.migrations.add(mdlProduct.create())//Controller Created + app.migrations.add(mdlMake.create())//Controller Created + app.migrations.add(mdlModel.create())//Controller Created + app.migrations.add(mdlMachineType.create())//Controller Created + app.migrations.add(mdlMachine.create())//Controller Created + app.migrations.add(mdlMachineNumber.create())//Controller Created + app.migrations.add(mdlMachineMeter.create())//Controller Created + app.migrations.add(mdlXCustomerMachine.create())//Controller Created + app.migrations.add(mdlResponseType.create())//Controller Created + app.migrations.add(mdlUserDefinedCode.create())//Controller Created + app.migrations.add(mdlUserDefinedCode.seed())//Controller Created + app.migrations.add(mdlCategory.create())//Controller Created + app.migrations.add(mdlItem.create())//Controller Created + app.migrations.add(mdlXItemResponseType.create())//Controller Created + app.migrations.add(mdlSpec.create())//Controller Created + app.migrations.add(mdlSpecItem.create())//Controller Created + app.migrations.add(mdlSpecItemValue.create())//Controller Created + app.migrations.add(mdlFluid.create())//Controller Created + app.migrations.add(mdlViscosity.create())//Controller Created + app.migrations.add(mdlXFluidViscosity.create())//Controller Created + app.migrations.add(mdlInspectionType.create())//Controller Created + app.migrations.add(mdlInspectionLevel.create())//Controller Created + app.migrations.add(mdlPart.create())//Controller Created + app.migrations.add(mdlTemplate.create())//Controller Created + app.migrations.add(mdlTemplateCategory.create())//Controller Created + app.migrations.add(mdlTemplateCategoryItem.create())//Controller Created + app.migrations.add(mdlTemplateCategoryItemSpec.create())//Controller Created + app.migrations.add(mdlWorkOrder.create())//Controller Created + app.migrations.add(mdlWorkOrderStatus.create())//Controller Created + app.migrations.add(mdlWorkOrderUser.create())//Controller Created + app.migrations.add(mdlInspection.create())//Controller Created + app.migrations.add(mdlInspectionCategory.create())//Controller Created + app.migrations.add(mdlInspectionCategoryItem.create())//Controller Created + app.migrations.add(mdlInspectionCategoryItemResponseType.create())//Controller Created + app.migrations.add(mdlInspectionCategoryItemSpec.create())//Controller Created + app.migrations.add(mdlInspectionCategoryItemSpecItem.create())//Controller Created + app.migrations.add(mdlInspectionCategoryItemSpecItemTest.create())//Controller Created + app.migrations.add(mdlInspectionCategoryItemSpecItemValue.create())//Controller Created + app.migrations.add(mdlOilSample.create())//Controller Created + app.migrations.add(mdlOilSampleItem.create())//Controller Created + app.migrations.add(mdlOilSampleLabel.create())//Controller Created + app.migrations.add(mdlOilSampleLabel.seed())//Controller Created + app.migrations.add(mdlCPCLTemplate.create())//Controller Created + app.migrations.add(mdlCPCLTemplate.seed())//Controller Created + app.migrations.add(mdlCPCLTemplateCommand.create())//Controller Created + app.migrations.add(mdlCPCLTemplateCommand.seed())//Controller Created + app.migrations.add(mdlInspectionUser.create())//Controller Created + app.migrations.add(mdlNote.create())//Controller Created + app.migrations.add(mdlSignature.create())//Controller Created + app.migrations.add(mdlFile.create()) + + app.migrations.add(mdlFile.update001()) + // Automatically run migrations + try app.autoMigrate().wait() + // register routes + try routes(app) + +} + diff --git a/Sources/App/routes.swift b/Sources/App/routes.swift new file mode 100644 index 0000000..3060ad3 --- /dev/null +++ b/Sources/App/routes.swift @@ -0,0 +1,88 @@ +import Fluent +import Vapor + +func routes(_ app: Application) throws { + app.routes.caseInsensitive = true + app.get { req in + return "Connexion Services" + } + + let apiRoutes = app.grouped("api", "v1") + try apiRoutes.register(collection: DataTypeCtrl()) + try apiRoutes.register(collection: DivisionCtrl()) + try apiRoutes.register(collection: UnitCtrl()) + try apiRoutes.register(collection: LabSettingCtrl()) + try apiRoutes.register(collection: GateCtrl()) + try apiRoutes.register(collection: LocationCtrl()) + try apiRoutes.register(collection: UserCtrl()) + try apiRoutes.register(collection: FuelLevelCtrl()) + try apiRoutes.register(collection: CustomerCtrl()) + try apiRoutes.register(collection: RoleCtrl()) + try apiRoutes.register(collection: XUserRoleCtrl()) + try apiRoutes.register(collection: InputTypeCtrl()) + try apiRoutes.register(collection: ComparisonTypeCtrl())// app.register(collection: ComparisonTypeCtrl()) + try apiRoutes.register(collection: CompartmentCtrl()) + try apiRoutes.register(collection: CompartmentGroupCtrl()) + try apiRoutes.register(collection: CompartmentLocationCtrl()) + try apiRoutes.register(collection: IncompleteReasonCtrl()) + try apiRoutes.register(collection: JobSiteCtrl()) + try apiRoutes.register(collection: LevelCtrl()) + try apiRoutes.register(collection: LicenseCtrl()) + try apiRoutes.register(collection: NoteTypeCtrl()) + try apiRoutes.register(collection: PriorityCtrl()) + try apiRoutes.register(collection: ReasonCtrl()) + try apiRoutes.register(collection: RepairTypeCtrl()) + try apiRoutes.register(collection: SignatureTypeCtrl()) + try apiRoutes.register(collection: StatusCtrl()) + try apiRoutes.register(collection: ValueTypeCtrl()) + try apiRoutes.register(collection: ModuleCtrl()) + try apiRoutes.register(collection: ContactCtrl()) + try apiRoutes.register(collection: ContactMethodCtrl()) + try apiRoutes.register(collection: XUserModuleCtrl()) + try apiRoutes.register(collection: ProductCtrl()) + try apiRoutes.register(collection: MakeCtrl()) + try apiRoutes.register(collection: ModelCtrl()) + try apiRoutes.register(collection: MachineTypeCtrl()) + try apiRoutes.register(collection: MachineCtrl()) + try apiRoutes.register(collection: MachineNumberCtrl()) + try apiRoutes.register(collection: MachineMeterCtrl()) + try apiRoutes.register(collection: XCustomerMachineCtrl()) + try apiRoutes.register(collection: ResponseTypeCtrl()) + try apiRoutes.register(collection: UserDefinedCodeCtrl()) + try apiRoutes.register(collection: CategoryCtrl()) + try apiRoutes.register(collection: ItemCtrl()) + try apiRoutes.register(collection: XItemResponseTypeCtrl()) + try apiRoutes.register(collection: SpecCtrl()) + try apiRoutes.register(collection: SpecItemCtrl()) + try apiRoutes.register(collection: SpecItemValueCtrl()) + try apiRoutes.register(collection: FluidCtrl()) + try apiRoutes.register(collection: ViscosityCtrl()) + try apiRoutes.register(collection: XFluidViscosityCtrl()) + try apiRoutes.register(collection: InspectionTypeCtrl()) + try apiRoutes.register(collection: InspectionLevelCtrl()) + try apiRoutes.register(collection: PartCtrl()) + try apiRoutes.register(collection: TemplateCtrl()) + try apiRoutes.register(collection: TemplateCategoryCtrl()) + try apiRoutes.register(collection: TemplateCategoryItemCtrl()) + try apiRoutes.register(collection: TemplateCategoryItemSpecCtrl()) + try apiRoutes.register(collection: WorkOrderCtrl()) + try apiRoutes.register(collection: WorkOrderStatusCtrl()) + try apiRoutes.register(collection: WorkOrderUserCtrl()) + try apiRoutes.register(collection: InspectionCtrl()) + try apiRoutes.register(collection: InspectionCategoryCtrl()) + try apiRoutes.register(collection: InspectionCategoryItemCtrl()) + try apiRoutes.register(collection: InspectionCategoryItemResponseTypeCtrl()) + try apiRoutes.register(collection: InspectionCategoryItemSpecCtrl()) + try apiRoutes.register(collection: InspectionCategoryItemSpecItemCtrl()) + try apiRoutes.register(collection: InspectionCategoryItemSpecItemTestCtrl()) + try apiRoutes.register(collection: InspectionCategoryItemSpecItemValueCtrl()) + try apiRoutes.register(collection: OilSampleCtrl()) + try apiRoutes.register(collection: OilSampleItemCtrl()) + try apiRoutes.register(collection: OilSampleLabelCtrl()) + try apiRoutes.register(collection: CPCLTemplateCtrl()) + try apiRoutes.register(collection: CPCLTemplateCommandCtrl()) + try apiRoutes.register(collection: InspectionUserCtrl()) + try apiRoutes.register(collection: NoteCtrl()) + try apiRoutes.register(collection: SignatureCtrl()) + try apiRoutes.register(collection: FileCtrl()) +} diff --git a/Sources/Run/main.swift b/Sources/Run/main.swift new file mode 100644 index 0000000..373be5f --- /dev/null +++ b/Sources/Run/main.swift @@ -0,0 +1,9 @@ +import App +import Vapor + +var env = try Environment.detect() +try LoggingSystem.bootstrap(from: &env) +let app = Application(env) +defer { app.shutdown() } +try configure(app) +try app.run() diff --git a/Tests/AppTests/AppTests.swift b/Tests/AppTests/AppTests.swift new file mode 100644 index 0000000..9817630 --- /dev/null +++ b/Tests/AppTests/AppTests.swift @@ -0,0 +1,15 @@ +@testable import App +import XCTVapor + +final class AppTests: XCTestCase { + func testHelloWorld() throws { + let app = Application(.testing) + defer { app.shutdown() } + try configure(app) + + try app.test(.GET, "hello", afterResponse: { res in + XCTAssertEqual(res.status, .ok) + XCTAssertEqual(res.body.string, "Hello, world!") + }) + } +} diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..4e6979e --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,74 @@ +# Docker Compose file for Vapor +# +# Install Docker on your system to run and test +# your Vapor app in a production-like environment. +# +# Note: This file is intended for testing and does not +# implement best practices for a production deployment. +# +# Learn more: https://docs.docker.com/compose/reference/ +# +# Build images: docker-compose build +# Start app: docker-compose up app +# Start database: docker-compose up db +# Run migrations: docker-compose run migrate +# Stop all: docker-compose down (add -v to wipe db) +# +version: '3.7' + +volumes: + db_data: + +x-shared_environment: &shared_environment + LOG_LEVEL: ${LOG_LEVEL:-debug} + DATABASE_HOST: db + DATABASE_NAME: vapor_database + DATABASE_USERNAME: vapor_username + DATABASE_PASSWORD: vapor_password + +services: + app: + image: :latest + build: + context: . + environment: + <<: *shared_environment + depends_on: + - db + ports: + - '8080:8080' + # user: '0' # uncomment to run as root for testing purposes even though Dockerfile defines 'vapor' user. + command: ["serve", "--env", "production", "--hostname", "0.0.0.0", "--port", "8080"] + migrate: + image: :latest + build: + context: . + environment: + <<: *shared_environment + depends_on: + - db + command: ["migrate", "--yes"] + deploy: + replicas: 0 + revert: + image: :latest + build: + context: . + environment: + <<: *shared_environment + depends_on: + - db + command: ["migrate", "--revert", "--yes"] + deploy: + replicas: 0 + db: + image: postgres:12-alpine + volumes: + - db_data:/var/lib/postgresql/data/pgdata + environment: + PGDATA: /var/lib/postgresql/data/pgdata + POSTGRES_USER: vapor_username + POSTGRES_PASSWORD: vapor_password + POSTGRES_DB: vapor_database + ports: + - '5432:5432'