You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* postgres experimental WIP
* astonishingly, all mocha tests of apostrophe pass with this
* mocha tests pass, actual sites work
* lint clean
* listDatabases support, but changes are coming
* wip
* dump and restore updates
* backpressure, adequate handling of ObjectId for our needs (becomes its hex representation)
* mild performance optimization
* profiling
* testing issue resolved
* refactored to db-connect module, introduced sqlite adapter
* sqlite WIP
* debugging
* programmatic API for dump/restore/copy dbs
* linting, documentation
* MIT license
* text ranking is more accurate, documentation is more complete
* good full text search for sqlite
* updates for compatibility with the rest of the public and private modules, plus a few fixes to genuinely ambiguous tests
* requirements found by testing private modules
* fixes from full cypress run
* eslint passing
* restore permissions
* maximize atomicity
* bug fixes
* * exit properly when asset tests fail
* "npm test" tests all three adapters
* ignore claude-tools in eslint
* postgres and sqlite-inclusive ci matrix attempt
* clean up logs
* We hit github's limit on total configurations because every package gets its own matrix.
Solve that with grouping:
* apostrophe core
* All regular ecosystem packages other than core
* non-database-requiring packges
* mongodb-specific packages
This will probably speed it up too because it won't have to spin up a container a bazillion times.
* hardened the asset tests, made them less timing sensitive, fixed a bad commit resulting from the
way they dodgily patch themselves without a robust cleanup mechanism
* fix a root cause of asset test instability
* log mess
* implemented missing $size operator
* test compatibility
* advanced permission uses regex in $in
* regex in $in
* .db() should not make false promises in plain postgres mode, it should fail
* ability to specify a default adapter
* obsolete file
* put escapeHost back where it belongs
* dead code removal, test cleanup
* emulate-mongo-3-driver only needed in db-connect
* no claude logs in repo (tools are welcome)
* * shared aggregation implementation, other shared things
* optimize $match when it is the first step in aggregation, don't fetch the whole collection 😜
* multipostgres listDatabases() and .db() should return and expect "fully qualified virtual database names," e.g. physical_db_name-schemaname
* vanilla postgres should not attempt to use .db() with alternate names in tests
* documentation corrections
* documentation errors
* listDatabases and documentation corrections
* more edge cases revealed by latest work from Miro
* anchored prefix regexps are optimized
documentation improvements
* * matchesQuery in the aggregation cursor implementation doesn't throw on unrecognized operators. It should, and it should support the same mongodb operators that the regular find()
path does in postgres/sqlite (our official subset), unless there is an extraordinary reason not to.
* Similarly, the main query implementation for normal queries should throw on unrecognized operators if it doesn't already.
* The dump/restore programmatic APIs in db-connect concern me. These involve returning the entire database as a string, which could exhaust memory. This impacts both utilities and
also copyDatabase(). Could these APIs return and expect async iterators instead of strings?
* The test "anchored regex on an indexed field uses a btree index search" runs explain on a query that's hardcoded in the test. Instead these SQL based adapters should expose a means
to get the SQL for a query, so it can be directly tested. Otherwise this test proves nothing as changes to the adapter accumulate in future.
* Why is this test searching for "at least 1" and not exactly 1?
it('should find documents with null value', async function() {
const docs = await db.collection('test').find({ value: null }).toArray();
// MongoDB matches both null and missing fields with { value: null }
expect(docs.length).to.be.at.least(1);
});
* What is the maximum size of a db-connect document in the postgres and sqlite adapters?
* Update the copyright year in db-connect/LICENSE.md to 2025.
* The db-connect README mentions: sqlite://:memory: What happens if you try to use .db('some-name') with that? I think it would be best to just not support throwaway in-memory sqlite
databases because I doubt anyone would intentionally store a website in one.
* do not swallow dump/restore errors on indexes
* cover how to run the utilities
* fix detection of source
* separate sanitization for index names
* regex prefix safety
* pnpm
---------
Co-authored-by: Thomas Boutell <boutell@vcs.trox.local>
Copy file name to clipboardExpand all lines: package.json
+3-1Lines changed: 3 additions & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -5,7 +5,8 @@
5
5
"dev": "pnpm --parallel --recursive run dev",
6
6
"build": "pnpm --recursive run build",
7
7
"lint": "pnpm --recursive run lint",
8
-
"test": "pnpm --recursive run test",
8
+
"test": "APOS_TEST_DB_PROTOCOL=postgres pnpm run test:main && APOS_TEST_DB_PROTOCOL=mongodb pnpm run test:main && APOS_TEST_DB_PROTOCOL=sqlite pnpm run test:main && APOS_TEST_DB_PROTOCOL=multipostgres pnpm run test:main",
9
+
"test:main": "echo \"APOS_TEST_DB_PROTOCOL IS: $APOS_TEST_DB_PROTOCOL\" && pnpm --recursive run test",
0 commit comments