0.1.7 • Published 10 years ago

pglib v0.1.7

Weekly downloads
69
License
-
Repository
github
Last release
10 years ago

PGLIB

Dependency Status Downloads Version

#TL;DR ###Install

npm install pglib --save

###Code

tsconfig.json:

{
    "compilerOptions": {
        "module": "commonjs",
        "emitDecoratorMetadata": true,
        "experimentalDecorators": true,
        "sourceMap": true,
        "target": "es2015"
    },
    "exclude": [
        "node_modules"
    ]
}

file.ts

import * as pglib   from "pglib";

export var PeopleColumns = {
    id: "id",
    name: "name",
    age: "age",
    data: "data"
};

pglib.conString = {
    user: process.env.POSTGRES_PORT_5432_TCP_USER,
    password: process.env.POSTGRES_PORT_5432_TCP_PASSWORD,
    database: process.env.POSTGRES_PORT_5432_TCP_DB,
    port: process.env.POSTGRES_PORT_5432_TCP_PORT,
    host: process.env.POSTGRES_PORT_5432_TCP_ADDR
};

@pglib.Table({ schema: "public", table: "people" })
export class People {

    @pglib.DataType(pglib.Types.string)
    @pglib.ColumnName(PeopleColumns.id)
    id: string;

    @pglib.DataType(pglib.Types.string)
    @pglib.ColumnName(PeopleColumns.name)
    name: string;

    @pglib.ColumnName(PeopleColumns.age)
    @pglib.DataType(pglib.Types.number)
    age: number;

    @pglib.ColumnName(PeopleColumns.data)
    @pglib.DataType(pglib.Types.json)
    data: Object;
}
async function getPeople() {
    try {
        var results = await new pglib.Query<People>((<any>People))
            .lessThan({ age: 50 })
            .orderBy([PeopleColumns.age])
            .select([PeopleColumns.age, PeopleColumns.name])
            .q();
        console.log(results.rows);
    } catch (error) {
        console.log(error);
    }
}
getPeople();

Explanation

To start to use pgLib you have to pass the class, not an instance. Though this can be changed anytime.

@pglib.Table({ schema: "public", table: "people" })
export class People {

    @pglib.DataType(pglib.Types.string)
    @pglib.ColumnName(PeopleColumns.id)
    id: string;

    @pglib.DataType(q.Types.string)
    @pglib.ColumnName(PeopleColumns.name)
    name: string;

    @pglib.ColumnName(PeopleColumns.age)
    @pglib.DataType(q.Types.number)
    age: number;

    @pglib.ColumnName(PeopleColumns.data)
    @pglib.DataType(q.Types.json)
    data: Object;
}

It has to have by the moment (if anyone feels this can be improved just pull request)

  • The class has to have a schema and a table.
  • Every property has to have a column name and a data type.

Currently only Schema, Table, DataType and ColumnName are supported.

The Schema and Table where the table is located:

@pglib.Table({ schema: "public", table: "people" })

The data type of the column

@pglib.DataType(q.Types.string)

Currently only those types are supported:

export enum Types {
    string,
    number,
    json
}

And the name of the column:

@pglib.ColumnName(PeopleColumns.data)
0.1.7

10 years ago

0.1.6

10 years ago

0.1.5

10 years ago

0.1.4

10 years ago

0.1.3

10 years ago

0.1.2

10 years ago

0.1.1

10 years ago

0.1.0

10 years ago

0.0.9

10 years ago

0.0.8

10 years ago

0.0.7

10 years ago

0.0.6

10 years ago

0.0.5

10 years ago

0.0.4

10 years ago

0.0.3

10 years ago

0.0.2

10 years ago

0.0.1

10 years ago