{"_id":"@teliagen/persistence","_rev":"31-33c9819d29b571203a1e72118535864e","name":"@teliagen/persistence","dist-tags":{"latest":"0.4.2"},"versions":{"0.4.0":{"name":"@teliagen/persistence","version":"0.4.0","author":{"name":"Teliagen Team","email":"contact@teliagen.org"},"license":"Apache-2.0","_id":"@teliagen/persistence@0.4.0","maintainers":[{"name":"teliagen_off","email":"admin@teliagen.org"}],"homepage":"https://docs.teliagen.org","bugs":{"url":"https://github.com/teliagen/teliagen-framework/issues"},"dist":{"shasum":"e8848329e308cc2b8af62aa0640681ac51cbe777","tarball":"https://registry.npmjs.org/@teliagen/persistence/-/persistence-0.4.0.tgz","fileCount":68,"integrity":"sha512-tdHwgMXCy/0pi1Z1Wt6z5QI/w4N98lFVwcIRbVonxAeSZjQi9WmrPQ8KmLTb7ZeuGf2RJg4CTrBYiv8HxfAikw==","signatures":[{"sig":"MEUCIQC3KmkdB+F5EbVop5HGFKfG28x1mziJRQvROF0ZR2byBQIgD/faI030AU0PnsXfVr3oN7AHvBQL/3GuD3kDKAhkji4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":325077},"main":"dist/index.js","type":"module","_from":"file:teliagen-persistence-0.4.0.tgz","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.js"},"./query":{"types":"./dist/query/index.d.ts","import":"./dist/query/index.js","default":"./dist/query/index.js","require":"./dist/query/index.js"},"./utils":{"types":"./dist/utils/index.d.ts","import":"./dist/utils/index.js","default":"./dist/utils/index.js","require":"./dist/utils/index.js"},"./database":{"types":"./dist/database/index.d.ts","import":"./dist/database/index.js","default":"./dist/database/index.js","require":"./dist/database/index.js"},"./entities":{"types":"./dist/entities/index.d.ts","import":"./dist/entities/index.js","default":"./dist/entities/index.js","require":"./dist/entities/index.js"}},"private":false,"scripts":{"dev":"tsc --watch","build":"tsc"},"_npmUser":{"name":"teliagen_off","email":"admin@teliagen.org"},"_resolved":"C:\\Users\\ABDOUL~1\\AppData\\Local\\Temp\\2d028360b1cfc71764c99c4edab3f4ab\\teliagen-persistence-0.4.0.tgz","_integrity":"sha512-tdHwgMXCy/0pi1Z1Wt6z5QI/w4N98lFVwcIRbVonxAeSZjQi9WmrPQ8KmLTb7ZeuGf2RJg4CTrBYiv8HxfAikw==","repository":{"url":"git+https://github.com/teliagen/teliagen-framework.git","type":"git","directory":"packages/persistence"},"_npmVersion":"11.6.2","description":"ORM and data persistence for Teliagen","directories":{},"_nodeVersion":"24.12.0","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.7.3","@types/node":"^22.10.7","@teliagen/logger":"0.4.0","reflect-metadata":"^0.2.2"},"peerDependencies":{"@teliagen/logger":"0.4.0","reflect-metadata":"^0.2.2"},"_npmOperationalInternal":{"tmp":"tmp/persistence_0.4.0_1770857842859_0.39895907317959334","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"@teliagen/persistence","version":"0.4.1","author":{"name":"Teliagen Team","email":"contact@teliagen.org"},"license":"Apache-2.0","_id":"@teliagen/persistence@0.4.1","maintainers":[{"name":"teliagen_off","email":"admin@teliagen.org"}],"homepage":"https://docs.teliagen.org","bugs":{"url":"https://github.com/teliagen/teliagen-framework/issues"},"dist":{"shasum":"2451f8a12c5838c1df1528a59824bdf1638a4c87","tarball":"https://registry.npmjs.org/@teliagen/persistence/-/persistence-0.4.1.tgz","fileCount":68,"integrity":"sha512-wuzRkV9CYnihztJcgM7G2rGqKZGgi8kKCRTU1nRM/EYnpNMUnPfppnf9uxCO6LFhVO3XAQ6YjdG7WIsFUF6Zaw==","signatures":[{"sig":"MEUCIAbWn0KuDEsaOzYamZTuPeCIjMf+ryPQIdTd0Kt11c8iAiEAm5AvdVCypv2z+tKHPHu1bWsh5UWyPw8G2KHg1JXGT14=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":325077},"main":"dist/index.js","type":"module","_from":"file:teliagen-persistence-0.4.1.tgz","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.js"},"./query":{"types":"./dist/query/index.d.ts","import":"./dist/query/index.js","default":"./dist/query/index.js","require":"./dist/query/index.js"},"./utils":{"types":"./dist/utils/index.d.ts","import":"./dist/utils/index.js","default":"./dist/utils/index.js","require":"./dist/utils/index.js"},"./database":{"types":"./dist/database/index.d.ts","import":"./dist/database/index.js","default":"./dist/database/index.js","require":"./dist/database/index.js"},"./entities":{"types":"./dist/entities/index.d.ts","import":"./dist/entities/index.js","default":"./dist/entities/index.js","require":"./dist/entities/index.js"}},"private":false,"scripts":{"dev":"tsc --watch","build":"tsc"},"_npmUser":{"name":"teliagen_off","email":"admin@teliagen.org"},"_resolved":"C:\\Users\\ABDOUL~1\\AppData\\Local\\Temp\\2f4ba0dffec98077ae6bd14bd9613ed2\\teliagen-persistence-0.4.1.tgz","_integrity":"sha512-wuzRkV9CYnihztJcgM7G2rGqKZGgi8kKCRTU1nRM/EYnpNMUnPfppnf9uxCO6LFhVO3XAQ6YjdG7WIsFUF6Zaw==","repository":{"url":"git+https://github.com/teliagen/teliagen-framework.git","type":"git","directory":"packages/persistence"},"_npmVersion":"11.6.2","description":"ORM and data persistence for Teliagen","directories":{},"_nodeVersion":"24.12.0","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.7.3","@types/node":"^22.10.7","@teliagen/logger":"0.4.1","reflect-metadata":"^0.2.2"},"peerDependencies":{"@teliagen/logger":"0.4.1","reflect-metadata":"^0.2.2"},"_npmOperationalInternal":{"tmp":"tmp/persistence_0.4.1_1770923599014_0.0785372663438706","host":"s3://npm-registry-packages-npm-production"}},"0.4.2":{"name":"@teliagen/persistence","version":"0.4.2","private":false,"publishConfig":{"access":"public"},"description":"ORM and data persistence for Teliagen","main":"dist/index.js","types":"dist/index.d.ts","type":"module","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js","default":"./dist/index.js"},"./entities":{"types":"./dist/entities/index.d.ts","import":"./dist/entities/index.js","require":"./dist/entities/index.js","default":"./dist/entities/index.js"},"./database":{"types":"./dist/database/index.d.ts","import":"./dist/database/index.js","require":"./dist/database/index.js","default":"./dist/database/index.js"},"./query":{"types":"./dist/query/index.d.ts","import":"./dist/query/index.js","require":"./dist/query/index.js","default":"./dist/query/index.js"},"./utils":{"types":"./dist/utils/index.d.ts","import":"./dist/utils/index.js","require":"./dist/utils/index.js","default":"./dist/utils/index.js"}},"author":{"name":"Teliagen Team","email":"contact@teliagen.org"},"repository":{"type":"git","url":"git+https://github.com/teliagen/teliagen-framework.git","directory":"packages/persistence"},"homepage":"https://docs.teliagen.org","bugs":{"url":"https://github.com/teliagen/teliagen-framework/issues"},"license":"Apache-2.0","dependencies":{},"peerDependencies":{"reflect-metadata":"^0.2.2","@teliagen/logger":"0.4.2"},"devDependencies":{"reflect-metadata":"^0.2.2","@types/node":"^22.10.7","typescript":"^5.7.3","@teliagen/logger":"0.4.2"},"scripts":{"build":"tsc","dev":"tsc --watch"},"_id":"@teliagen/persistence@0.4.2","_integrity":"sha512-nthy/jCKb7T1HUT+g/Thu/FgtdvMsWL/I3mtT5cKhxEUukuhjieME2U1j3pm6Z7OoDjJ5g5cEq3PArwHglpr4A==","_resolved":"C:\\Users\\ABDOUL~1\\AppData\\Local\\Temp\\c7fd2dfc910fde7575ef70d597f78f60\\teliagen-persistence-0.4.2.tgz","_from":"file:teliagen-persistence-0.4.2.tgz","_nodeVersion":"24.12.0","_npmVersion":"11.6.2","dist":{"integrity":"sha512-nthy/jCKb7T1HUT+g/Thu/FgtdvMsWL/I3mtT5cKhxEUukuhjieME2U1j3pm6Z7OoDjJ5g5cEq3PArwHglpr4A==","shasum":"1723da0cf878d5a7f8a02fb05dc5c001b1e9411e","tarball":"https://registry.npmjs.org/@teliagen/persistence/-/persistence-0.4.2.tgz","fileCount":68,"unpackedSize":325077,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCKF7qx1zAJ9py/Whc2zJ3ZS0771muLqhVsTKaOLlZZ+wIhANA9+kV3rlaXct6Y5R17tFdiX4GncTTQwBfsV+EurPx+"}]},"_npmUser":{"name":"teliagen_off","email":"admin@teliagen.org"},"directories":{},"maintainers":[{"name":"teliagen_off","email":"admin@teliagen.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/persistence_0.4.2_1770925148914_0.22647971352325058"},"_hasShrinkwrap":false}},"time":{"created":"2026-02-12T00:57:22.786Z","modified":"2026-02-12T19:39:09.237Z","0.1.0":"2026-01-19T19:17:26.521Z","0.1.1":"2026-01-19T19:55:56.262Z","0.1.2":"2026-01-19T21:14:30.000Z","0.1.3":"2026-01-19T21:27:22.949Z","0.1.4":"2026-01-20T02:45:36.210Z","0.1.5":"2026-01-25T07:47:23.057Z","0.1.6":"2026-01-25T16:04:23.335Z","0.1.7":"2026-01-25T16:42:16.621Z","0.1.8":"2026-01-25T16:47:00.041Z","0.1.9":"2026-01-25T18:22:33.252Z","0.1.10":"2026-01-25T19:33:21.094Z","0.1.11":"2026-01-25T23:50:25.321Z","0.1.12":"2026-01-26T00:07:28.696Z","0.1.13":"2026-01-26T00:10:59.807Z","0.1.14":"2026-01-26T00:14:29.903Z","0.1.15":"2026-01-26T00:18:45.186Z","0.1.16":"2026-01-26T00:40:13.922Z","0.1.17":"2026-01-26T00:52:52.260Z","0.1.18":"2026-01-26T00:57:03.526Z","0.1.20":"2026-01-26T01:17:31.051Z","0.1.21":"2026-01-26T01:22:02.089Z","0.1.22":"2026-01-26T01:43:02.560Z","0.1.23":"2026-01-26T02:17:27.429Z","0.1.24":"2026-01-26T02:26:04.266Z","0.4.0":"2026-02-12T00:57:23.031Z","0.4.1":"2026-02-12T19:13:19.176Z","0.4.2":"2026-02-12T19:39:09.080Z"},"bugs":{"url":"https://github.com/teliagen/teliagen-framework/issues"},"author":{"name":"Teliagen Team","email":"contact@teliagen.org"},"license":"Apache-2.0","homepage":"https://docs.teliagen.org","repository":{"type":"git","url":"git+https://github.com/teliagen/teliagen-framework.git","directory":"packages/persistence"},"description":"ORM and data persistence for Teliagen","maintainers":[{"name":"teliagen_off","email":"admin@teliagen.org"}],"readme":"# @teliagen/persistence\r\n\r\nThe universal data mappers and ORM abstraction layer for **Teliagen**.\r\n\r\n`@teliagen/persistence` provides a powerful **Active Record** implementation that decouples your entities from the underlying database driver. Whether you use Postgres, MySQL, or Mongo, your business logic remains robust and unchanged.\r\n\r\n[![npm version](https://img.shields.io/npm/v/@teliagen/persistence.svg)](https://www.npmjs.com/package/@teliagen/persistence)\r\n[![License](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)\r\n\r\n## Features\r\n\r\n- **Universal Entities**: Define models once using decorators (`@Entity`, `@Column`).\r\n- **Active Record**: Intuitive API (`User.findById`, `user.save()`).\r\n- **Adapter System**: Pluggable backends (Sequelize, TypeORM, Prisma, In-Memory).\r\n- **Rich Relationships**: Built-in support for OneToOne, OneToMany, and ManyToMany.\r\n- **Microservices Ready**: Define `@RemoteEntity` to reference data across services.\r\n\r\n## Installation\r\n\r\n```bash\r\nnpm install @teliagen/persistence\r\n```\r\n\r\nYou will also need a database adapter (e.g., `@teliagen/adapter-sequelize`).\r\n\r\n## Quick Start\r\n\r\n### 1. Define an Entity (`src/modules/users/entities/user.entity.ts`)\r\n\r\nEntities are standard TypeScript classes decorated with metadata.\r\n\r\n```typescript\r\nimport { Entity, Column, Model } from '@teliagen/persistence/entities';\r\nimport { DataType } from '@teliagen/persistence/database';\r\n\r\n@Entity({ tableName: 'users' })\r\nexport class User extends Model {\r\n  \r\n  @Column({ primary: true, type: DataType.UUID, defaultValue: DataType.UUIDV4 })\r\n  id!: string;\r\n\r\n  @Column({ type: DataType.STRING, required: true })\r\n  name!: string;\r\n\r\n  @Column({ type: DataType.STRING, unique: true })\r\n  email!: string;\r\n}\r\n```\r\n\r\n### 2. Configure Adapter (`src/bootstrap.ts`)\r\n\r\nConnect your application to the database.\r\n\r\n```typescript\r\nimport { TeliagenApp } from '@teliagen/server/app';\r\nimport { SequelizeAdapter } from '@teliagen/adapter-sequelize';\r\nimport { User } from './modules/users/entities/user.entity.js';\r\n\r\nconst app = new TeliagenApp();\r\n\r\nconst adapter = new SequelizeAdapter({\r\n  dialect: 'postgres',\r\n  host: process.env.DB_HOST,\r\n  password: process.env.DB_PASSWORD,\r\n  database: 'my_app'\r\n});\r\n\r\n// 1. Bind adapter to the Framework\r\napp.useDataAdapter(adapter);\r\n\r\n// 2. Register Entities\r\napp.registerModule({\r\n  entities: [User]\r\n});\r\n\r\n// 3. Sync Schema (Dev only) & Start\r\nawait app.initialize();\r\nawait adapter.connect();\r\nawait adapter.syncSchema({ alter: true });\r\n\r\nawait app.start();\r\n```\r\n\r\n### 3. Use Data (`src/modules/users/actions/user.actions.ts`)\r\n\r\nPerform CRUD operations effortlessly.\r\n\r\n```typescript\r\nimport { ActionProvider, Action, Input } from '@teliagen/commons/actions/decorators';\r\nimport { User } from '../entities/user.entity.js';\r\nimport { CreateUserInput } from '../schemas/create-user.schema.js';\r\n\r\n@ActionProvider({ module: 'users', name: 'UserActions' })\r\nexport class UserActions {\r\n\r\n  @Action('create')\r\n  async create(@Input() input: CreateUserInput) {\r\n    // Active Record pattern\r\n    const user = await User.create({\r\n      name: input.name,\r\n      email: input.email\r\n    });\r\n    \r\n    return user;\r\n  }\r\n}\r\n```\r\n\r\n## Core Concepts\r\n\r\n### Model API\r\n\r\nEvery entity extends `Model`, inheriting powerful static and instance methods:\r\n\r\n- **Finders**: `findById`, `findOne`, `findAll`, `count`\r\n- **Mutations**: `create`, `update`, `destroy`\r\n- **Instance**: `save`, `reload`, `toJSON`\r\n\r\n### Associations\r\n\r\nDefine relationships clearly using decorators:\r\n\r\n```typescript\r\n@Entity()\r\nclass Post extends Model {\r\n  @ManyToOne(() => User)\r\n  author!: User;\r\n}\r\n\r\n@Entity()\r\nclass User extends Model {\r\n  @OneToMany(() => Post)\r\n  posts!: Post[];\r\n}\r\n```\r\n\r\n## Documentation\r\n\r\nFor query builders, transactions, and advanced usage, visit:\r\n\r\n[**docs.teliagen.org**](https://docs.teliagen.org)\r\n\r\n## License\r\n\r\nApache-2.0\r\n\r\n---\r\n\r\n<p align=\"center\">\r\n  <strong>Part of <a href=\"https://github.com/teliagen/teliagen-framework\">Teliagen</a></strong>\r\n</p>\r\n","readmeFilename":"README.md"}