Skip to content

Some leftover fixes from #63#79

Merged
stephencelis merged 27 commits into
mainfrom
more-init-fixes
Jun 17, 2025
Merged

Some leftover fixes from #63#79
stephencelis merged 27 commits into
mainfrom
more-init-fixes

Conversation

@mbrandonw
Copy link
Copy Markdown
Member

No description provided.

cstock123 and others added 21 commits May 31, 2025 08:46
Previously, `@FetchOne var authUser: AuthUser?`
would not work because it was using a `FetchOne`
initializer which did not create a query. This
change adds another overloaded initializer that
creates a `Select` statement limiting the results
to just 1.

Considerations:
- The statement does not provide a default
  ordering, so if there are multiple records, it
  will just return the first one.

Added some tests to cover the original failure.
@mbrandonw mbrandonw requested a review from stephencelis June 17, 2025 20:49
@stephencelis stephencelis merged commit 21629c7 into main Jun 17, 2025
6 checks passed
@stephencelis stephencelis deleted the more-init-fixes branch June 17, 2025 22:01
mackoj pushed a commit to mackoj/sqlite-data that referenced this pull request Dec 5, 2025
This PR allows the following to work without qualifying the expression
type:

```diff
 Reminder.group {
-  #sql("date(\($0.dueDate))", as: Date?.self)
+  #sql("date(\($0.dueDate))")
 }
```
mackoj pushed a commit to mackoj/sqlite-data that referenced this pull request Dec 5, 2025
* Temporary triggers

* wip

* touch triggers

* fix

* wip

* wip

* wip

* wip

* wip

* Remove trailing comma (pointfreeco#75)

* Remove trailing comma while we support Swift 6.0

* compile for swift 6.0

* Don't require decodable fields in `GROUP BY` (pointfreeco#79)

This PR allows the following to work without qualifying the expression
type:

```diff
 Reminder.group {
-  #sql("date(\($0.dueDate))", as: Date?.self)
+  #sql("date(\($0.dueDate))")
 }
```

* Add `QueryExpression<Optional>.map,flatMap` (pointfreeco#80)

* Add `QueryExpression<Optional>.map,flatMap`

This PR adds helpers that make it a little easier to work with optional
query expressions in a builder.

For example, if you want to execute a `LIKE` operator on an optional
string, you currently have to resort to one of the following
workarounds:

```swift
.where { ($0.title ?? "").like("%foo%") }
// or:
.where { #sql("\($0.title) LIKE '%foo%') }
```

This PR introduces `map` and `flatMap` operations on optional
`QueryExpression`s that unwraps the expression, giving you additional
flexibility in how you express your builder code:

```swift
.where { $0.title.map { $0.like("%foo%") } ?? false }
```

While this is more code than the above options, some may prefer its
readability, and should we merge the other optional helpers from pointfreeco#61, it
could be further shortened:

```swift
.where { $0.title.map { $0.like("%foo%") } }
```

* tests

* wip

* wip

* wip

* wip

* wip

* find update remove later

* Revert "find update remove later"

This reverts commit a3de95c5f6eca051ec8581d9242573ca4a6ed8af.

* wip

* wip

* wip

* more overloads

* wip

* wip

* wip

* Support multiple statements in triggers

* Reuse query fragment builder

* wip

* wip

* wip

* wip

---------

Co-authored-by: Brandon Williams <mbrandonw@hey.com>
Co-authored-by: Brandon Williams <135203+mbrandonw@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants