260 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			Swift
		
	
	
	
	
	
			
		
		
	
	
			260 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			Swift
		
	
	
	
	
	
// Generated using the ObjectBox Swift Generator — https://objectbox.io
 | 
						|
// DO NOT EDIT
 | 
						|
 | 
						|
// swiftlint:disable all
 | 
						|
import ObjectBox
 | 
						|
import Foundation
 | 
						|
 | 
						|
// MARK: - Entity metadata
 | 
						|
 | 
						|
 | 
						|
extension PlaybackTracking: ObjectBox.__EntityRelatable {
 | 
						|
    internal typealias EntityType = PlaybackTracking
 | 
						|
 | 
						|
    internal var _id: EntityId<PlaybackTracking> {
 | 
						|
        return EntityId<PlaybackTracking>(self.id.value)
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
extension PlaybackTracking: ObjectBox.EntityInspectable {
 | 
						|
    internal typealias EntityBindingType = PlaybackTrackingBinding
 | 
						|
 | 
						|
    /// Generated metadata used by ObjectBox to persist the entity.
 | 
						|
    internal static var entityInfo = ObjectBox.EntityInfo(name: "PlaybackTracking", id: 1)
 | 
						|
 | 
						|
    internal static var entityBinding = EntityBindingType()
 | 
						|
 | 
						|
    fileprivate static func buildEntity(modelBuilder: ObjectBox.ModelBuilder) throws {
 | 
						|
        let entityBuilder = try modelBuilder.entityBuilder(for: PlaybackTracking.self, id: 1, uid: 3505126452256778496)
 | 
						|
        try entityBuilder.addProperty(name: "id", type: PropertyType.long, flags: [.id], id: 1, uid: 3015742136611980288)
 | 
						|
        try entityBuilder.addProperty(name: "audioContentId", type: PropertyType.long, id: 2, uid: 4514028351567224064)
 | 
						|
        try entityBuilder.addProperty(name: "totalDuration", type: PropertyType.long, id: 3, uid: 2774692953804315136)
 | 
						|
        try entityBuilder.addProperty(name: "startPosition", type: PropertyType.long, id: 4, uid: 4685945140397464320)
 | 
						|
        try entityBuilder.addProperty(name: "isFree", type: PropertyType.bool, id: 5, uid: 3695738940226634752)
 | 
						|
        try entityBuilder.addProperty(name: "isPreview", type: PropertyType.bool, id: 6, uid: 3540290081935639552)
 | 
						|
        try entityBuilder.addProperty(name: "endPosition", type: PropertyType.long, id: 7, uid: 536664180525729280)
 | 
						|
        try entityBuilder.addProperty(name: "playDateTime", type: PropertyType.string, id: 8, uid: 6331873187329186816)
 | 
						|
 | 
						|
        try entityBuilder.lastProperty(id: 8, uid: 6331873187329186816)
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
extension PlaybackTracking {
 | 
						|
    /// Generated entity property information.
 | 
						|
    ///
 | 
						|
    /// You may want to use this in queries to specify fetch conditions, for example:
 | 
						|
    ///
 | 
						|
    ///     box.query { PlaybackTracking.id == myId }
 | 
						|
    internal static var id: Property<PlaybackTracking, Id, Id> { return Property<PlaybackTracking, Id, Id>(propertyId: 1, isPrimaryKey: true) }
 | 
						|
    /// Generated entity property information.
 | 
						|
    ///
 | 
						|
    /// You may want to use this in queries to specify fetch conditions, for example:
 | 
						|
    ///
 | 
						|
    ///     box.query { PlaybackTracking.audioContentId > 1234 }
 | 
						|
    internal static var audioContentId: Property<PlaybackTracking, Int, Void> { return Property<PlaybackTracking, Int, Void>(propertyId: 2, isPrimaryKey: false) }
 | 
						|
    /// Generated entity property information.
 | 
						|
    ///
 | 
						|
    /// You may want to use this in queries to specify fetch conditions, for example:
 | 
						|
    ///
 | 
						|
    ///     box.query { PlaybackTracking.totalDuration > 1234 }
 | 
						|
    internal static var totalDuration: Property<PlaybackTracking, Int, Void> { return Property<PlaybackTracking, Int, Void>(propertyId: 3, isPrimaryKey: false) }
 | 
						|
    /// Generated entity property information.
 | 
						|
    ///
 | 
						|
    /// You may want to use this in queries to specify fetch conditions, for example:
 | 
						|
    ///
 | 
						|
    ///     box.query { PlaybackTracking.startPosition > 1234 }
 | 
						|
    internal static var startPosition: Property<PlaybackTracking, Int, Void> { return Property<PlaybackTracking, Int, Void>(propertyId: 4, isPrimaryKey: false) }
 | 
						|
    /// Generated entity property information.
 | 
						|
    ///
 | 
						|
    /// You may want to use this in queries to specify fetch conditions, for example:
 | 
						|
    ///
 | 
						|
    ///     box.query { PlaybackTracking.isFree == true }
 | 
						|
    internal static var isFree: Property<PlaybackTracking, Bool, Void> { return Property<PlaybackTracking, Bool, Void>(propertyId: 5, isPrimaryKey: false) }
 | 
						|
    /// Generated entity property information.
 | 
						|
    ///
 | 
						|
    /// You may want to use this in queries to specify fetch conditions, for example:
 | 
						|
    ///
 | 
						|
    ///     box.query { PlaybackTracking.isPreview == true }
 | 
						|
    internal static var isPreview: Property<PlaybackTracking, Bool, Void> { return Property<PlaybackTracking, Bool, Void>(propertyId: 6, isPrimaryKey: false) }
 | 
						|
    /// Generated entity property information.
 | 
						|
    ///
 | 
						|
    /// You may want to use this in queries to specify fetch conditions, for example:
 | 
						|
    ///
 | 
						|
    ///     box.query { PlaybackTracking.endPosition > 1234 }
 | 
						|
    internal static var endPosition: Property<PlaybackTracking, Int?, Void> { return Property<PlaybackTracking, Int?, Void>(propertyId: 7, isPrimaryKey: false) }
 | 
						|
    /// Generated entity property information.
 | 
						|
    ///
 | 
						|
    /// You may want to use this in queries to specify fetch conditions, for example:
 | 
						|
    ///
 | 
						|
    ///     box.query { PlaybackTracking.playDateTime.startsWith("X") }
 | 
						|
    internal static var playDateTime: Property<PlaybackTracking, String, Void> { return Property<PlaybackTracking, String, Void>(propertyId: 8, isPrimaryKey: false) }
 | 
						|
 | 
						|
    fileprivate func __setId(identifier: ObjectBox.Id) {
 | 
						|
        self.id = Id(identifier)
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
extension ObjectBox.Property where E == PlaybackTracking {
 | 
						|
    /// Generated entity property information.
 | 
						|
    ///
 | 
						|
    /// You may want to use this in queries to specify fetch conditions, for example:
 | 
						|
    ///
 | 
						|
    ///     box.query { .id == myId }
 | 
						|
 | 
						|
    internal static var id: Property<PlaybackTracking, Id, Id> { return Property<PlaybackTracking, Id, Id>(propertyId: 1, isPrimaryKey: true) }
 | 
						|
 | 
						|
    /// Generated entity property information.
 | 
						|
    ///
 | 
						|
    /// You may want to use this in queries to specify fetch conditions, for example:
 | 
						|
    ///
 | 
						|
    ///     box.query { .audioContentId > 1234 }
 | 
						|
 | 
						|
    internal static var audioContentId: Property<PlaybackTracking, Int, Void> { return Property<PlaybackTracking, Int, Void>(propertyId: 2, isPrimaryKey: false) }
 | 
						|
 | 
						|
    /// Generated entity property information.
 | 
						|
    ///
 | 
						|
    /// You may want to use this in queries to specify fetch conditions, for example:
 | 
						|
    ///
 | 
						|
    ///     box.query { .totalDuration > 1234 }
 | 
						|
 | 
						|
    internal static var totalDuration: Property<PlaybackTracking, Int, Void> { return Property<PlaybackTracking, Int, Void>(propertyId: 3, isPrimaryKey: false) }
 | 
						|
 | 
						|
    /// Generated entity property information.
 | 
						|
    ///
 | 
						|
    /// You may want to use this in queries to specify fetch conditions, for example:
 | 
						|
    ///
 | 
						|
    ///     box.query { .startPosition > 1234 }
 | 
						|
 | 
						|
    internal static var startPosition: Property<PlaybackTracking, Int, Void> { return Property<PlaybackTracking, Int, Void>(propertyId: 4, isPrimaryKey: false) }
 | 
						|
 | 
						|
    /// Generated entity property information.
 | 
						|
    ///
 | 
						|
    /// You may want to use this in queries to specify fetch conditions, for example:
 | 
						|
    ///
 | 
						|
    ///     box.query { .isFree == true }
 | 
						|
 | 
						|
    internal static var isFree: Property<PlaybackTracking, Bool, Void> { return Property<PlaybackTracking, Bool, Void>(propertyId: 5, isPrimaryKey: false) }
 | 
						|
 | 
						|
    /// Generated entity property information.
 | 
						|
    ///
 | 
						|
    /// You may want to use this in queries to specify fetch conditions, for example:
 | 
						|
    ///
 | 
						|
    ///     box.query { .isPreview == true }
 | 
						|
 | 
						|
    internal static var isPreview: Property<PlaybackTracking, Bool, Void> { return Property<PlaybackTracking, Bool, Void>(propertyId: 6, isPrimaryKey: false) }
 | 
						|
 | 
						|
    /// Generated entity property information.
 | 
						|
    ///
 | 
						|
    /// You may want to use this in queries to specify fetch conditions, for example:
 | 
						|
    ///
 | 
						|
    ///     box.query { .endPosition > 1234 }
 | 
						|
 | 
						|
    internal static var endPosition: Property<PlaybackTracking, Int?, Void> { return Property<PlaybackTracking, Int?, Void>(propertyId: 7, isPrimaryKey: false) }
 | 
						|
 | 
						|
    /// Generated entity property information.
 | 
						|
    ///
 | 
						|
    /// You may want to use this in queries to specify fetch conditions, for example:
 | 
						|
    ///
 | 
						|
    ///     box.query { .playDateTime.startsWith("X") }
 | 
						|
 | 
						|
    internal static var playDateTime: Property<PlaybackTracking, String, Void> { return Property<PlaybackTracking, String, Void>(propertyId: 8, isPrimaryKey: false) }
 | 
						|
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
/// Generated service type to handle persisting and reading entity data. Exposed through `PlaybackTracking.EntityBindingType`.
 | 
						|
internal class PlaybackTrackingBinding: ObjectBox.EntityBinding {
 | 
						|
    internal typealias EntityType = PlaybackTracking
 | 
						|
    internal typealias IdType = Id
 | 
						|
 | 
						|
    internal required init() {}
 | 
						|
 | 
						|
    internal func generatorBindingVersion() -> Int { 1 }
 | 
						|
 | 
						|
    internal func setEntityIdUnlessStruct(of entity: EntityType, to entityId: ObjectBox.Id) {
 | 
						|
        entity.__setId(identifier: entityId)
 | 
						|
    }
 | 
						|
 | 
						|
    internal func entityId(of entity: EntityType) -> ObjectBox.Id {
 | 
						|
        return entity.id.value
 | 
						|
    }
 | 
						|
 | 
						|
    internal func collect(fromEntity entity: EntityType, id: ObjectBox.Id,
 | 
						|
                                  propertyCollector: ObjectBox.FlatBufferBuilder, store: ObjectBox.Store) throws {
 | 
						|
        let propertyOffset_playDateTime = propertyCollector.prepare(string: entity.playDateTime)
 | 
						|
 | 
						|
        propertyCollector.collect(id, at: 2 + 2 * 1)
 | 
						|
        propertyCollector.collect(entity.audioContentId, at: 2 + 2 * 2)
 | 
						|
        propertyCollector.collect(entity.totalDuration, at: 2 + 2 * 3)
 | 
						|
        propertyCollector.collect(entity.startPosition, at: 2 + 2 * 4)
 | 
						|
        propertyCollector.collect(entity.isFree, at: 2 + 2 * 5)
 | 
						|
        propertyCollector.collect(entity.isPreview, at: 2 + 2 * 6)
 | 
						|
        propertyCollector.collect(entity.endPosition, at: 2 + 2 * 7)
 | 
						|
        propertyCollector.collect(dataOffset: propertyOffset_playDateTime, at: 2 + 2 * 8)
 | 
						|
    }
 | 
						|
 | 
						|
    internal func createEntity(entityReader: ObjectBox.FlatBufferReader, store: ObjectBox.Store) -> EntityType {
 | 
						|
        let entity = PlaybackTracking()
 | 
						|
 | 
						|
        entity.id = entityReader.read(at: 2 + 2 * 1)
 | 
						|
        entity.audioContentId = entityReader.read(at: 2 + 2 * 2)
 | 
						|
        entity.totalDuration = entityReader.read(at: 2 + 2 * 3)
 | 
						|
        entity.startPosition = entityReader.read(at: 2 + 2 * 4)
 | 
						|
        entity.isFree = entityReader.read(at: 2 + 2 * 5)
 | 
						|
        entity.isPreview = entityReader.read(at: 2 + 2 * 6)
 | 
						|
        entity.endPosition = entityReader.read(at: 2 + 2 * 7)
 | 
						|
        entity.playDateTime = entityReader.read(at: 2 + 2 * 8)
 | 
						|
 | 
						|
        return entity
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
/// Helper function that allows calling Enum(rawValue: value) with a nil value, which will return nil.
 | 
						|
fileprivate func optConstruct<T: RawRepresentable>(_ type: T.Type, rawValue: T.RawValue?) -> T? {
 | 
						|
    guard let rawValue = rawValue else { return nil }
 | 
						|
    return T(rawValue: rawValue)
 | 
						|
}
 | 
						|
 | 
						|
// MARK: - Store setup
 | 
						|
 | 
						|
fileprivate func cModel() throws -> OpaquePointer {
 | 
						|
    let modelBuilder = try ObjectBox.ModelBuilder()
 | 
						|
    try PlaybackTracking.buildEntity(modelBuilder: modelBuilder)
 | 
						|
    modelBuilder.lastEntity(id: 1, uid: 3505126452256778496)
 | 
						|
    return modelBuilder.finish()
 | 
						|
}
 | 
						|
 | 
						|
extension ObjectBox.Store {
 | 
						|
    /// A store with a fully configured model. Created by the code generator with your model's metadata in place.
 | 
						|
    ///
 | 
						|
    /// - Parameters:
 | 
						|
    ///   - directoryPath: The directory path in which ObjectBox places its database files for this store.
 | 
						|
    ///   - maxDbSizeInKByte: Limit of on-disk space for the database files. Default is `1024 * 1024` (1 GiB).
 | 
						|
    ///   - fileMode: UNIX-style bit mask used for the database files; default is `0o644`.
 | 
						|
    ///     Note: directories become searchable if the "read" or "write" permission is set (e.g. 0640 becomes 0750).
 | 
						|
    ///   - maxReaders: The maximum number of readers.
 | 
						|
    ///     "Readers" are a finite resource for which we need to define a maximum number upfront.
 | 
						|
    ///     The default value is enough for most apps and usually you can ignore it completely.
 | 
						|
    ///     However, if you get the maxReadersExceeded error, you should verify your
 | 
						|
    ///     threading. For each thread, ObjectBox uses multiple readers. Their number (per thread) depends
 | 
						|
    ///     on number of types, relations, and usage patterns. Thus, if you are working with many threads
 | 
						|
    ///     (e.g. in a server-like scenario), it can make sense to increase the maximum number of readers.
 | 
						|
    ///     Note: The internal default is currently around 120.
 | 
						|
    ///           So when hitting this limit, try values around 200-500.
 | 
						|
    /// - important: This initializer is created by the code generator. If you only see the internal `init(model:...)`
 | 
						|
    ///              initializer, trigger code generation by building your project.
 | 
						|
    internal convenience init(directoryPath: String, maxDbSizeInKByte: UInt64 = 1024 * 1024,
 | 
						|
                            fileMode: UInt32 = 0o644, maxReaders: UInt32 = 0, readOnly: Bool = false) throws {
 | 
						|
        try self.init(
 | 
						|
            model: try cModel(),
 | 
						|
            directory: directoryPath,
 | 
						|
            maxDbSizeInKByte: maxDbSizeInKByte,
 | 
						|
            fileMode: fileMode,
 | 
						|
            maxReaders: maxReaders,
 | 
						|
            readOnly: readOnly)
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
// swiftlint:enable all
 |