npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@windfish-studio/postgres-indexed-db

v0.3.3

Published

Postgres - IndexedDB Import/Export =========

Downloads

2

Readme

Postgres - IndexedDB Import/Export

Use this library to export a Postgres database to JSON and then import it to HTML5 IndexedDB. Makes use of streams to handle I/O for databases larger than available RAM.

Usage

Both importer and exporter will return RxJS Observable objects, which will emit useful progress messages.

Note: exporter will be unavailable in non-node.js environments and importer will be unavailable in non-browser environments.

Export (Node.js Only)

    var exporter = require('postgres-indexed-db').Exporter;
    
    //exporter config.db is fed into pg.Pool https://www.npmjs.com/package/pg
    var observable = exporter({
      db: {
          database: "dvdrental_sample"
      },
      output_path: "test/exported_data",
      results_per_page: 5000
    });
                      
    observable.subscribe(function(msg_o){
        switch(msg_o.message){
            case "success":
                console.log('finished');
                //Data is output to JSON in the output_path;
                //one .json file per db table.
                break;
            case "progress":
                console.log("%"+(msg_o.value*100).toFixed(2)+" done...");
                break;
        }
    });

Import (Browser Only)

    //Import 
    var Importer = require('postgres-indexed-db').Importer;
    
    //path to data from exporter as 1st param, IndexedDB name as 2nd
    var observable = Importer.import( "test/exported_data", 'test_db' );
    
    observable.subscribe(function(msg_o){
        switch (msg_o.message){
            case "success":
                console.log('finished');
                //Schema + data has been imported to IndexedDB. Indices from Postgres have
                //also been migrated.
                break;
            case "progress":
                console.log((msg_o.value * 100).toFixed(2) + '% done...');
                break;
            case "manifest":
                manifest = msg_o.value;
                break;
        }
    });
    
    //idbImported can be used to query whether a database has been successfully imported.
    //uses localStorage, can be used to avoid a re-import when undesirable
    Importer.idbImported('test_db'); //returns true

Running The Tests

To run the tests, first create a postgres database called 'dvdrental_sample' and extract test/test_db.zip and use the resulting .sql file to populate the database with test data.

Run test/test.js to test the exporter, and then open test/test.html in a browser to test the importer.