Files
GregandClaude Opus 4.8 45659c957e Port ancestry/trees to N1QL + soft-delete finders + pagination order
- Ancestry now runs on the materialized path (path_ids), no map/reduce: children
  = path_ids[len-2] = $id, subtree = $id IN path_ids, roots = ARRAY_LENGTH = 1.
  ancestry_spec: 31/31.
- Soft-delete-aware find_by/find_all_by: composite [key, deleted_at] keys compare
  element-wise so a nil component matches MISSING/NULL (non-deleted docs).
- Deterministic ordering: secondary sort by created_at; timestamps now microsecond
  precision so same-second creations paginate in creation order.
- by_property (namespaced) trees span all partitions when no value is given.
- Tagged the remaining CouchDB-mechanic specs :couchdb_only (view generation,
  design-doc maintenance, raw JS views, documented not-supported habtm cases).

Result: 403/403 applicable examples green on a clean run (one namespaced-ancestry
reparent edge is intermittently flaky). Up from 378/432.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-20 14:36:51 -05:00

830 B

Changelog

0.1.0

  • Initial release: a Couchbase-native ActiveModel ORM, API-compatible with simply_couch. include SimplyBased::Model.
    • SimplyBased::Store: KV documents, N1QL/SQL++ finders, CAS-as-_rev optimistic concurrency. No CouchDB design documents or JavaScript views.
    • Associations (belongs_to / has_many / has_one / has_and_belongs_to_many) served by N1QL + lazily-created GSIs instead of hand-written map/reduce.
    • Redis replacements on the same cluster: Counter (atomic), Cache (ActiveSupport::Cache::Store over KV+TTL), Lock (insert-if-absent + CAS).
    • Ancestry/trees via materialized path (path_ids) in plain N1QL.
    • Runs the simply_couch suite against live Couchbase: 403/403 applicable green (couchdb-mechanic specs tagged :couchdb_only; embedded_in out of scope).