Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/evansiroky/gtfs-sequelize
A model of the static GTFS using sequelize.
https://github.com/evansiroky/gtfs-sequelize
gtfs sequelize
Last synced: 3 months ago
JSON representation
A model of the static GTFS using sequelize.
- Host: GitHub
- URL: https://github.com/evansiroky/gtfs-sequelize
- Owner: evansiroky
- License: mit
- Created: 2015-06-11T04:23:02.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2018-01-15T19:13:11.000Z (about 7 years ago)
- Last Synced: 2024-10-14T00:57:08.228Z (4 months ago)
- Topics: gtfs, sequelize
- Language: JavaScript
- Size: 150 KB
- Stars: 20
- Watchers: 3
- Forks: 6
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# gtfs-sequelize
[![npm version](https://badge.fury.io/js/gtfs-sequelize.svg)](http://badge.fury.io/js/gtfs-sequelize) [![Build Status](https://travis-ci.org/evansiroky/gtfs-sequelize.svg?branch=master)](https://travis-ci.org/evansiroky/gtfs-sequelize) [![Dependency Status](https://david-dm.org/evansiroky/gtfs-sequelize.svg)](https://david-dm.org/evansiroky/gtfs-sequelize) [![Test Coverage](https://codeclimate.com/github/evansiroky/gtfs-sequelize/badges/coverage.svg)](https://codeclimate.com/github/evansiroky/gtfs-sequelize/coverage)
A model of the static GTFS using [sequelize.js](http://sequelizejs.com/).
Currently works only with PostgreSQL (including PostGIS), MySQL (with spatial capabilities) and sqlite (but NOT spatialite).
## Table of Contents
* [Installation](#installation)
* [API](#api)## Installation
In order to use this library, you must also install the additional libraries in your project depending on the database that you use.
### PostgreSQL
npm install pg --save
npm install pg-copy-streams --save
npm install pg-query-stream --save
npm install pg-hstore --save#### With pg and node v0.10.x
You must also install the package `promise-polyfill` and write additional code. See [here](https://github.com/brianc/node-postgres/issues/1057) for more details.
### MySQL
npm install mysql --save
npm install streamsql --save### SQLite
npm install sqlite3 --save
npm install streamsql --saveUsage with SQLite requires that sqlite is installed and is available via a unix command line.
## API:
### GTFS(options)
Create a new GTFS API.
Example:
```js
var GTFS = require('gtfs-sequelize');var pgConfig = {
database: 'postgres://gtfs_sequelize:gtfs_sequelize@localhost:5432/gtfs-sequelize-test',
downloadsDir: 'downloads',
gtfsFileOrFolder: 'google_transit.zip',
spatial: true,
sequelizeOptions: {
logging: false
}
}var gtfs = GTFS(pgConfig);
gtfs.loadGtfs(function() {
//database loading has finished callback
});
```#### options
| Key | Value |
| -- | -- |
| database | A database connection string. You must specify a user and a database in your connection string. The database must already exist, but the tables within the db do not need to exist. |
| downloadsDir | The directory where you want the feed zip fils downloaded to or where you're going to read the feed read from. |
| gtfsFileOrFolder | The (zip) file or folder to load the gtfs from |
| interpolateStopTimes | Default is undefined. If true, after loading the stop_times table, all stop_times with undefined arrival and departure times will be updated to include interpolated arrival and departure times. |
| sequelizeOptions | Options to pass to sequelize. Note: to use a specific schema you'll want to pass something like this: `{ schema: 'your_schema' }` |
| spatial | Default is undefined. If true, spatial tables for the shapes and stops will be created. |### gtfs.connectToDatabase()
Return a sequelize api of the database.
Example:
```js
var db = gtfs.connectToDatabase()db.stop.findAll()
.then(stops => {
console.log(stops)
})
```### gtfs.downloadGtfs(callback)
If a url is provided, the feed will be attempted to be downloaded. Works with `http`, `https` and `ftp`.
### gtfs.interpolateStopTimes(callback)
Interpolate stop_times with undefined arrival and departure times. If you load a gtfs with the `interpolateStopTimes` flag set to true, you don't need to call this.
### gtfs.loadGtfs(callback)
Load the gtfs into the database.