const IpfsApi = require('ipfs-api'); const OrbitDB = require('orbit-db'); const Express = require('express'); const DBManager = require('./dbmanager.js').DBManager const api_port = process.env.API_PORT; const ipfs_host = process.env.IPFS_HOST const ipfs_port = process.env.IPFS_PORT const orbitdb_dir = process.env.ORBITDB_DIR const app = Express(); const ipfs = IpfsApi(ipfs_host, ipfs_port) const orbitdb = new OrbitDB(ipfs, orbitdb_dir) const dbm = new DBManager(orbitdb) app.use(function (err, req, res, next) { console.error(err) res.status(500).json('ERROR') }) const asyncMiddleware = fn => (req, res, next) => { Promise.resolve(fn(req, res, next)) .catch(next); }; app.get('/dbs', (req, res, next) => { try { return res.json(dbm.db_list()); } catch(err) {next(err)} }); app.get('/db/:dbname', (req, res, next) => { try { return res.json(dbm.db_info(req.params.dbname)); } catch(err) {next(err)} }); app.post('/db/:dbname', asyncMiddleware( async (req, res, next) => { db = await dbm.get(req.params.dbname, req.body) return res.json(dbm.db_info(db.dbname)); })); async function init() { try { app.listen(api_port, () => { console.log(`Server running on port ${api_port}`); }); } catch (e) { console.error(e) process.exit(1) } } init()