// swift-tools-version: 5.10
// The swift-tools-version declares the minimum version of Swift required to build this package.
import PackageDescription
let package = Package(
name: "MyExecutable",
dependencies: [
.package(url: "https://github.com/stephencelis/SQLite.swift", .upToNextMajor(from: "0.15.0")),
.package(url: "https://github.com/yaslab/ULID.swift", .upToNextMinor(from: "1.2.0")),
], targets: [
.executableTarget(
name: "MyExecutable", dependencies: [
.product(name: "SQLite", package: "SQLite.swift"),
.product(name: "ULID", package: "ULID.swift"),
]
),
]
)
main.swift
import Foundation
import SQLite
import ULID
struct User: Codable {
let id: UUID
let name: Name?
}
struct Name: Codable {
let first: String
let last: String
}
let users = Table("users")
let id = Expression<UUID>("id")
let name = Expression<String?>("name")
do {
let db = try Connection("db.sqlite3")
try db.run(users.create(ifNotExists: true) { t in
t.column(id, primaryKey: true)
t.column(name)
})
try print(db.run(users.insert(User(id: UUID(), name: nil))))
try print(db.prepare(users).map { row in try row.decode() } as [User])
} catch {
print(error)
}
gives
typeMismatch(MyExecutable.Name, Swift.DecodingError.Context(codingPath: [], debugDescription: "an unsupported type was found", underlyingError: nil))
Build Information
How to Reproduce
package.swift
main.swift
gives