Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Added a databases category to the Packages page #622

Draft
wants to merge 2 commits into
base: main
Choose a base branch
from
Draft
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
75 changes: 75 additions & 0 deletions _data/packages/packages.yml
Original file line number Diff line number Diff line change
Expand Up @@ -488,9 +488,84 @@ categories:
to log details to the console (and optionally a file) with additional information
such as date, function name, and line number.
owner: Dave Wood
- name: Database access
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Minor nit - WDYT

Suggested change
- name: Database access
- name: Database Access

slug: database
brief: We all need to store data somewhere! Find everything from local SQLite databases
to connections to server-based databases from your Swift on server apps.
description:
When looking for something as an alternative to [Core Data](https://developer.apple.com/documentation/coredata)
or [SwiftData](https://developer.apple.com/xcode/swiftdata/), look no further
than this list of popular database packages.
more:
title: More database access packages
url: https://swiftpackageindex.com/keywords/database
packages:
- name: GRDB
description: GRDB is a SQLite toolkit for application development. It provides
SQL generation, database observation, robust concurrency, migrations, and raw
SQL access.
owner: "Gwendal Rou\xE9"
swift_compatibility: 5.7+
platform_compatibility:
- Apple
- Linux
platform_compatibility_tooltip: Apple (macOS) and Linux
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is tangential to the PR since it's also the case on the SPI page, but why is iOS/tvOS not listed for GRDB even though they are supported by the library?

Copy link

@groue groue Apr 3, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good question @kaishin 👍 I think it's because the GRDB repository comes with 2 Xcode projects - this trips up SPI: https://swiftpackageindex.com/groue/GRDB.swift/builds

@daveverwer, do you think you can manually update the platform_compatibility_tooltip with iOS, macOS, tvOS, visionOS, watchOS, and Linux, even if the PR changes have already been approved?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Unfortunately manually updating this is not going to be possible. The data files that drive these pages are automatically generated from SPI data and so every time that tool gets run (which happens monthly) it would overwrite any manual changes.

I'd much rather get this fixed on the SPI side, so that it's not only correct here but also on SPI. I vaguely remember this coming up before, did we already go through troubleshooting the builds? If you want to open a new "Incorrect package data" issue and we can look at what's causing the failures. We do have some options you can specify in your .spi.yml that are able to solve common problems with builds.

Copy link

@groue groue Apr 3, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sure, Dave. It was SwiftPackageIndex/SwiftPackageIndex-Server#1890

I don't know if SwiftPackageIndex/SwiftPackageIndex-Server#1915 was settled or not, and if I should do something to my .spi.yml.

Copy link

@groue groue Apr 9, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@daveverwer, do you think I have something else to do on my side so that the package metadata is fixed, and users don't think GRDB only works on a subset of the actually supported platforms?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Apologies for not getting back to you on this. @finestructure and I chatted about the compatibility issue and while we do still plan to add explicit support for multiple projects, unfortunately, the change needed touches multiple parts of our application and isn't something we can rush through for this.

There is a potential workaround in your original issue. We understand that adopting a workaround like this is not ideal, and of course, we will get to SwiftPackageIndex/SwiftPackageIndex-Server#1915 as soon as possible, but I can't say when as we have not yet had reports of any other packages in need of this feature.

I’m sorry I don’t have better news!

Copy link

@groue groue Apr 10, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I can't move the extra Xcode project because this would be breaking change for users.

I can't gather all targets in a single Xcode project (in a future major release) because one of the projects is used for advances use cases (custom SQLite builds) and depends on a submodule that not everybody clones. When all targets are gathered in a single project, the missing submodule creates an awful ton of errors and warnings in Xcode - not something I want users to see.

I can't say when as we have not yet had reports of any other packages in need of this feature.

Well understood, @daveverwer, and thank you for your investigation of the topic. I can only appeal to your generosity, or the itch created by this wrong meta-data.

If GRDB is well-appreciated, it is also because it goes far in servicing the various needs of its users - hence the two Xcode projects. My priority is and will remain GRDB users.

license: MIT
url: https://swiftpackageindex.com/groue/GRDB.swift
- name: MongoKitten
description: MongoKitten is a fast, pure Swift MongoDB driver built for Server
Side Swift. It supports both MongoDB in server and embedded environments and
can be used with Vapor or Hummingbird.
owner: Orlandos Technologies - OpenSource
swift_compatibility: 5.7+
platform_compatibility:
- Apple
- Linux
platform_compatibility_tooltip: Apple (iOS, macOS, visionOS) and Linux
license: MIT
url: https://swiftpackageindex.com/orlandos-nl/MongoKitten
- name: Realm
description: Realm is a mobile database for iOS, macOS, tvOS, and watchOS. It
offers an object-oriented data model, real-time syncing, and encryption. It
integrates with SwiftUI and supports various installation methods.
owner: Realm
swift_compatibility: 5.7+
platform_compatibility:
- Apple
platform_compatibility_tooltip: Apple (iOS, macOS, visionOS, watchOS, tvOS)
license: Apache 2.0
url: https://swiftpackageindex.com/realm/realm-swift
- name: fluent
description: Fluent helps you work with databases, providing a high-level, type-safe
API for querying and manipulating data in Vapor apps.
owner: Vapor
swift_compatibility: 5.7+
platform_compatibility:
- Apple
- Linux
platform_compatibility_tooltip: Apple (iOS, macOS, visionOS, watchOS, tvOS) and
Linux
license: MIT
url: https://swiftpackageindex.com/vapor/fluent
- name: USearch
description: USearch enhances vector and upcoming text similarity search with
faster, smaller, and broadly compatible implementations. It offers extensibility,
fewer dependencies, and supports multiple programming languages.
owner: Unum
swift_compatibility: 5.7+
platform_compatibility:
- Apple
platform_compatibility_tooltip: Apple (iOS, macOS, visionOS, watchOS, tvOS)
license: Apache 2.0
url: https://swiftpackageindex.com/unum-cloud/usearch
- name: RxRealm
description: RxRealm provides reactive extensions for RealmSwift, allowing you
to observe and manipulate objects and collections of objects, bind to table
and collection views, and write transactions.
owner: RxSwift Community
swift_compatibility: 5.7+
platform_compatibility:
- Apple
platform_compatibility_tooltip: Apple (iOS, macOS, watchOS, tvOS)
license: MIT
url: https://swiftpackageindex.com/DaveWoodCom/XCGLogger