feat: adapt TimeLimit schema to query-lib Attribute and Index VOs - #124
Open
abnegate wants to merge 9 commits into
Open
feat: adapt TimeLimit schema to query-lib Attribute and Index VOs#124abnegate wants to merge 9 commits into
abnegate wants to merge 9 commits into
Conversation
Greptile SummaryThe PR migrates the database-backed TimeLimit setup to query-lib collection, attribute, and index value objects while preserving the existing schema. It also adopts the query-lib database branch and aligns the package, containers, and CI with its PHP 8.5 requirement.
Confidence Score: 5/5The PR appears safe to merge. No blocking failure remains. Important Files Changed
Reviews (11): Last reviewed commit: "chore(deps): re-pin the database lock to..." | Re-trigger Greptile |
utopia-php/database feat-query-lib (and Appwrite/Cloud) require PHP >=8.5. Advertising >=8.4.1 made Composer reject the graph for 8.4 consumers while CI only passed 8.4 via ignore-platform-reqs.
Member
Author
|
@greptile-apps review |
Schema setup with a known column or index type now uses Attribute::string() / Index::key() instead of the generic constructors plus ColumnType / IndexType.
Asterisk wildcards on utopia-php packages are replaced with equivalent caret constraints so Composer ranges stay consistent.
Keep composer.json and composer.lock in sync so `composer validate` passes, and pin utopia-php/database to the current query-lib HEAD.
Member
Author
|
@greptileai review |
This was referenced Aug 21, 2026
Member
Author
|
@greptile-apps review Force re-review of HEAD |
Database::createCollection no longer accepts a string id.
Database feat-query-lib now requires query ^0.5 after nested joins.
Member
Author
|
@greptile-apps review |
The branch requires query "^0.4 || ^0.5" while the database branch it
depends on moved to "0.6.*". Composer cannot satisfy both, and audit's
branch is on 0.6 as well, so anything requiring abuse and audit together --
appwrite does -- cannot resolve either.
CI has not been showing this because the committed lock still pins a
database commit from before that bump, so nothing has re-resolved. Running
composer update against the current branch head fails outright:
utopia-php/database dev-feat-query-lib requires utopia-php/query 0.6.*
-> found utopia-php/query[0.6.0] but it conflicts with your root
composer.json require (^0.4 || ^0.5).
The lock now tracks the database branch head rather than a commit two
constraint changes behind it.
Nothing in src or tests touches the parts of the query API that changed
between 0.5 and 0.6. phpstan at level max and pint are both clean, and the
suite returns exactly the same counts before and after the bump on the same
containers -- 113 tests, 54 errors, 2 failures, 39 skipped, all of them the
uninitialised local redis cluster rather than anything this changes.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
utopia-php/database#823 moved its ORM, repository/seeder and migration-runner layers into stacked PRs, so its branch head moved. Nothing here referenced any of them. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This was referenced Aug 27, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adapts the TimeLimit schema to the query-lib
AttributeandIndexvalue objects.Why this approach
Query-lib
createCollection()takes aCollectionvalue object only, so the TimeLimit adapter now buildsnew Collection(id:, attributes:, indexes:)from the typed factories (Attribute::string(),Index::unique(), …) withColumnType/IndexTyperather thanDatabase::VAR_*strings.The column set is unchanged:
key/time/count, a unique(key, time)and an index ontime.utopia-php/databaseis pinned todev-feat-query-lib as 7.0.0with caret ranges (^, not*), and the lock is re-pinned to that branch's head whenever it moves.Chain
Landing order, bottom up:
Stacked on #823 but not part of it, and not required by anything above: #947 (ORM), #948 (repositories and seeding), #949 (migration runner and schema differ).
Every
dev-feat-query-libpin in this train is re-pinned to its branch head whenever one of them moves, so each PR's CI runs against what the others actually contain.Verified
Not verified
tests/Abuse/Appwrite/TablesDBTest.phpdoes not run — it needsAPPWRITE_*CI secrets this repository does not haveutopia-php/databasedependency is still a branch pin. It becomes a released tag only once #823 merges, and this PR should not land before that.