1.0.9 • Published 1 year ago

@try-catch-80/pgres v1.0.9

Weekly downloads
-
License
ISC
Repository
github
Last release
1 year ago

PGres

GitHub package.json version GitHub code size in bytes

Introduction

Pgres is just another ORM used for querying postgres databases. It is made to make the setup process very easy. This package depends on the package pg-promise.

NOTE: Pgres can only be used to do CRUD operations on the database. It does not support any schema migration.

Usage

Make a connection object as below:

import { DBConnection } from "@try-catch-80/pgres";

const connection = new DBConnection({
  host: 'localhost',
  port: 5432,
  user: '<your_username>',
  password: '<your_password>',
  database: '<your_dbname>'
});

* For NextJS** applications, you might get a warning in your console,

  WARNING: Creating a duplicate database object for the same connection.

In this case use DBConnectionSingleton instead of DBConnection.


Make models according to your database by extending the model class from BaseModel:

import { BaseModel } from "@try-catch-80/pgres";

export class YourModel extends BaseModel {
  constructor({
    name = '', // these are just named parameters. implement this as you like
    email = '',
    description = ''
  } = {}) {
    const data = {
      name,
      email,
      description
    };

    super({ table: 'users', data, connection }); // You have to call super() to pass the necessary data to BaseModel
    
    /*
      super takes 3 named parameters:
      table (The name of your db table),
      data (The model data),
      connection (The DBConnection object)
    */
  }
}

You have some methods out-of-the-box, such as:\ list: gets all the data for a particular model\ findById: gets data by primary key which should be spelled 'id' in the database. Takes parameter id\ save: doesn't take any parameter. Saves data to the database after initialization\ update: takes model object as parameter. updates the object\ delete: takes model object as parameter. deletes the object

Eample:

Code for list:

import { YourModel } from 'YourModel.js';

const model = new YourModel();
const result = await model.list(); // gives you a list back in json format

\ Code for save:

import { YourModel } from 'YourModel.js';

const model = new YourModel({
  name: 'Jon Doe',
  email: 'jon@doe.com',
  description: 'A software developer'
});

await model.save();

\ Code for findByEmail, update, delete:

import { YourModel } from 'YourModel.js';

const model = new YourModel();
const result = await model.findById(id);

// Change the result as neccessary for update
result.description = 'An open-source software enthusiast';

await model.update(result);


// Delete function is similar
await model.delete(result);

Advanced Usage

To make custom queries to the database, you can add methods to your extended model class. For example:

export class YourModel extends BaseModel {
  // ...rest of the code

  customQuery() {
    return this.connection.db.any(`SELECT * FROM db_table`);
  }
}

To use the connection.db instance, refer to the pg-promise documentaion.

1.0.9

1 year ago

1.0.8

1 year ago

1.0.7

1 year ago

1.0.6

1 year ago

1.0.5

1 year ago

1.0.4

1 year ago

1.0.3

1 year ago

1.0.1

1 year ago

1.0.0

1 year ago