You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
59 lines
1.3 KiB
59 lines
1.3 KiB
import { input, password } from '@inquirer/prompts'
|
|
import { v4 as uuidv4 } from 'uuid'
|
|
import path from 'path'
|
|
import chalk from 'chalk'
|
|
import crypto from 'node:crypto'
|
|
|
|
import runMigrationSqlite from './../db/migration.js'
|
|
import getOrCreateSqlite from './../db/sqlite.js'
|
|
|
|
import TokenHelper from './../helper/token.js'
|
|
|
|
// getting flow
|
|
import FlowStore from './../store/flow.js'
|
|
|
|
// get config
|
|
import config from './../_config.js'
|
|
config()
|
|
|
|
// getting db and flowStore
|
|
const mainDB = getOrCreateSqlite({ 'uri': process.env.APP_SQLITE_URI_MAIN, 'create': true, 'readwrite': true })
|
|
const flowStore = new FlowStore(mainDB)
|
|
|
|
const token = crypto.randomBytes(64).toString('base64')
|
|
const flow = {
|
|
'hash' : TokenHelper.create(token)
|
|
}
|
|
|
|
flow.uuid = uuidv4()
|
|
|
|
// adding action
|
|
flow.action = await input({
|
|
message: 'action:',
|
|
async validate(value) {
|
|
if (!value) {
|
|
return 'Required!'
|
|
}
|
|
|
|
return true
|
|
}
|
|
})
|
|
|
|
// adding schema
|
|
flow.schema = await input({
|
|
message: 'schema:'
|
|
})
|
|
|
|
// adding description
|
|
flow.description = await input({
|
|
message: 'description:'
|
|
})
|
|
|
|
const id = flowStore.create(flow, token)
|
|
|
|
if (id) {
|
|
console.log(chalk.green('done'))
|
|
console.log(chalk.blue('uuid: ' + flow.uuid))
|
|
console.log(chalk.blue('token: ' + token))
|
|
}
|