# acmepy/seq architecture

> Architecture diagram of the GitHub repository acmepy/seq, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-26). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/acmepy/seq
- Repository: https://github.com/acmepy/seq

## Overview

seq is a modular asynchronous Node.js ORM. Users configure a Seq instance with models and an adapter, define model attributes and relationships, then authenticate and synchronize before issuing model queries or mutations. Model routes persistence through adapter DML; Seq coordinates registration, schema work, and lifecycle. The tree and README establish Map, SQLite, MySQL, and Oracle adapters, plus associations, hooks, query operators, transactions, and caching. Sampled excerpts confirm only parts of Model, DML, and adapter behavior, so uncertain implementation links are omitted.

Main entry points: [`src/core/Model.js`](https://github.com/acmepy/seq/blob/main/src/core/Model.js) (Models), [`src/core/Seq.js`](https://github.com/acmepy/seq/blob/main/src/core/Seq.js) (Seq), [`src/adapters/BaseAdapter.js`](https://github.com/acmepy/seq/blob/main/src/adapters/BaseAdapter.js) (Adapter Contract), [`src/adapters/abstract/DMLAbstract.js`](https://github.com/acmepy/seq/blob/main/src/adapters/abstract/DMLAbstract.js) (DML Operations)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_api["ORM API"]
  node_entry["Public API<br/>[index.js]"]
  node_seq["Seq<br/>[Seq.js]"]
  node_registry["Model Registry<br/>[ModelRegistry.js]"]
end

subgraph group_modeling["Modeling and Queries"]
  node_model["Models<br/>[Model.js]"]
  node_association["Associations<br/>[Association.js]"]
  node_types["Data Types<br/>[index.js]"]
  node_operators["Query Operators<br/>[operators.js]"]
  node_includes["Include Resolver<br/>[include.js]"]
end

subgraph group_adapter["Adapter Runtime"]
  node_baseadapter["Adapter Contract<br/>[BaseAdapter.js]"]
  node_dml["DML Operations<br/>[DMLAbstract.js]"]
  node_ddl["Schema Operations<br/>[DDLAbstract.js]"]
  node_tcl["Transactions<br/>[TCLAbstract.js]"]
end

subgraph group_backends["Persistence Backends"]
  node_map["Map Adapter<br/>[MapAdapter.js]"]
  node_mapstore[("Map Storage<br/>[MapDML.js]")]
  node_sqlite["SQLite Adapter<br/>[SQLiteAdapter.js]"]
  node_mysql["MySQL Adapter<br/>[MySQLAdapter.js]"]
  node_oracle11["Oracle 11 Adapter<br/>[Oracle11Adapter.js]"]
  node_oracle12["Oracle 12 Adapter<br/>[Oracle12Adapter.js]"]
end

subgraph group_cache["Caching"]
  node_cache["Cache<br/>[Cache.js]"]
  node_cacheadapter["Cache Adapters<br/>[CacheAdapter.js]"]
end

node_developer(("Application"))
node_database[("External Database")]

node_developer -->|"imports"| node_entry
node_developer -->|"configures"| node_seq
node_entry -->|"exports"| node_seq
node_seq -->|"registers models"| node_registry
node_developer -->|"defines models"| node_model
node_model -->|"uses types"| node_types
node_model -->|"defines relations"| node_association
node_model -->|"builds queries"| node_operators
node_model -->|"resolves includes"| node_includes
node_model -->|"issues persistence"| node_dml
node_seq -->|"coordinates adapter"| node_baseadapter
node_seq -->|"synchronizes schema"| node_ddl
node_seq -->|"controls transactions"| node_tcl
node_baseadapter -->|"provides operations"| node_dml
node_baseadapter -->|"provides operations"| node_ddl
node_baseadapter -->|"provides operations"| node_tcl
node_dml -->|"loads associations"| node_includes
node_map -->|"reads and writes"| node_mapstore
node_map -.->|"uses backend"| node_database
node_sqlite -->|"queries"| node_database
node_mysql -->|"queries"| node_database
node_oracle11 -->|"queries"| node_database
node_oracle12 -->|"queries"| node_database
node_model -.->|"caches results"| node_cache
node_cache -.->|"delegates storage"| node_cacheadapter

click node_entry "https://github.com/acmepy/seq/blob/main/src/index.js"
click node_seq "https://github.com/acmepy/seq/blob/main/src/core/Seq.js"
click node_registry "https://github.com/acmepy/seq/blob/main/src/core/ModelRegistry.js"
click node_model "https://github.com/acmepy/seq/blob/main/src/core/Model.js"
click node_association "https://github.com/acmepy/seq/blob/main/src/core/Association.js"
click node_types "https://github.com/acmepy/seq/blob/main/src/data-types/index.js"
click node_operators "https://github.com/acmepy/seq/blob/main/src/operators.js"
click node_includes "https://github.com/acmepy/seq/blob/main/src/utils/include.js"
click node_baseadapter "https://github.com/acmepy/seq/blob/main/src/adapters/BaseAdapter.js"
click node_dml "https://github.com/acmepy/seq/blob/main/src/adapters/abstract/DMLAbstract.js"
click node_ddl "https://github.com/acmepy/seq/blob/main/src/adapters/abstract/DDLAbstract.js"
click node_tcl "https://github.com/acmepy/seq/blob/main/src/adapters/abstract/TCLAbstract.js"
click node_map "https://github.com/acmepy/seq/blob/main/src/adapters/map/MapAdapter.js"
click node_mapstore "https://github.com/acmepy/seq/blob/main/src/adapters/map/MapDML.js"
click node_sqlite "https://github.com/acmepy/seq/blob/main/src/adapters/sqlite/SQLiteAdapter.js"
click node_mysql "https://github.com/acmepy/seq/blob/main/src/adapters/mysql/MySQLAdapter.js"
click node_oracle11 "https://github.com/acmepy/seq/blob/main/src/adapters/oracle11/Oracle11Adapter.js"
click node_oracle12 "https://github.com/acmepy/seq/blob/main/src/adapters/oracle12/Oracle12Adapter.js"
click node_cache "https://github.com/acmepy/seq/blob/main/src/cache/Cache.js"
click node_cacheadapter "https://github.com/acmepy/seq/blob/main/src/cache/adapters/CacheAdapter.js"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_entry,node_seq,node_registry toneBlue
class node_model,node_association,node_types,node_operators,node_includes,node_database toneAmber
class node_baseadapter,node_dml,node_ddl,node_tcl toneMint
class node_map,node_mapstore,node_sqlite,node_mysql,node_oracle11,node_oracle12 toneRose
class node_cache,node_cacheadapter,node_developer toneIndigo
```

## Components

### ORM API

- [Public API](https://github.com/acmepy/seq/blob/main/src/index.js): `src/index.js`
- [Seq](https://github.com/acmepy/seq/blob/main/src/core/Seq.js): `src/core/Seq.js`
- [Model Registry](https://github.com/acmepy/seq/blob/main/src/core/ModelRegistry.js): `src/core/ModelRegistry.js`

### Modeling and Queries

- [Models](https://github.com/acmepy/seq/blob/main/src/core/Model.js): `src/core/Model.js`
- [Associations](https://github.com/acmepy/seq/blob/main/src/core/Association.js): `src/core/Association.js`
- [Data Types](https://github.com/acmepy/seq/blob/main/src/data-types/index.js): `src/data-types/index.js`
- [Query Operators](https://github.com/acmepy/seq/blob/main/src/operators.js): `src/operators.js`
- [Include Resolver](https://github.com/acmepy/seq/blob/main/src/utils/include.js): `src/utils/include.js`

### Adapter Runtime

- [Adapter Contract](https://github.com/acmepy/seq/blob/main/src/adapters/BaseAdapter.js): `src/adapters/BaseAdapter.js`
- [DML Operations](https://github.com/acmepy/seq/blob/main/src/adapters/abstract/DMLAbstract.js): `src/adapters/abstract/DMLAbstract.js`
- [Schema Operations](https://github.com/acmepy/seq/blob/main/src/adapters/abstract/DDLAbstract.js): `src/adapters/abstract/DDLAbstract.js`
- [Transactions](https://github.com/acmepy/seq/blob/main/src/adapters/abstract/TCLAbstract.js): `src/adapters/abstract/TCLAbstract.js`

### Persistence Backends

- [Map Adapter](https://github.com/acmepy/seq/blob/main/src/adapters/map/MapAdapter.js): `src/adapters/map/MapAdapter.js`
- [Map Storage](https://github.com/acmepy/seq/blob/main/src/adapters/map/MapDML.js): `src/adapters/map/MapDML.js`
- [SQLite Adapter](https://github.com/acmepy/seq/blob/main/src/adapters/sqlite/SQLiteAdapter.js): `src/adapters/sqlite/SQLiteAdapter.js`
- [MySQL Adapter](https://github.com/acmepy/seq/blob/main/src/adapters/mysql/MySQLAdapter.js): `src/adapters/mysql/MySQLAdapter.js`
- [Oracle 11 Adapter](https://github.com/acmepy/seq/blob/main/src/adapters/oracle11/Oracle11Adapter.js): `src/adapters/oracle11/Oracle11Adapter.js`
- [Oracle 12 Adapter](https://github.com/acmepy/seq/blob/main/src/adapters/oracle12/Oracle12Adapter.js): `src/adapters/oracle12/Oracle12Adapter.js`

### Caching

- [Cache](https://github.com/acmepy/seq/blob/main/src/cache/Cache.js): `src/cache/Cache.js`
- [Cache Adapters](https://github.com/acmepy/seq/blob/main/src/cache/adapters/CacheAdapter.js): `src/cache/adapters/CacheAdapter.js`

### Other components

- **Application**
- **External Database**

## Connections

- Application → Public API: imports
- Application → Seq: configures
- Public API → Seq: exports
- Seq → Model Registry: registers models
- Application → Models: defines models
- Models → Data Types: uses types
- Models → Associations: defines relations
- Models → Query Operators: builds queries
- Models → Include Resolver: resolves includes
- Models → DML Operations: issues persistence
- Seq → Adapter Contract: coordinates adapter
- Seq → Schema Operations: synchronizes schema
- Seq → Transactions: controls transactions
- Adapter Contract → DML Operations: provides operations
- Adapter Contract → Schema Operations: provides operations
- Adapter Contract → Transactions: provides operations
- DML Operations → Include Resolver: loads associations
- Map Adapter → Map Storage: reads and writes
- Map Adapter → External Database: uses backend
- SQLite Adapter → External Database: queries
- MySQL Adapter → External Database: queries
- Oracle 11 Adapter → External Database: queries
- Oracle 12 Adapter → External Database: queries
- Models → Cache: caches results
- Cache → Cache Adapters: delegates storage
