@ionnet/orm
v0.0.6
Published
A simple TypeScript ORM for SQLite (and other databases in the future)
Downloads
1
Readme
@ionnet/orm
Ionnet ORM is a TypeScript ORM for NodeJS. It is designed to be simple and easy to use, using decorators to define models and relationships, and a simple API to query the database.
Disclaimer
This is a work in progress, and is not ready for production use. Not all features are implemented, and the API is subject to change.
Installation
npm install @ionnet/orm
Decorators need to be enabled in your tsconfig.json
file.
{
"compilerOptions": {
"experimentalDecorators": true,
}
}
Usage
import { DBModel, Field, SQLite } from "@ionnet/orm";
const sql = new SQLite(":memory:"); // SQLite("database.db") to use a file instead of memory.
class Human extends DBModel {
@Field.PrimaryKey({ auto: true })
@Field.INT()
id: number;
@Field.VARCHAR(255)
firstName: string;
@Field.VARCHAR(255)
lastName: string;
@Field.INT()
age: number;
@Field.DATE()
birthday: Date;
}
Human.initialize({
sql: sql
});
Features
- [X] Decorator based models
- [X] SQLite support (WIP, Full support coming)
- [ ] MySQL/MariaDB support
- [ ] Easy user authentication
This will be done using a decorator on the model, and a simple API to create users, register, login, and logout, and handle tokens, sessions, and cookies.
// Example of what this might look like import { DBModel, Field, Authenticator } from "@ionnet/orm"; class User extends Authenticator.Model { // Use the Authenticator.Model class instead of DBMModel to enable authentication. @Field.PrimaryKey({ auto: true }) @Field.INT() id: number; @Authenticator.Username() @Field.INT() username: string; @Authenticator.Password() // This will automatically be varchar(255) and will be stored hashed. password: string; @Authenticator.Email() @Field.VARCHAR(255) email: string; @Field.VARCHAR(255) firstName: string; @Field.VARCHAR(255) lastName: string; @Field.INT() age: number; @Field.DATE() birthday: Date; } // Create a new user const user = await User.register( "username", // This will be assigned to be what the @Authenticator.Username() decorator is on. "plaintext_password", // This will be assigned to be what the @Authenticator.Password() decorator is on. ); // Returns a new User object. // Login const user = await User.login( "username", "plaintext_password", ); // Returns a new User object. If the username or password is incorrect, it will throw an error.