-
Notifications
You must be signed in to change notification settings - Fork 11
/
server.ts
60 lines (52 loc) · 1.45 KB
/
server.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
const pgPromise = require('pg-promise');
const R = require('ramda');
const request = require('request-promise');
// Limit the amount of debugging of SQL expressions
const trimLogsSize : number = 200;
// Database interface
interface DBOptions
{ host : string
, database : string
, user? : string
, password? : string
, port? : number
};
// Actual database options
const options : DBOptions = {
// user: ,
// password: ,
host: 'localhost',
database: 'lovelystay_test',
};
console.info('Connecting to the database:',
`${options.user}@${options.host}:${options.port}/${options.database}`);
const pgpDefaultConfig = {
promiseLib: require('bluebird'),
// Log all querys
query(query) {
console.log('[SQL ]', R.take(trimLogsSize,query.query));
},
// On error, please show me the SQL
error(err, e) {
if (e.query) {
console.error('[SQL ]', R.take(trimLogsSize,e.query),err);
}
}
};
interface GithubUsers
{ id : number
};
const pgp = pgPromise(pgpDefaultConfig);
const db = pgp(options);
db.none('CREATE TABLE github_users (id BIGSERIAL, login TEXT, name TEXT, company TEXT)')
.then(() => request({
uri: 'https://api.github.com/users/gaearon',
headers: {
'User-Agent': 'Request-Promise'
},
json: true
}))
.then((data: GithubUsers) => db.one(
'INSERT INTO github_users (login) VALUES ($[login]) RETURNING id', data)
).then(({id}) => console.log(id))
.then(() => process.exit(0));