Skip to content

Commit a8d5514

Browse files
committed
wip
1 parent 0df44cc commit a8d5514

33 files changed

+1406
-300
lines changed

Package.swift

Lines changed: 45 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,16 @@ let package = Package(
2121
targets: ["StructuredQueriesCore"]
2222
),
2323
.library(
24-
name: "StructuredQueriesTestSupport",
25-
targets: ["StructuredQueriesTestSupport"]
24+
name: "StructuredQueriesSQLite",
25+
targets: ["StructuredQueriesSQLite"]
2626
),
2727
.library(
28-
name: "_StructuredQueriesSQLite",
29-
targets: ["StructuredQueriesSQLite"]
28+
name: "StructuredQueriesSQLiteCore",
29+
targets: ["StructuredQueriesSQLiteCore"]
30+
),
31+
.library(
32+
name: "StructuredQueriesTestSupport",
33+
targets: ["StructuredQueriesTestSupport"]
3034
),
3135
],
3236
traits: [
@@ -46,6 +50,13 @@ let package = Package(
4650
.package(url: "https://github.com/swiftlang/swift-syntax", "600.0.0"..<"602.0.0"),
4751
],
4852
targets: [
53+
.target(
54+
name: "StructuredQueries",
55+
dependencies: [
56+
"StructuredQueriesCore",
57+
"StructuredQueriesMacros",
58+
]
59+
),
4960
.target(
5061
name: "StructuredQueriesCore",
5162
dependencies: [
@@ -58,13 +69,6 @@ let package = Package(
5869
],
5970
exclude: ["Symbolic Links/README.md"]
6071
),
61-
.target(
62-
name: "StructuredQueries",
63-
dependencies: [
64-
"StructuredQueriesCore",
65-
"StructuredQueriesMacros",
66-
]
67-
),
6872
.macro(
6973
name: "StructuredQueriesMacros",
7074
dependencies: [
@@ -73,12 +77,29 @@ let package = Package(
7377
],
7478
exclude: ["Symbolic Links/README.md"]
7579
),
80+
7681
.target(
7782
name: "StructuredQueriesSQLite",
7883
dependencies: [
79-
"StructuredQueries"
84+
"StructuredQueriesSQLiteCore",
85+
"StructuredQueriesSQLiteMacros",
86+
]
87+
),
88+
.target(
89+
name: "StructuredQueriesSQLiteCore",
90+
dependencies: [
91+
"StructuredQueriesCore",
92+
.product(name: "IssueReporting", package: "xctest-dynamic-overlay")
93+
]
94+
),
95+
.macro(
96+
name: "StructuredQueriesSQLiteMacros",
97+
dependencies: [
98+
.product(name: "SwiftCompilerPlugin", package: "swift-syntax"),
99+
.product(name: "SwiftSyntaxMacros", package: "swift-syntax"),
80100
]
81101
),
102+
82103
.target(
83104
name: "StructuredQueriesTestSupport",
84105
dependencies: [
@@ -90,8 +111,8 @@ let package = Package(
90111
.testTarget(
91112
name: "StructuredQueriesMacrosTests",
92113
dependencies: [
93-
"StructuredQueries",
94114
"StructuredQueriesMacros",
115+
"StructuredQueriesSQLiteMacros",
95116
.product(name: "IssueReporting", package: "xctest-dynamic-overlay"),
96117
.product(name: "MacroTesting", package: "swift-macro-testing"),
97118
]
@@ -102,11 +123,19 @@ let package = Package(
102123
"StructuredQueries",
103124
"StructuredQueriesSQLite",
104125
"StructuredQueriesTestSupport",
126+
"_StructuredQueriesSQLite",
105127
.product(name: "CustomDump", package: "swift-custom-dump"),
106128
.product(name: "Dependencies", package: "swift-dependencies"),
107129
.product(name: "InlineSnapshotTesting", package: "swift-snapshot-testing"),
108130
]
109131
),
132+
133+
.target(
134+
name: "_StructuredQueriesSQLite",
135+
dependencies: [
136+
"StructuredQueriesSQLite"
137+
]
138+
),
110139
],
111140
swiftLanguageModes: [.v6]
112141
)
@@ -128,14 +157,14 @@ for index in package.targets.indices {
128157
#if !canImport(Darwin)
129158
package.targets.append(
130159
.systemLibrary(
131-
name: "StructuredQueriesSQLite3",
160+
name: "_StructuredQueriesSQLite3",
132161
providers: [.apt(["libsqlite3-dev"])]
133162
)
134163
)
135164

136165
for index in package.targets.indices {
137-
if package.targets[index].name == "StructuredQueriesSQLite" {
138-
package.targets[index].dependencies.append("StructuredQueriesSQLite3")
166+
if package.targets[index].name == "_StructuredQueriesSQLite" {
167+
package.targets[index].dependencies.append("_StructuredQueriesSQLite3")
139168
}
140169
}
141170
#endif

[email protected]

Lines changed: 47 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,17 @@ let package = Package(
2525
targets: ["StructuredQueriesTestSupport"]
2626
),
2727
.library(
28-
name: "_StructuredQueriesSQLite",
28+
name: "StructuredQueriesSQLite",
2929
targets: ["StructuredQueriesSQLite"]
3030
),
31+
.library(
32+
name: "StructuredQueriesSQLiteCore",
33+
targets: ["StructuredQueriesSQLiteCore"]
34+
),
35+
.library(
36+
name: "StructuredQueriesTestSupport",
37+
targets: ["StructuredQueriesTestSupport"]
38+
),
3139
],
3240
dependencies: [
3341
.package(url: "https://github.com/pointfreeco/swift-custom-dump", from: "1.3.3"),
@@ -38,20 +46,20 @@ let package = Package(
3846
.package(url: "https://github.com/swiftlang/swift-syntax", "600.0.0"..<"602.0.0"),
3947
],
4048
targets: [
41-
.target(
42-
name: "StructuredQueriesCore",
43-
dependencies: [
44-
.product(name: "IssueReporting", package: "xctest-dynamic-overlay")
45-
],
46-
exclude: ["Symbolic Links/README.md"]
47-
),
4849
.target(
4950
name: "StructuredQueries",
5051
dependencies: [
5152
"StructuredQueriesCore",
5253
"StructuredQueriesMacros",
5354
]
5455
),
56+
.target(
57+
name: "StructuredQueriesCore",
58+
dependencies: [
59+
.product(name: "IssueReporting", package: "xctest-dynamic-overlay")
60+
],
61+
exclude: ["Symbolic Links/README.md"]
62+
),
5563
.macro(
5664
name: "StructuredQueriesMacros",
5765
dependencies: [
@@ -60,12 +68,29 @@ let package = Package(
6068
],
6169
exclude: ["Symbolic Links/README.md"]
6270
),
71+
6372
.target(
6473
name: "StructuredQueriesSQLite",
6574
dependencies: [
66-
"StructuredQueries"
75+
"StructuredQueriesSQLiteCore",
76+
"StructuredQueriesSQLiteMacros",
6777
]
6878
),
79+
.target(
80+
name: "StructuredQueriesSQLiteCore",
81+
dependencies: [
82+
"StructuredQueriesCore",
83+
.product(name: "IssueReporting", package: "xctest-dynamic-overlay")
84+
]
85+
),
86+
.macro(
87+
name: "StructuredQueriesSQLiteMacros",
88+
dependencies: [
89+
.product(name: "SwiftCompilerPlugin", package: "swift-syntax"),
90+
.product(name: "SwiftSyntaxMacros", package: "swift-syntax"),
91+
],
92+
),
93+
6994
.target(
7095
name: "StructuredQueriesTestSupport",
7196
dependencies: [
@@ -74,11 +99,12 @@ let package = Package(
7499
.product(name: "InlineSnapshotTesting", package: "swift-snapshot-testing"),
75100
]
76101
),
102+
77103
.testTarget(
78104
name: "StructuredQueriesMacrosTests",
79105
dependencies: [
80-
"StructuredQueries",
81106
"StructuredQueriesMacros",
107+
"StructuredQueriesSQLiteMacros",
82108
.product(name: "IssueReporting", package: "xctest-dynamic-overlay"),
83109
.product(name: "MacroTesting", package: "swift-macro-testing"),
84110
]
@@ -87,13 +113,20 @@ let package = Package(
87113
name: "StructuredQueriesTests",
88114
dependencies: [
89115
"StructuredQueries",
90-
"StructuredQueriesSQLite",
91116
"StructuredQueriesTestSupport",
117+
"_StructuredQueriesSQLite",
92118
.product(name: "CustomDump", package: "swift-custom-dump"),
93119
.product(name: "Dependencies", package: "swift-dependencies"),
94120
.product(name: "InlineSnapshotTesting", package: "swift-snapshot-testing"),
95121
]
96122
),
123+
124+
.target(
125+
name: "_StructuredQueriesSQLite",
126+
dependencies: [
127+
"StructuredQueriesSQLite"
128+
]
129+
),
97130
],
98131
swiftLanguageModes: [.v6]
99132
)
@@ -115,14 +148,14 @@ for index in package.targets.indices {
115148
#if !os(Darwin)
116149
package.targets.append(
117150
.systemLibrary(
118-
name: "StructuredQueriesSQLite3",
151+
name: "_StructuredQueriesSQLite3",
119152
providers: [.apt(["libsqlite3-dev"])]
120153
)
121154
)
122155

123156
for index in package.targets.indices {
124-
if package.targets[index].name == "StructuredQueriesSQLite" {
125-
package.targets[index].dependencies.append("StructuredQueriesSQLite3")
157+
if package.targets[index].name == "_StructuredQueriesSQLite" {
158+
package.targets[index].dependencies.append("_StructuredQueriesSQLite3")
126159
}
127160
}
128161
#endif

Sources/StructuredQueriesCore/QueryBindable.swift

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,8 @@ extension QueryBindable {
2525
extension [UInt8]: QueryBindable, QueryExpression {
2626
public var queryBinding: QueryBinding { .blob(self) }
2727
public init?(queryBinding: QueryBinding) {
28-
guard case .blob = queryBinding else { return nil }
29-
self.init(queryBinding: queryBinding)
28+
guard case .blob(let value) = queryBinding else { return nil }
29+
self = value
3030
}
3131
}
3232

@@ -37,16 +37,16 @@ extension Bool: QueryBindable {
3737
extension Double: QueryBindable {
3838
public var queryBinding: QueryBinding { .double(self) }
3939
public init?(queryBinding: QueryBinding) {
40-
guard case .double = queryBinding else { return nil }
41-
self.init(queryBinding: queryBinding)
40+
guard case .double(let value) = queryBinding else { return nil }
41+
self = value
4242
}
4343
}
4444

4545
extension Date: QueryBindable {
4646
public var queryBinding: QueryBinding { .date(self) }
4747
public init?(queryBinding: QueryBinding) {
48-
guard case .date = queryBinding else { return nil }
49-
self.init(queryBinding: queryBinding)
48+
guard case .date(let value) = queryBinding else { return nil }
49+
self = value
5050
}
5151
}
5252

@@ -73,16 +73,16 @@ extension Int32: QueryBindable {
7373
extension Int64: QueryBindable {
7474
public var queryBinding: QueryBinding { .int(self) }
7575
public init?(queryBinding: QueryBinding) {
76-
guard case .int = queryBinding else { return nil }
77-
self.init(queryBinding: queryBinding)
76+
guard case .int(let value) = queryBinding else { return nil }
77+
self = value
7878
}
7979
}
8080

8181
extension String: QueryBindable {
8282
public var queryBinding: QueryBinding { .text(self) }
8383
public init?(queryBinding: QueryBinding) {
84-
guard case .text = queryBinding else { return nil }
85-
self.init(queryBinding: queryBinding)
84+
guard case let .text(value) = queryBinding else { return nil }
85+
self = value
8686
}
8787
}
8888

@@ -111,8 +111,8 @@ extension UInt64: QueryBindable {
111111
extension UUID: QueryBindable {
112112
public var queryBinding: QueryBinding { .uuid(self) }
113113
public init?(queryBinding: QueryBinding) {
114-
guard case .uuid = queryBinding else { return nil }
115-
self.init(queryBinding: queryBinding)
114+
guard case .uuid(let value) = queryBinding else { return nil }
115+
self = value
116116
}
117117
}
118118

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
@_exported import StructuredQueries
2+
@_exported import StructuredQueriesSQLiteCore
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import StructuredQueriesSQLiteCore
2+
3+
@attached(peer, names: overloaded, prefixed(`$`))
4+
public macro DatabaseFunction(
5+
_ name: String = "",
6+
isDeterministic: Bool = false
7+
) =
8+
#externalMacro(
9+
module: "StructuredQueriesSQLiteMacros",
10+
type: "DatabaseFunctionMacro"
11+
)
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
public protocol DatabaseFunction {
2+
var name: String { get }
3+
var argumentCount: Int? { get }
4+
var isDeterministic: Bool { get }
5+
func invoke(_ arguments: [QueryBinding]) -> QueryBinding
6+
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
@_exported import StructuredQueriesCore

0 commit comments

Comments
 (0)