Skip to content

iccicci/sedentary

Repository files navigation

sedentary

Build Status Code Quality Test Coverage

NPM version NPM downloads Stars

Types Documentation Dependents Donate

Monorepo for the Sedentary ORM and its DB engine packages.

Description

An ORM which automatically syncs the DB schema on models change, no migrations between versions are required.

This package is designed to make easy the process of applying changes to the database after model definition changes, more than offer a quick and easy database access interface. Applying changes to the database after releasing a new version of the application is often a frustrating problem, usually solved with migration systems. Applying changes to the database during the development stage, often results in a complex sequence of backward and forward steps through the migrations; this process is complicated more and more especially when working in team with concurrent changes to the models (or the database schema). This package tries to solve these problems all in once.

Usage

import { SedentaryPG } from "sedentary-pg";

const db = new SedentaryPG({ database: "db", user: "user", password: "pass" });

const Items = db.model("Item", {
  num: db.Int(),
  str: db.VarChar({ size: 30 })
});

(async function () {
  await db.connect();

  const item = new Items();

  item.num = 0;
  item.str = "0";

  await item.save();

  const records = await Items.load({});

  console.log(records); // [{ id: 1, num: 0, str: "0" }]
})();

With TypeScript the instance can be typed using Entry<typeof Model>:

import { Entry, SedentaryPG } from "sedentary-pg";

const db = new SedentaryPG({ database: "db", user: "user", password: "pass" });

const Items = db.model("Item", { num: db.Int(), str: db.VarChar({ size: 30 }) });
type Item = Entry<typeof Items>;

const item: Item = new Items();

item.num = 0;
item.str = "0";

Disclaimer

Do not use this package itself! It does not support any DB engine.

A DB engine dedicated extension must be used:

  • MySQL: in todo, not yet planned
  • PostgreSQL: sedentary-pg
  • SQLite: in todo, not yet planned

Documentation

The full documentation is on sedentary.readthedocs.io.

Compatibility

Requires:

  • Node.js: v20
  • TypeScript: v5.7 (or none if used in a JavaScript project).

The package is tested under all Node.js versions currently supported accordingly to Node.js Release.

To work with the package under Windows, bash.exe can be configured as the script-shell.

> npm config set script-shell bash.exe

License

MIT License

Bugs

Bugs and inconsistencies can be reported @github.

Donating

Satoshis can be donated to this bitcoin address if the package is found useful:

1Md9WFAHrXTb3yPBwQWmUfv2RmzrtbHioB

About

The ORM which never needs to migrate

Resources

License

Stars

Watchers

Forks

Packages

No packages published