@agape/orm
TypeScript icon, indicating that this package has built-in type declarations

0.4.0 • Public • Published

@agape/model

Object relational mapping for data models

Synopsis

@Model class Foo {

    @Primary id?: string

    @Field foo: string
    
    @Field bar: number

    @Field baz: string[]
    
}

const orm = new Orm()

const connection = new MongoConnection(DATABASE_URL);
const database = new MongoDatabase(connection, 'foo')
orm.registerDatabase('default', database)
orm.registerModel(Foo)

let foo = new Foo()
foo.foo = "Hello World"
foo.bar = 42
foo.baz = ['foo','bar','baz']

let { id } = orm.insert(Foo, foo)     // create

foo = orm.retrieve(Foo, id).exec()    // retrieve

foo.bar = 57

orm.update(Foo, id, foo)              // update

let foos = orm.list(Foo).exec()       // list

orm.delete(Foo, id).exec()            // delete

Description

Currently only Mongo database connections are supported.

Connecting

const connection = new MongoConnection(DATABASE_URL);
const database = new MongoDatabase(connection, 'foo')
orm.registerDatabase('default', database)

new MongoConnection('mongodb://localhost:27017')

Create a new mongo connection using a mongdb address

new MongoDatabase(connection, dbName)

Connect to a database

orm.registerDatabase('default', database)

Register the database with the orm

Models

orm.registerModel(Foo)

Register the model with the orm

Queries

Execute queries against the orm using the model

Insert

let foo = new Foo()
foo.foo = "Hello World"
foo.bar = 42
foo.baz = ['foo','bar','baz']

let { id } = orm.insert(Foo, foo)   

Retrieve

foo = orm.retrieve(Foo, id).exec()  
foo = orm.retrieve(Foo, id).inflate() 

Execute vs Inflate

foo = orm.retrieve(Foo, id).exec()
foo instanceof Foo; // false

Calling .exec() will return a plain old javascript object, not an instance of the model, the equivalent type would be Pick<Foo, keyof Foo>.

foo = orm.list(Foo, id).inflate()
foo instanceof Foo; // true

Calling .inflate() will return an instance of the model.

List

foos = orm.list(Foo).exec() 
foos = orm.list(Foo).list() 

Update

orm.update(Foo, id, foo) 

Delete

orm.delete(Foo, id).exec() 

Author

Maverik Minett maverik.minett@gmail.com

© 2023 Maverik Minett

License

MIT

Readme

Keywords

Package Sidebar

Install

npm i @agape/orm

Weekly Downloads

1

Version

0.4.0

License

MIT

Unpacked Size

63.9 kB

Total Files

35

Last publish

Collaborators

  • maverik.minett