GithubHelp home page GithubHelp logo

decolize's Introduction

Decolize

Build Status codecov license

Note: Decolize is under development. It can not be used yet.

Decolize is the decorator-driven O/R mapper for TypeScript (Node.js).

Getting Started

Installation

npm install -S decolize

Usage

To use decolize, set experimentalDecorators and emitDecoratorMetadata to true:

{
    "compilerOptions": {
        "experimentalDecorators": true,
        "emitDecoratorMetadata": true
    }
}

For example:

import * as Sequelize from 'sequelize';
import Decolize from 'decolize';
import { Table, Id, GeneratedValue, Column } from 'decolize/persistences';
import { NotEmpty, Len } from 'decolize/validators';

// CREATE TABLE greeting (...);
@Table()
class Greeting {
    // id INTEGER PRIMARY KEY
    @Id()
    @GeneratedValue()
    public id?: number;

    // message VARCHAR(255) NOT NULL
    @Column({ allowNull: false })
    @NotEmpty()
    @Len({ max: 100 })
    public message?: string;

    public toString(): string {
        return `${this.id}: ${this.message}`;
    }
}

const sequelize = new Sequelize('sqlite::memory:');
const decolize = new Decolize(sequelize);
decolize.register(Greeting);

const greetingRepository = decolize.createRepository<Greeting, number>(Greeting);

sequelize.sync().then(async () => {
    const greeting = new Greeting();
    greeting.message = 'Hello World!';

    // INSERT INTO greeting (message) VALUES ('Hello World!');
    await greetingRepository.save(greeting);
    console.log(`${greeting}`);

    greeting.message = 'Hello Data World!';
    // UPDATE greeting SET message = 'Hello Data World!' WHERE id = 1;
    await greetingRepository.save(greeting);
    console.log(`${greeting}`);

    const greetings = ['message 1', 'message 2'].map((message) => {
        const g = new Greeting();
        g.message = message;
        return g;
    });
    // INSERT INTO greeting (message) VALUES ('message 1'), ('mssage 2');
    greetingRepository.save(greetings);
});

License

MIT License

Author

YAMADA Koji

decolize's People

Contributors

kou64yama avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.