Skip to content

refactor(synapto): extract repository pattern for all sql operations#2

Merged
ramonlimaramos merged 2 commits intomainfrom
feat/repository-pattern
Apr 13, 2026
Merged

refactor(synapto): extract repository pattern for all sql operations#2
ramonlimaramos merged 2 commits intomainfrom
feat/repository-pattern

Conversation

@ramonlimaramos
Copy link
Copy Markdown
Owner

Summary

  • extract all raw sql from business logic into src/synapto/repositories/ with 4 repository classes (MemoryRepository, EntityRepository, RelationRepository, BankRepository)
  • zero sql visible outside repositories/ — consumers call named methods instead of inline queries
  • add documentation covering architecture, api reference, and scaling guide (read replicas, tenant-based sharding)

Changes

  • src/synapto/repositories/ — new module with 4 repository classes, ~32 sql constants, ~30 methods
  • src/synapto/server.py — replaced all inline sql with repository method calls
  • src/synapto/graph/entities.py — delegates sql to EntityRepository
  • src/synapto/graph/relations.py — delegates sql to RelationRepository
  • src/synapto/search/hybrid.py — delegates access tracking to MemoryRepository
  • src/synapto/decay/maintenance.py — delegates batch operations to MemoryRepository
  • src/synapto/hrr/banks.py — delegates storage to BankRepository + MemoryRepository
  • src/synapto/hrr/retrieval.py — delegates hrr/entity queries to repositories
  • docs/repository-pattern.md — architecture docs with scaling guide

Test plan

  • ci passes on all 3 python versions (3.11, 3.12, 3.13)
  • all 83 existing tests pass unchanged (zero test modifications needed)
  • ruff check clean

🤖 Generated with Claude Code

ramonlimaramos and others added 2 commits April 12, 2026 17:42
introduces src/synapto/repositories/ with 4 repository classes:
- MemoryRepository: crud, decay, trust, hrr vectors, stats
- EntityRepository: upsert, list, memory linking, counts
- RelationRepository: upsert, get by direction, counts
- BankRepository: upsert, delete, get vector, list types

all raw sql moved from business logic into repository classes as
named constants. consumers (server.py, graph/, search/, decay/,
hrr/) now call repository methods instead of inline sql.

result: -313 lines of inline sql removed from business logic,
+89 lines of clean method calls. zero sql visible outside
repositories/.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
covers architecture, api reference for all 4 repositories, and how
the pattern enables read replicas, tenant-based sharding, and
per-shard connection pooling without changing business logic.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@ramonlimaramos ramonlimaramos merged commit 6aa994a into main Apr 13, 2026
3 checks passed
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.

1 participant