@cyklang/cli 0.7.5 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/build/Cmd.js CHANGED
@@ -44,12 +44,18 @@ class Cmd extends commander_1.Command {
44
44
  this.option('--env <env>', 'path to the environment variables file');
45
45
  }
46
46
  async prologue(options) {
47
- const dotenvOutput = dotenv_1.default.config({ path: options.env });
48
- if (dotenvOutput.error !== undefined)
49
- throw dotenvOutput.error;
47
+ if (options.env || fs.existsSync('.env')) {
48
+ const dotenvOutput = dotenv_1.default.config({ path: options.env });
49
+ if (dotenvOutput.error !== undefined)
50
+ throw dotenvOutput.error;
51
+ }
50
52
  const structure = new core_1.Structure();
51
- if (process.env.DBREMOTE_URL === undefined)
52
- throw 'DBREMOTE_URL undefined';
53
+ if (!process.env.DBREMOTE_URL)
54
+ throw 'DBREMOTE_URL environment variable undefined';
55
+ if (!process.env.USER_NAME)
56
+ throw 'USER_NAME environment variable undefined';
57
+ if (!process.env.USER_PASSWORD)
58
+ throw 'USER_PASSWORD environment variable undefined';
53
59
  logger.info('Cyk server: ' + process.env.DBREMOTE_URL);
54
60
  const nodeCrypto = new NodeCrypto_1.NodeCrypto();
55
61
  this.dbRemote = new core_1.DBRemote(structure.scope, process.env.DBREMOTE_URL, nodeCrypto);
@@ -320,6 +320,7 @@ class TableDropCommand extends Cmd_1.Cmd {
320
320
  constructor(name, description) {
321
321
  super(name);
322
322
  this.description(description)
323
+ .option('-y --yes', 'confirmation is not required')
323
324
  .argument('<table>', 'table name')
324
325
  .action(async (table, options) => {
325
326
  await this.commandDrop(table, options);
@@ -335,8 +336,14 @@ class TableDropCommand extends Cmd_1.Cmd {
335
336
  console.log('table ' + table + ' does not exist');
336
337
  return;
337
338
  }
338
- const reply = await inquirer_1.default.prompt({ type: 'confirm', name: 'confirm', message: 'Drop table ' + table + '?' });
339
- if (reply.confirm && this.dbManager) {
339
+ let dropConfirmed = (options.yes !== undefined);
340
+ if (dropConfirmed === false) {
341
+ const reply = await inquirer_1.default.prompt({ type: 'confirm', name: 'confirm', message: 'Drop table ' + table + '?' });
342
+ if (reply.confirm) {
343
+ dropConfirmed = true;
344
+ }
345
+ }
346
+ if (dropConfirmed) {
340
347
  await dropTable(table, this.dbManager);
341
348
  }
342
349
  }
@@ -352,7 +359,9 @@ class TableDropCommand extends Cmd_1.Cmd {
352
359
  */
353
360
  async function dropTable(table, dbManager) {
354
361
  const dbTable = await dbManager.dbTableExist(table);
355
- if (dbTable)
362
+ if (dbTable) {
356
363
  await dbManager.dbTableDelete(dbTable);
364
+ console.log('table ' + dbTable.name + ' dropped');
365
+ }
357
366
  }
358
367
  exports.dropTable = dropTable;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cyklang/cli",
3
- "version": "0.7.5",
3
+ "version": "0.8.0",
4
4
  "description": "cyklang CLI",
5
5
  "main": "build/index.js",
6
6
  "scripts": {
package/run_test.sh ADDED
@@ -0,0 +1,11 @@
1
+ #!/bin/sh
2
+
3
+ cyk table drop -y t_film_actor
4
+ cyk table drop -y t_film
5
+ cyk table drop -y t_actor
6
+
7
+ cyk module upload test/db/t20.xml
8
+ cyk module upload test/db/t22.xml
9
+
10
+ cyk test test/db/t*.xml
11
+
package/src/Cmd.ts CHANGED
@@ -22,11 +22,16 @@ export class Cmd extends Command {
22
22
 
23
23
  async prologue(options: any): Promise<SigninResponse> {
24
24
 
25
- const dotenvOutput = dotenv.config({ path: options.env })
26
- if (dotenvOutput.error !== undefined) throw dotenvOutput.error
25
+ if (options.env || fs.existsSync('.env')) {
26
+ const dotenvOutput = dotenv.config({ path: options.env })
27
+ if (dotenvOutput.error !== undefined) throw dotenvOutput.error
28
+ }
27
29
 
28
30
  const structure = new Structure()
29
- if (process.env.DBREMOTE_URL === undefined) throw 'DBREMOTE_URL undefined'
31
+ if (! process.env.DBREMOTE_URL) throw 'DBREMOTE_URL environment variable undefined'
32
+ if (! process.env.USER_NAME) throw 'USER_NAME environment variable undefined'
33
+ if (! process.env.USER_PASSWORD) throw 'USER_PASSWORD environment variable undefined'
34
+
30
35
  logger.info('Cyk server: ' + process.env.DBREMOTE_URL)
31
36
  const nodeCrypto = new NodeCrypto()
32
37
  this.dbRemote = new DBRemote(structure.scope, process.env.DBREMOTE_URL, nodeCrypto)
@@ -324,6 +324,7 @@ class TableDropCommand extends Cmd {
324
324
  constructor(name: string, description: string) {
325
325
  super(name)
326
326
  this.description(description)
327
+ .option('-y --yes', 'confirmation is not required')
327
328
  .argument('<table>', 'table name')
328
329
  .action(async (table, options) => {
329
330
  await this.commandDrop(table, options)
@@ -334,18 +335,25 @@ class TableDropCommand extends Cmd {
334
335
  try {
335
336
  await this.prologue(options)
336
337
  if (!this.dbManager) throw 'dbManager undefined'
337
-
338
+
338
339
  const dbTable = await this.dbManager.dbTableExist(table)
339
340
  if (!dbTable) {
340
341
  console.log('table ' + table + ' does not exist')
341
342
  return
342
343
  }
343
- const reply = await inquirer.prompt({ type: 'confirm', name: 'confirm', message: 'Drop table ' + table + '?' })
344
- if (reply.confirm && this.dbManager) {
344
+ let dropConfirmed = (options.yes !== undefined)
345
+ if (dropConfirmed === false) {
346
+ const reply = await inquirer.prompt({ type: 'confirm', name: 'confirm', message: 'Drop table ' + table + '?' })
347
+ if (reply.confirm) {
348
+ dropConfirmed = true
349
+ }
350
+ }
351
+
352
+ if (dropConfirmed) {
345
353
  await dropTable(table, this.dbManager)
346
354
  }
347
355
  }
348
- catch(err) {
356
+ catch (err) {
349
357
  logger.error(err)
350
358
  }
351
359
  }
@@ -358,8 +366,10 @@ class TableDropCommand extends Cmd {
358
366
  */
359
367
  export async function dropTable(table: string, dbManager: DBManager) {
360
368
  const dbTable = await dbManager.dbTableExist(table)
361
- if (dbTable)
362
- await dbManager.dbTableDelete(dbTable)
369
+ if (dbTable) {
370
+ await dbManager.dbTableDelete(dbTable)
371
+ console.log('table ' + dbTable.name + ' dropped')
372
+ }
363
373
  }
364
374
 
365
375
 
@@ -0,0 +1,23 @@
1
+ New film ID 1
2
+ films_actors.resultset.at(0).t_actor.last_name CHANE YOU KAYE
3
+ actor 1 Maria CHANE YOU KAYE, film 1 La mélodie du bonheur
4
+ string(films_actors.resultset) : <object>
5
+ <object name="t_actor">
6
+ <number name="actor_id">1</number>
7
+ <string name="first_name" literal="">Maria</string>
8
+ <string name="last_name" literal="">CHANE YOU KAYE</string>
9
+ <datetime name="last_update">
10
+ </datetime>
11
+ <string name="cyk_remark" literal="">remarque</string>
12
+ <boolean name="cyk_disable">
13
+ </boolean>
14
+ </object>
15
+ <object name="t_film">
16
+ <number name="film_id">1</number>
17
+ <string name="title" literal="">La mélodie du bonheur</string>
18
+ <string name="description" literal="">Le film préféré de Mao</string>
19
+ <number name="release_year">1965</number>
20
+ <number name="length">60</number>
21
+ <number name="language_id">1</number>
22
+ </object>
23
+ </object>
@@ -1,7 +1,7 @@
1
- <?xml-model href="cyklang.xsd" ?>
1
+ <?xml-model href="https://www.cyklang.net/schema/cyklang.xsd" ?>
2
2
  <module>
3
3
 
4
- <db.table name="actor">
4
+ <db.table name="t_actor">
5
5
  <number name="actor_id" type="int" primary="" generated='by default'/>
6
6
  <string name="first_name" type="varchar(50)"/>
7
7
  <string name="last_name" type="text" />
@@ -10,7 +10,7 @@
10
10
  <boolean name="cyk_disable" type="boolean"/>
11
11
  </db.table>
12
12
 
13
- <db.table name="film">
13
+ <db.table name="t_film">
14
14
  <number name="film_id" type="int" primary="" generated='by default'/>
15
15
  <string name="title" type="varchar(255)" />
16
16
  <string name="description" type="text" />
@@ -19,23 +19,45 @@
19
19
  <number name="language_id" type="int"/>
20
20
  </db.table>
21
21
 
22
- <db.table name="film_actor">
23
- <number name="actor_id" type="int" primary=""/>
24
- <number name="film_id" type="int" primary=""/>
22
+ <db.table name="t_film_actor">
23
+ <number name="id" type="int" primary="" generated="by default"/>
24
+ <number name="actor_id" type="int"/>
25
+ <number name="film_id" type="int"/>
25
26
  <number name="length" type="int"/>
26
27
  </db.table>
27
28
 
28
- <db.query name="films_actors">
29
+ <!-- <object name="result"/>
30
+
31
+ <db.query name="t_film_actor_truncate">
32
+ <string name="__fields__" literal="">*</string>
33
+ <string name="__sql__" literal="">truncate table t_film_actor</string>
34
+ </db.query>
35
+ <db.runquery name="t_film_actor_truncate" result="result"></db.runquery>
36
+
37
+ <db.query name="t_film_truncate">
38
+ <string name="__fields__" literal="">*</string>
39
+ <string name="__sql__" literal="">truncate table t_film</string>
40
+ </db.query>
41
+ <db.runquery name="t_film_truncate" result="result"></db.runquery>
42
+
43
+ <db.query name="t_actor_truncate">
44
+ <string name="__fields__" literal="">*</string>
45
+ <string name="__sql__" literal="">truncate table t_actor</string>
46
+ </db.query>
47
+ <db.runquery name="t_actor_truncate" result="result"></db.runquery> -->
48
+
49
+
50
+ <db.query name="t_films_actors">
29
51
  <number name="length_from">0</number>
30
52
  <number name="length_to">999</number>
31
- <string name="__entities__">"actor film"</string>
53
+ <string name="__entities__">"t_actor t_film"</string>
32
54
  <string name="__sql__" literal="">
33
- SELECT * FROM public.actor
34
- join film_actor on film_actor.actor_id = actor.actor_id
35
- join film on film_actor.film_id = film.film_id
36
- where film.length between {{ length_from }} and {{ length_to }}
55
+ SELECT * FROM public.t_actor
56
+ join t_film_actor on t_film_actor.actor_id = t_actor.actor_id
57
+ join t_film on t_film_actor.film_id = t_film.film_id
58
+ where t_film.length between {{ length_from }} and {{ length_to }}
37
59
  -- and actor.actor_id = 2
38
- ORDER BY actor.actor_id ASC ;
60
+ ORDER BY t_actor.actor_id ASC ;
39
61
  </string>
40
62
  </db.query>
41
63
 
@@ -49,7 +71,7 @@
49
71
  <object name="actor">actor_maria</object>
50
72
  </db.execute> -->
51
73
 
52
- <db.insert table="actor" returning_into="actor_maria">
74
+ <db.insert table="t_actor" returning_into="actor_maria">
53
75
  <object name="actor">actor_maria</object>
54
76
  </db.insert>
55
77
 
@@ -65,7 +87,7 @@
65
87
  <object> new_film </object>
66
88
  </db.execute> -->
67
89
 
68
- <db.insert table="film" returning_into="new_film">
90
+ <db.insert table="t_film" returning_into="new_film">
69
91
  <object>new_film</object>
70
92
  </db.insert>
71
93
 
@@ -77,7 +99,7 @@
77
99
  <object name="film"> new_film </object>
78
100
  </db.execute> -->
79
101
 
80
- <db.update table="film">
102
+ <db.update table="t_film">
81
103
  <object name="film"> new_film </object>
82
104
  </db.update>
83
105
 
@@ -88,7 +110,7 @@
88
110
  </object>
89
111
  </db.execute> -->
90
112
 
91
- <db.insert table="film_actor">
113
+ <db.insert table="t_film_actor">
92
114
  <object>
93
115
  <number name="actor_id">actor_maria.actor_id</number>
94
116
  <number name="film_id">new_film.film_id</number>
@@ -102,24 +124,24 @@
102
124
  <number name="length_to">60</number>
103
125
  </db.execute> -->
104
126
 
105
- <db.runquery name="films_actors" result="films_actors">
127
+ <db.runquery name="t_films_actors" result="films_actors">
106
128
  <number name="length_from">60</number>
107
129
  <number name="length_to">60</number>
108
130
  </db.runquery>
109
131
 
110
- <print>"films_actors.resultset.at(0).actor.last_name " + films_actors.resultset.at(0).actor.last_name</print>
132
+ <print>"films_actors.resultset.at(0).t_actor.last_name " + films_actors.resultset.at(0).t_actor.last_name</print>
111
133
  <call object="films_actors.resultset" method="foreach">
112
134
  <function>
113
135
  <object name="result" />
114
136
  <block>
115
- <print>"actor " + result.actor.actor_id + " " + result.actor.first_name + " " + result.actor.last_name
116
- + ", film " + result.film.film_id + " " + result.film.title
137
+ <print>"actor " + result.t_actor.actor_id + " " + result.t_actor.first_name + " " + result.t_actor.last_name
138
+ + ", film " + result.t_film.film_id + " " + result.t_film.title
117
139
  </print>
118
140
  </block>
119
141
  </function>
120
142
  </call>
121
143
 
122
- <print>"string(films_actors) : "+string(films_actors)</print>
144
+ <print>"string(films_actors.resultset) : "+string(films_actors.resultset)</print>
123
145
 
124
146
 
125
147
  </module>
@@ -0,0 +1,2 @@
1
+ index = 1
2
+ index = 0
@@ -1,4 +1,4 @@
1
- <?xml-model href="cyklang.xsd" ?>
1
+ <?xml-model href="https://www.cyklang.net/schema/cyklang.xsd" ?>
2
2
  <module>
3
3
  <object name="films_actors" />
4
4
  <number name="index">2</number>
@@ -10,12 +10,12 @@
10
10
  <number name="length_from">60</number>
11
11
  <number name="length_to">60</number>
12
12
  </db.execute> -->
13
- <db.runquery name="films_actors" result="films_actors">
13
+ <db.runquery name="t_films_actors" result="films_actors">
14
14
  <number name="length_from">60</number>
15
15
  <number name="length_to">60</number>
16
16
  </db.runquery>
17
17
  <print>"index = "+index</print>
18
- <sleep>5000</sleep>
18
+ <sleep>500</sleep>
19
19
 
20
20
  </then>
21
21
  </while>
@@ -48,3 +48,5 @@ user1 <number name="user_id">
48
48
  <string name="user_appli">
49
49
  </string>
50
50
  <boolean name="user_disable">false</boolean>
51
+ <string name="user_lang">
52
+ </string>
@@ -1,4 +1,4 @@
1
- <?xml-model href="cyklang.xsd" ?>
1
+ <?xml-model href="https://www.cyklang.net/schema/cyklang.xsd" ?>
2
2
  <module>
3
3
  <object name="obj1">
4
4
  <string name="name">"obj1_name"</string>
@@ -73,7 +73,7 @@
73
73
 
74
74
  <print>"========= TEST OF newDBRow ======="</print>
75
75
 
76
- <object name="actress">newDBRow("actor")</object>
76
+ <object name="actress">newDBRow("t_actor")</object>
77
77
  <print>"actress "+string(actress)</print>
78
78
 
79
79
  <object name="user1">newDBRow("cyk_user")</object>
@@ -0,0 +1,4 @@
1
+ test de if()
2
+ 2+2==4
3
+
4
+ 0
@@ -1,26 +1,24 @@
1
- <?xml-model href="cyklang.xsd" ?>
1
+ <?xml-model href="https://www.cyklang.net/schema/cyklang.xsd" ?>
2
2
  <module>
3
3
  <print>"test de if()"</print>
4
4
  <print>if(2+2 == 4, "2+2==4", "2+2!==4")</print>
5
5
 
6
- <db.query name="actors_by_film">
6
+ <db.query name="t_actors_by_film">
7
7
  <number name="film_id"/>
8
8
  <string name="__fields__">"
9
9
  film_id: number;
10
10
  actor_id: number: key;
11
11
  title: string;
12
- image_uri: string;
13
12
  first_name: string;
14
13
  last_name: string
15
14
  "
16
15
  </string>
17
16
  <string name="__sql__" literal="">
18
- select film.film_id, title, actor.actor_id actor_id,
19
- actor.image_uri,
17
+ select t_film.film_id, title, t_actor.actor_id actor_id,
20
18
  first_name, last_name
21
- from film_actor join film on film.film_id = film_actor.film_id
22
- join actor on actor.actor_id = film_actor.actor_id
23
- where film_actor.film_id = {{ film_id }}
19
+ from t_film_actor join t_film on t_film.film_id = t_film_actor.film_id
20
+ join t_actor on t_actor.actor_id = t_film_actor.actor_id
21
+ where t_film_actor.film_id = {{ film_id }}
24
22
  </string>
25
23
  </db.query>
26
24
 
@@ -30,11 +28,11 @@ where film_actor.film_id = {{ film_id }}
30
28
  <number name="film_id">103</number>
31
29
  </db.execute> -->
32
30
 
33
- <db.runquery name="actors_by_film" result="actors_by_film">
31
+ <db.runquery name="t_actors_by_film" result="actors_by_film">
34
32
  <number name="film_id">103</number>
35
33
  </db.runquery>
36
34
 
37
- <print>string(actors_by_film)</print>
35
+ <print>string(actors_by_film.resultset)</print>
38
36
  <print>actors_by_film.resultset.length()</print>
39
37
  <!-- <object name="films_actors"/>
40
38
  <db.execute query="films_actors" result="films_actors">
@@ -0,0 +1,16 @@
1
+ OK Février
2
+ test IF before
3
+ monthlabel Mars
4
+ test IF after
5
+ month 1 Janvier 2021 2021-01-01 -> 2021-01-31
6
+ month 2 Février 2021 2021-02-01 -> 2021-02-28
7
+ month 3 Mars 2021 2021-03-01 -> 2021-03-31
8
+ month 4 Avril 2021 2021-04-01 -> 2021-04-30
9
+ month 5 Mai 2021 2021-05-01 -> 2021-05-31
10
+ month 6 Juin 2021 2021-06-01 -> 2021-06-30
11
+ month 7 Juillet 2021 2021-07-01 -> 2021-07-31
12
+ month 8 Août 2021 2021-08-01 -> 2021-08-31
13
+ month 9 Septembre 2021 2021-09-01 -> 2021-09-30
14
+ month 10 Octobre 2021 2021-10-01 -> 2021-10-31
15
+ month 11 Novembre 2021 2021-11-01 -> 2021-11-30
16
+ month 12 Décembre 2021 2021-12-01 -> 2021-12-31
@@ -1,9 +1,6 @@
1
- <?xml-model href="cyklang.xsd" ?>
1
+ <?xml-model href="https://www.cyklang.net/schema/cyklang.xsd" ?>
2
2
  <module>
3
- <object name="dbresult"/>
4
- <!-- <db.execute select_from_table="year" result="dbresult">
5
- <string name="where">"year_num = 2021"</string>
6
- </db.execute> -->
3
+ <!-- <object name="dbresult"/>
7
4
  <db.select table="year" result="dbresult">
8
5
  <string name="where">"year_num = 2021"</string>
9
6
  </db.select>
@@ -25,7 +22,10 @@
25
22
  <else>
26
23
  <print>"TEST KO"</print>
27
24
  </else>
28
- </if>
25
+ </if> -->
26
+
27
+ <string name="year_begin_date">"2021-01-01"</string>
28
+ <string name="year_end_date">"2021-12-31"</string>
29
29
 
30
30
  <object name="monthlabel">
31
31
  <string name="_01">"Janvier"</string>
@@ -1,4 +1,4 @@
1
- <?xml-model href="cyklang.xsd" ?>
1
+ <?xml-model href="https://www.cyklang.net/schema/cyklang.xsd" ?>
2
2
  <module>
3
3
  <object name="settings"/>
4
4
  <function name="__init__">
@@ -1,18 +1,18 @@
1
- <?xml-model href="cyklang.xsd" ?>
2
- <module dbname="t22">
1
+ <?xml-model href="https://www.cyklang.net/schema/cyklang.xsd" ?>
2
+ <module>
3
3
  <function name="get_tables" returns="result: object">
4
4
  <block>
5
5
 
6
- <object name="result_setting"/>
7
- <db.select table="setting" result="result_setting"/>
8
- <!-- <db.execute select_from_table="setting" result="result_setting"/> -->
6
+ <object name="result_t_actor"/>
7
+ <db.select table="t_actor" result="result_t_actor"/>
8
+ <!-- <db.execute select_from_table="t_actor" result="result_t_actor"/> -->
9
9
 
10
10
  <object name="result_">
11
11
  <string name="name">"CYK"</string>
12
12
  <string name="surname">"Philippe"</string>
13
- <object name="setting">result_setting.setting</object>
13
+ <object name="t_actor">result_t_actor.t_actor</object>
14
14
  <object name="meta">
15
- <string name="setting">result_setting.meta.setting</string>
15
+ <string name="t_actor">result_t_actor.meta.t_actor</string>
16
16
  </object>
17
17
  </object>
18
18
  <set name="result">result_</set>
@@ -1,9 +1,9 @@
1
- <?xml-model href="cyklang.xsd" ?>
2
- <module dbname="t23">
1
+ <?xml-model href="https://www.cyklang.net/schema/cyklang.xsd" ?>
2
+ <module>
3
3
  <function name="call_get_tables">
4
4
  <block>
5
- <object name="settings"/>
6
- <db.call module="t22" method="get_tables" returns="settings"/>
5
+ <object name="t_actor"/>
6
+ <db.call module="t22" method="get_tables" returns="t_actor"/>
7
7
 
8
8
  <!-- <db.execute module="t22" method="get_tables" returns="settings">
9
9
  </db.execute> -->
package/test/t09.output CHANGED
@@ -1,4 +1,4 @@
1
- date of birth : 1963-11-04 00:00:00 GMT+0100
1
+ date of birth : 1963-11-04 00:00:00 GMT+0400
2
2
  french true
3
3
  150
4
4
  160
package/test/t09.xml CHANGED
@@ -1,4 +1,4 @@
1
- <?xml-model href="cyklang.xsd" ?>
1
+ <?xml-model href="http://www.cyklang.net/schema/cyklang.xsd" ?>
2
2
  <module>
3
3
  <object name="dates">
4
4
  <datetime name="datebirth">datetime(&quot;11/04/1963&quot;)</datetime>