initial commit
[squeep-indie-auther] / bin / resourceCreate.js
diff --git a/bin/resourceCreate.js b/bin/resourceCreate.js
new file mode 100644 (file)
index 0000000..ae7390a
--- /dev/null
@@ -0,0 +1,46 @@
+'use strict';
+
+const cli = require('./cli-helper');
+const DB = require('../src/db');
+const Logger = require('../src/logger');
+const Config = require('../config');
+const { newSecret } = require('../src/common');
+const config = new Config(process.env.NODE_ENV, false);
+const verbose = cli.getFlag('-v');
+if (!verbose) {
+  config.logger.ignoreBelowLevel = 'info';
+}
+const logger = new Logger(config);
+const db = new DB(logger, config);
+
+
+const resourceId = cli.getOption('-i');
+let secret = cli.getOption('-s');
+const rest = process.argv.slice(2);
+const description = rest.length ? rest.join(' ') : undefined;
+
+(async () => {
+  await db.initialize();
+  try {
+    if (!resourceId) {
+      if (!description || !description.length) {
+        console.log('ERROR: description is required when creating a new resource.');
+        throw new Error('Invalid parameters');
+      }
+      if (!secret) {
+        secret = await newSecret();
+      }
+    }
+
+    await db.context(async (dbCtx) => {
+      const result = await db.resourceUpsert(dbCtx, resourceId, secret, description);
+      console.log(result);
+    });
+  } catch (e) {
+    console.log(e);
+  } finally {
+    await db._closeConnection();
+  }
+})().then(() => {
+  console.log('done');
+});