Advertisement
Guest User

Swift Core Store Tables

a guest
Sep 9th, 2023
43
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Swift 4.28 KB | Source Code | 0 0
  1. // Abstract
  2.     class ATimeOnly : CoreStoreObject {
  3.         func timeIsValid() -> Bool {
  4.             guard let timeStart = self.timeStart, let timeEnd = self.timeEnd else {
  5.                 return false
  6.             }
  7.            
  8.             return timeEnd > timeStart
  9.         }
  10.        
  11.         func timeLengthInMins() -> Int? {
  12.             guard let timeStart = self.timeStart, let timeEnd = self.timeEnd else {
  13.                 return nil
  14.             }
  15.            
  16.             let timeDuration = timeEnd.timeIntervalSince(timeStart)
  17.             let timeMinutes = Int(timeDuration / 60)
  18.            
  19.             return timeMinutes
  20.         }
  21.        
  22.         @Field.Stored("timeStart")
  23.         var timeStart: Date?
  24.        
  25.         @Field.Stored("timeEnd")
  26.         var timeEnd: Date?
  27.     }
  28.    
  29.    
  30.     // Abstract
  31.     class ARepeatDayTime : ATimeOnly {
  32.        
  33.         @Field.Coded("days", coder: FieldCoders.Json.self)
  34.         var days: [String]? = []
  35.        
  36.         @Field.Stored("repeatEndDay")
  37.         var repeatStartDay: Date?
  38.        
  39.         @Field.Stored("repeatEndDay")
  40.         var repeatEndDay: Date?
  41.        
  42.         @Field.Stored("repeats")
  43.         var repeats: String = "No"
  44.        
  45.         @Field.Stored("date")
  46.         var date: Date?
  47.        
  48.        
  49.        
  50.     }
  51.  
  52.    
  53.     // Employee Controlled
  54.     class Employee: CoreStoreObject {
  55.        
  56.         @Field.Stored("name")
  57.         var name: String = ""
  58.        
  59.         @Field.Stored("minHoursNeeded")
  60.         var minHoursNeeded: Int8 = 20
  61.        
  62.         @Field.Stored("maxHoursAllowed")
  63.         var maxHoursAllowed: Int8 = 40
  64.        
  65.         @Field.Stored("isKeyHolder")
  66.         var isKeyHolder: Bool = false
  67.        
  68.         @Field.Stored("isTraining")
  69.         var isTraining: Bool = false
  70.        
  71.         @Field.Stored("isAdmin")
  72.         var isAdmin: Bool = false
  73.        
  74.        
  75.         // User Controlled
  76.         @Field.Relationship("timeFrames", inverse: \.$employee)
  77.         var timeFrames: Set<EmployeeTimeFrame>
  78.        
  79.         @Field.Relationship("employeeShifts", inverse: \.$employee)
  80.         var employeeShifts: EmployeeShift?
  81.     }
  82.    
  83.     // Repeat DayTime
  84.     // Employee Controlled
  85.     class EmployeeTimeFrame: ARepeatDayTime {
  86.        
  87.         @Field.Stored("wantWork")
  88.         var wantWork: Int8 = 3
  89.        
  90.         @Field.Relationship("employee")
  91.         var employee: Employee?
  92.     }
  93.    
  94.     // Repeat DayTime
  95.     // User Controlled
  96.     class StationSchedule: ARepeatDayTime {
  97.        
  98.         @Field.Relationship("station")
  99.         var station: Station?
  100.        
  101.         @Field.Relationship("employeeShifts", inverse: \.$stationSchedule)
  102.         var employeeShifts: Set<EmployeeShift>
  103.        
  104.         @Field.Relationship("employeesNeeded", inverse: \.$stationSchedule)
  105.         var employeesNeeded: Array<StationEmployeeNeeded>
  106.     }
  107.    
  108.     // Time Only
  109.     // User Controlled
  110.     class StationEmployeeNeeded : ATimeOnly {
  111.        
  112.         @Field.Stored("amount")
  113.         var amount: Int8 = 0
  114.        
  115.         @Field.Relationship("stationSchedule")
  116.         var stationSchedule: StationSchedule?
  117.     }
  118.    
  119.     // Time Only
  120.     // Completly Dynamic
  121.     class EmployeeBreak: ATimeOnly {
  122.        
  123.         // Dynamic
  124.         @Field.Stored("breakType")
  125.         var breakType: String = "S"
  126.        
  127.         // Dynamic
  128.         @Field.Relationship("employeeShift")
  129.         var employeeShift: EmployeeShift?
  130.     }
  131.    
  132.     // Time Only
  133.     // Completey Dynamic
  134.     class EmployeeShift: ATimeOnly {
  135.        
  136.         // Dynamic
  137.         @Field.Relationship("employeeBreaks", inverse: \.$employeeShift)
  138.         var employeeBreaks: Set<EmployeeBreak>
  139.        
  140.         // Dynamic
  141.         @Field.Relationship("employee")
  142.         var employee: Employee?
  143.        
  144.         @Field.Relationship("stationSchedule")
  145.         var stationSchedule: StationSchedule?
  146.     }
  147.    
  148.    
  149.     // User Controlled
  150.     class Station: CoreStoreObject {
  151.        
  152.         @Field.Stored("stationName")
  153.         var stationName: String = ""
  154.        
  155.         @Field.Stored("maxEmployees")
  156.         var maxEmployees: Int8 = 0
  157.        
  158.         @Field.Relationship("stationSchedule", inverse: \.$station)
  159.         var stationSchedule: Set<StationSchedule>
  160.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement