0.15.5 • Published 3 months ago

@egomobile/orm v0.15.5

Weekly downloads
-
License
LGPL-3.0
Repository
github
Last release
3 months ago

npm last build PRs Welcome

@egomobile/orm

A simple and generic ORM mapper.

Install

Execute the following command from your project folder, where your package.json file is stored:

npm install --save @egomobile/orm

Usage

import { createDataContext, DbNullable, NULL as DbNull } from "@egomobile/orm";
import { PostgreSQLDataAdapter } from "@egomobile/orm-pg"; // npm i @egomobile/orm-pg

// the reason, why non-nullable fields
// can have (null) values is, that (null)
// indicates, that the underlying fields
// should not be defined / updated in the
// database
//
// to set a value explicitly (null) in database
// use the value of DbNull instead
class User {
  // non-nullable fields
  public id: number | null = null;
  public first_name: string | null = null;
  public last_name: string | null = null;

  // nullable fields
  public email: DbNullable<string | null> = null;
}

async function main() {
  const context = await createDataContext({
    adapter: new PostgreSQLDataAdapter(),
    entities: {
      // name of the entity / table
      users: {
        ids: ["id"], // list of column(s) which represent the ID
        type: User, // the class / type to use to create objects from
      },
    },
  });

  const listOfUsers = await context.find(User, {
    // the following both settings depend on the underlying
    // data adapter
    where: "is_active=$1 AND is_deleted=$2",
    params: [true, false], // $1, $2

    offset: 1, // skip the first
    limit: 100, // only return 100 rows
  });

  // return a user with ID 5979
  const specificUser = await context.findOne(User, {
    where: "id=$1",
    params: [5979], // $1
  });

  if (specificUser !== null) {
    // update with new data
    specificUser.last_name = "Doe";
    specificUser.first_name = "Jane";
    specificUser.email = DbNull;
    await context.update(specificUser);

    // remove from database
    await context.remove(specificUser);
  } else {
    console.log("User not found");
  }
}

// create new POCO
const newUser = new User();
newUser.first_name = "John";
newUser.last_name = "Doe";
// ... and add it to database
await context.insert(newUser);

// depending on data adapter, it might be
// possible to do raw queries
const result: any = await context.query(
  "SELECT * FROM users WHERE id=$1 AND is_active=$2;",
  23979,
  true
);
console.log(result);

main().catch(console.error);

Documentation

The API documentation can be found here.

0.15.4

3 months ago

0.15.5

3 months ago

0.15.2

3 months ago

0.15.3

3 months ago

0.15.0

3 months ago

0.15.1

3 months ago

0.14.0

5 months ago

0.13.1

9 months ago

0.12.0

1 year ago

0.10.0

1 year ago

0.11.0

1 year ago

0.10.1

1 year ago

0.9.0

1 year ago

0.11.1

1 year ago

0.8.0

2 years ago

0.5.0

2 years ago

0.4.1

2 years ago

0.7.0

2 years ago

0.6.1

2 years ago

0.6.0

2 years ago

0.4.0

2 years ago

0.3.2

2 years ago

0.3.1

2 years ago

0.3.0

2 years ago

0.2.1

2 years ago

0.2.0

2 years ago

0.1.0

2 years ago

0.0.1

2 years ago