Skip to content

Commit 32e4e67

Browse files
author
pemrouz
committed
disconnect hook to automatically push change and
disable tests until api stable
1 parent c2a1c4c commit 32e4e67

File tree

3 files changed

+322
-325
lines changed

3 files changed

+322
-325
lines changed

dist/index.js

Lines changed: 64 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -25,14 +25,14 @@ var _header = require('utilise/header');
2525

2626
var _header2 = _interopRequireDefault(_header);
2727

28-
var _client = require('utilise/client');
29-
30-
var _client2 = _interopRequireDefault(_client);
31-
3228
var _keys = require('utilise/keys');
3329

3430
var _keys2 = _interopRequireDefault(_keys);
3531

32+
var _noop = require('utilise/noop');
33+
34+
var _noop2 = _interopRequireDefault(_noop);
35+
3636
var _key = require('utilise/key');
3737

3838
var _key2 = _interopRequireDefault(_key);
@@ -52,9 +52,6 @@ var _is2 = _interopRequireDefault(_is);
5252
/* istanbul ignore next */
5353
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
5454

55-
// -------------------------------------------
56-
// Loads resources from the /resources folder
57-
// -------------------------------------------
5855
function mysql(ripple) {
5956
log('creating');
6057
var type = ripple.types['application/data'];
@@ -69,71 +66,74 @@ var init = function init(ripple) {
6966
return function (config) {
7067
var con = require('mysql').createPool(config);
7168
escape = con.escape.bind(con);
72-
7369
return {
74-
add: exec('add')(con),
75-
update: exec('update')(con),
76-
remove: exec('remove')(con)
70+
update: crud(ripple, con)('update'),
71+
remove: crud(ripple, con)('remove'),
72+
add: crud(ripple, con)('add'),
73+
load: load(ripple, con)
74+
// change: change(ripple, con)
7775
};
7876
};
7977
};
8078

81-
var exec = function exec(type) {
82-
return function (con) {
83-
return function (ripple) {
84-
return function (res, index, value) {
85-
var table = (0, _header2.default)('mysql.table')(res),
86-
xto = (0, _key2.default)('headers.mysql.to')(res),
87-
p = (0, _promise2.default)();
88-
89-
if (xto && !xto(res, { key: index, value: value, type: type })) return;
90-
if (!index) return load(con)(ripple)(res);
91-
if (!table) return;
92-
93-
var levels = index.split('.'),
94-
record = levels.length === 1 ? (levels.shift(), value) : res.body[levels.shift()],
95-
field = levels.shift();
96-
97-
if (field) record = (0, _key2.default)(['id', field])(record);
98-
if (!_is2.default.obj(record) || levels.length || field && !_is2.default.in(res.headers.mysql.fields)(field)) return log('cannot generate SQL for', res.name, index);
99-
100-
var sql = sqls[type](table, (0, _key2.default)(res.headers.mysql.fields)(record));
101-
log('SQL', sql.grey);
102-
con.query(sql, function (e, rows) {
103-
if (e) return err(type, table, 'failed', e);
104-
log(type.green.bold, table, 'done', rows.insertId ? (0, _str2.default)(rows.insertId).grey : '');
105-
106-
rows.insertId ? p.resolve(value.id = rows.insertId) : p.resolve();
107-
});
79+
var crud = function crud(ripple, con) {
80+
return function (type) {
81+
return function (name, record) {
82+
var res = ripple.resources[name],
83+
table = (0, _header2.default)('mysql.table')(res),
84+
fields = (0, _header2.default)('mysql.fields')(res),
85+
p = (0, _promise2.default)(),
86+
sql = void 0;
87+
88+
if (!table) return deb('no table', name);
89+
if (!(sql = sqls[type](table, (0, _key2.default)(fields)(record)))) return deb('no sql', name);
90+
log('SQL', sql.grey);
91+
92+
con.query(sql, function (e, rows) {
93+
if (e) return err(type, table, 'failed', e);
94+
log(type.green.bold, table, 'done', rows.insertId ? (0, _str2.default)(rows.insertId).grey : '');
95+
p.resolve(rows.insertId || record.id);
96+
});
10897

109-
return p;
110-
};
98+
return p;
11199
};
112100
};
113101
};
114102

115-
var load = function load(con) {
116-
return function (ripple) {
117-
return function (res) {
118-
var table = (0, _header2.default)('mysql.table')(res) || res.name,
119-
p = (0, _promise2.default)();
120-
121-
if ((0, _key2.default)(loaded)(res)) return;
122-
(0, _key2.default)(loaded, true)(res);
123-
124-
con.query('SHOW COLUMNS FROM ' + table, function (e, rows) {
125-
if (e && e.code == 'ER_NO_SUCH_TABLE') return log('no table', table), (0, _key2.default)('headers.mysql.table', '')(res);
103+
// const change = (ripple, con) => type => (res, change) => {
104+
// let levels = (change.key || '').split('.')
105+
// , xto = header('mysql.xto')(res)
106+
// , index = levels[0]
107+
// , field = levels[1]
108+
// , record = change.value
109+
110+
// if (!change.key) return load(ripple, con)(res)
111+
// if (!levels.length || levels.length > 2 || (field && !is.in(fields)(field))) return deb('cannot update', name, key)
112+
// if (xto && !xto(res, change)) return deb('skipping update', name)
113+
// if (field) record = key(['id', field])(res.body[index])
114+
// crud(ripple, con)(type)(res.name, record)
115+
// }
116+
117+
var load = function load(ripple, con) {
118+
return function (name) {
119+
var res = ripple.resources[name],
120+
table = (0, _header2.default)('mysql.table')(res) || res.name,
121+
p = (0, _promise2.default)();
122+
123+
con.query('SHOW COLUMNS FROM ' + table, function (e, rows) {
124+
if (e && e.code == 'ER_NO_SUCH_TABLE') return log('no table', table), (0, _key2.default)('headers.mysql.table', '')(res);
125+
if (e) return err(table, e);
126+
(0, _key2.default)('headers.mysql.fields', rows.map((0, _key2.default)('Field')))(res);
127+
(0, _key2.default)('headers.mysql.table', table)(res);
128+
129+
con.query('SELECT * FROM ' + table, function (e, rows) {
126130
if (e) return err(table, e);
127-
(0, _key2.default)('headers.mysql.fields', rows.map((0, _key2.default)('Field')))(res);
128-
(0, _key2.default)('headers.mysql.table', table)(res);
129-
130-
con.query('SELECT * FROM ' + table, function (e, rows) {
131-
if (e) return err(table, e);
132-
log('got', table, rows.length);
133-
ripple({ name: res.name, body: rows });
134-
});
131+
log('got'.green, table, (0, _str2.default)(rows.length).grey);
132+
p.resolve(rows);
135133
});
136-
};
134+
});
135+
136+
return p;
137137
};
138138
};
139139

@@ -142,7 +142,7 @@ var sqls = {
142142
return 'INSERT INTO {table} ({keys}) VALUES ({values});'.replace('{table}', name).replace('{keys}', (0, _keys2.default)(body).filter((0, _not2.default)((0, _is2.default)('id'))).map((0, _prepend2.default)('`')).map((0, _append2.default)('`')).join(',')).replace('{values}', (0, _keys2.default)(body).filter((0, _not2.default)((0, _is2.default)('id'))).map((0, _from2.default)(body)).map(escape).join(','));
143143
},
144144
update: function update(name, body) {
145-
return 'UPDATE {table} SET {kvpairs} WHERE id = {id};'.replace('{table}', name).replace('{id}', body['id']).replace('{kvpairs}', (0, _keys2.default)(body).filter((0, _not2.default)((0, _is2.default)('id'))).map(kvpair(body)).join(','));
145+
return (0, _keys2.default)(body).length == 1 && 'id' in body ? '' : 'UPDATE {table} SET {kvpairs} WHERE id = {id};'.replace('{table}', name).replace('{id}', body['id']).replace('{kvpairs}', (0, _keys2.default)(body).filter((0, _not2.default)((0, _is2.default)('id'))).map(kvpair(body)).join(','));
146146
},
147147
remove: function remove(name, body) {
148148
return 'DELETE FROM {table} WHERE id = {id};'.replace('{table}', name).replace('{id}', body['id']);
@@ -168,7 +168,7 @@ var strip = function strip(next) {
168168
};
169169
};
170170

171-
var loaded = 'headers.mysql.loaded',
172-
log = require('utilise/log')('[ri/mysql]'),
173-
err = require('utilise/err')('[ri/mysql]');
171+
var log = require('utilise/log')('[ri/mysql]'),
172+
err = require('utilise/err')('[ri/mysql]'),
173+
deb = _noop2.default; //require('utilise/log')('[ri/mysql]')
174174
var escape;

src/index.js

Lines changed: 48 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -9,56 +9,54 @@ export default function mysql(ripple){
99
const init = ripple => config => {
1010
const con = require('mysql').createPool(config)
1111
escape = con.escape.bind(con)
12-
1312
return {
14-
add : exec('add')(con)
15-
, update: exec('update')(con)
16-
, remove: exec('remove')(con)
13+
update: crud(ripple, con)('update')
14+
, remove: crud(ripple, con)('remove')
15+
, add : crud(ripple, con)('add')
16+
, load : load(ripple, con)
17+
// change: change(ripple, con)
1718
}
1819
}
1920

20-
const exec = type => con => ripple => (res, index, value) => {
21-
const table = header('mysql.table')(res)
22-
, xto = key('headers.mysql.to')(res)
23-
, p = promise()
21+
const crud = (ripple, con) => type => (name, record) => {
22+
let res = ripple.resources[name]
23+
, table = header('mysql.table')(res)
24+
, fields = header('mysql.fields')(res)
25+
, p = promise()
26+
, sql
2427

25-
if (xto && !xto(res, { key: index, value, type })) return
26-
if (!index) return load(con)(ripple)(res)
27-
if (!table) return
28-
29-
var levels = index.split('.')
30-
, record = levels.length === 1
31-
? (levels.shift(), value)
32-
: res.body[levels.shift()]
33-
, field = levels.shift()
34-
35-
if (field) record = key(['id', field])(record)
36-
if (!is.obj(record)
37-
|| levels.length
38-
|| (field && !is.in(res.headers.mysql.fields)(field)))
39-
return log('cannot generate SQL for', res.name, index)
40-
41-
const sql = sqls[type](table, key(res.headers.mysql.fields)(record))
28+
if (!table) return deb('no table', name)
29+
if (!(sql = sqls[type](table, key(fields)(record)))) return deb('no sql', name)
4230
log('SQL', sql.grey)
31+
4332
con.query(sql, (e, rows) => {
4433
if (e) return err(type, table, 'failed', e)
4534
log(type.green.bold, table, 'done', rows.insertId ? str(rows.insertId).grey : '')
46-
47-
rows.insertId
48-
? p.resolve(value.id = rows.insertId)
49-
: p.resolve()
35+
p.resolve(rows.insertId || record.id)
5036
})
5137

5238
return p
5339
}
5440

55-
const load = con => ripple => res => {
56-
const table = header('mysql.table')(res) || res.name
41+
// const change = (ripple, con) => type => (res, change) => {
42+
// let levels = (change.key || '').split('.')
43+
// , xto = header('mysql.xto')(res)
44+
// , index = levels[0]
45+
// , field = levels[1]
46+
// , record = change.value
47+
48+
// if (!change.key) return load(ripple, con)(res)
49+
// if (!levels.length || levels.length > 2 || (field && !is.in(fields)(field))) return deb('cannot update', name, key)
50+
// if (xto && !xto(res, change)) return deb('skipping update', name)
51+
// if (field) record = key(['id', field])(res.body[index])
52+
// crud(ripple, con)(type)(res.name, record)
53+
// }
54+
55+
const load = (ripple, con) => name => {
56+
const res = ripple.resources[name]
57+
, table = header('mysql.table')(res) || res.name
5758
, p = promise()
5859

59-
if (key(loaded)(res)) return
60-
key(loaded, true)(res)
61-
6260
con.query(`SHOW COLUMNS FROM ${table}`, (e, rows) => {
6361
if (e && e.code == 'ER_NO_SUCH_TABLE') return log('no table', table), key('headers.mysql.table', '')(res)
6462
if (e) return err(table, e)
@@ -67,11 +65,12 @@ const load = con => ripple => res => {
6765

6866
con.query(`SELECT * FROM ${table}`, (e, rows) => {
6967
if (e) return err(table, e)
70-
log('got', table, rows.length)
71-
ripple({ name: res.name, body: rows })
68+
log('got'.green, table, str(rows.length).grey)
69+
p.resolve(rows)
7270
})
73-
7471
})
72+
73+
return p
7574
}
7675

7776
const sqls = {
@@ -90,14 +89,15 @@ const sqls = {
9089
.join(',')
9190
)
9291
}
93-
, update(name, body) { return 'UPDATE {table} SET {kvpairs} WHERE id = {id};'
94-
.replace('{table}', name)
95-
.replace('{id}', body['id'])
96-
.replace('{kvpairs}', keys(body)
97-
.filter(not(is('id')))
98-
.map(kvpair(body))
99-
.join(',')
100-
)
92+
, update(name, body) { return keys(body).length == 1 && ('id' in body) ? ''
93+
: 'UPDATE {table} SET {kvpairs} WHERE id = {id};'
94+
.replace('{table}', name)
95+
.replace('{id}', body['id'])
96+
.replace('{kvpairs}', keys(body)
97+
.filter(not(is('id')))
98+
.map(kvpair(body))
99+
.join(',')
100+
)
101101
}
102102
, remove(name, body) { return 'DELETE FROM {table} WHERE id = {id};'
103103
.replace('{table}', name)
@@ -123,13 +123,13 @@ import promise from 'utilise/promise'
123123
import prepend from 'utilise/prepend'
124124
import append from 'utilise/append'
125125
import header from 'utilise/header'
126-
import client from 'utilise/client'
127126
import keys from 'utilise/keys'
127+
import noop from 'utilise/noop'
128128
import key from 'utilise/key'
129129
import not from 'utilise/not'
130130
import str from 'utilise/str'
131131
import is from 'utilise/is'
132-
const loaded = 'headers.mysql.loaded'
133-
, log = require('utilise/log')('[ri/mysql]')
132+
const log = require('utilise/log')('[ri/mysql]')
134133
, err = require('utilise/err')('[ri/mysql]')
134+
, deb = noop //require('utilise/log')('[ri/mysql]')
135135
var escape

0 commit comments

Comments
 (0)