TypeScript JavaScript
Clone or download
Latest commit 7ca8ee6 Feb 16, 2018
Permalink
Failed to load latest commit information.
JavaScript updating examples. Feb 16, 2018
TypeScript updating examples. Feb 16, 2018
.gitignore remove typings. Apr 14, 2016
README.md docs + dependencies. Feb 16, 2018
package-lock.json docs + dependencies. Feb 16, 2018
package.json docs + dependencies. Feb 16, 2018
typings.json major updates. Jan 14, 2017

README.md

pg-promise-demo

This is an advanced demo of the best practices of using pg-promise, and managing your database architecture.

It shows how to organize an enterprise-level database application, with consideration for ever-growing complexity of the database and queries.

The demo focuses on the following:

  • The best way to organize your database module
  • Use of the Repository pattern for your database
  • Efficient use of queries via external SQL files
  • Query monitoring and error diagnostics

The demo includes two separate implementations, with identical functionality:

Installing & Running

You can either clone it or install via $ npm install pg-promise-demo.

This demo is here mostly for you to browse through its source code, understand its structure and the overall approach. It is also simple enough that running it isn't really necessary.

However, if you do want to run this application locally, you need to build and and run it according to the type of implementation that you are interested in. See details on the corresponding pages: JavaScript or TypeScript.

Once the application is up and running, you can fire away URL commands in a browser, as per the web API that's implemented, while watching what's happening in:

  • the console output (make sure you have NODE_ENV=development)
  • errors log - file db/errors.log

The application implements two tables: users->products as one-to-many. Once the app is running, you should create and populate those as the very first commands:

/users/create
/users/init
/products/create

After that see other supported API commands in the code:

/users/empty
/users/drop
/users/find/:id
/users/remove/:id
/users/all
/users/total

/products/drop
/products/empty
/products/add/:userId/:name
/products/find/:userId/:name
/products/remove/:id
/products/all
/products/total