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

0.0.6 • Public • Published

@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.

Readme

Keywords

none

Package Sidebar

Install

npm i @ionnet/orm

Weekly Downloads

0

Version

0.0.6

License

ISC

Unpacked Size

57.2 kB

Total Files

25

Last publish

Collaborators

  • lucasion