Files
data-lite-coder/Sources/DLCEncoder/Classes/SingleValueContainer.swift
2025-10-24 20:16:30 +03:00

37 lines
836 B
Swift

import Foundation
import DataLiteCore
final class SingleValueContainer<Encoder: ValueEncoder>: Container, SingleValueEncodingContainer {
// MARK: - Properties
let encoder: Encoder
let codingPath: [any CodingKey]
// MARK: - Inits
init(
encoder: Encoder,
codingPath: [any CodingKey]
) {
self.encoder = encoder
self.codingPath = codingPath
}
// MARK: - Container Methods
func encodeNil() throws {
try encoder.encodeNil()
}
func encode<T: Encodable>(_ value: T) throws {
switch value {
case let value as Date:
try encoder.encodeDate(value)
case let value as SQLiteBindable:
try encoder.encode(value)
default:
try value.encode(to: encoder)
}
}
}