1 | const path = require('path');
|
2 | const esql = require('sql-extra');
|
3 | const columns = require('@ifct2017/columns');
|
4 |
|
5 | var corpus = null;
|
6 |
|
7 |
|
8 |
|
9 |
|
10 | function load() {
|
11 | if (corpus) return corpus;
|
12 | corpus = require('./corpus');
|
13 | columns.load();
|
14 | return corpus;
|
15 | }
|
16 |
|
17 |
|
18 | function csv() {
|
19 | return path.join(__dirname, 'index.csv');
|
20 | }
|
21 |
|
22 |
|
23 | function sql(tab='hierarchy', opt={}) {
|
24 | var vals = new Set(load().values());
|
25 | vals.delete(null);
|
26 | return esql.setupTable(tab, {code: 'TEXT', parents: 'TEXT', ancestry: 'TEXT', children: 'TEXT'}, vals,
|
27 | Object.assign({pk: 'code', index: true, tsvector: {code: 'A', parents: 'B', ancestry: 'C', children: 'B'}}, opt));
|
28 | }
|
29 |
|
30 |
|
31 | function hierarchy(txt) {
|
32 | if (!corpus) load();
|
33 | var cs = columns(txt);
|
34 | if (!cs.length) return null;
|
35 | return corpus.get(cs[0].code) || null;
|
36 | }
|
37 | hierarchy.load = load;
|
38 | hierarchy.csv = csv;
|
39 | hierarchy.sql = sql;
|
40 | module.exports = hierarchy;
|