create-app-core v1.0.24
use lib
import env from 'dotenv' env.config()
import { system } from 'create-app-core' #start
await system.start({ events: [] })
Event Redis
//npm i redis //## .env /* REDIS_PASSWORD="" REDIS_HOST="" REDIS_PORT=
*/
await system.start({ events: 'redis' })
Event Rabbitmq
//npm i amqplib //## .env /* RABBITMQ_URL=
*/ { await system.start({ events: 'rabbitmq' })
}
//system.factories //const { }=system.factories
{
#service
// register service
createCoreService('test', ({ system }) => ({
async create(input) {
return input
},
}))
// call service
await system.service('test.create').execute({})
}
{ #events
// register
createCoreEvent('test', ({ system }) => ({
"create": {
type: 'service',//[service,redis,rabbitmq,socket]
ops: {
rabbitmq: {
queue: '',
exchangeName: '',
pattern = '',
exchangeType: ''
},
socket: {
client: '',
eventName: '',
rooms: []
}
},
handler: (data) => { //
console.log(data, '...')
}
}
}))
}
{ // use redis typeEvent = 'redis' system.event(typeEvent).publish(topic, data) // use rabbitmq typeEvent = 'rabbitmq' system.event(typeEvent).publish(topic, data) // use rabbitmq > publish typeEvent = 'rabbitmq' topic = { routingKey = '', exchangeName = 'my-topic', exchangeType = 'topic' } system.event(typeEvent).publish(topic, data) // use rabbitmq > send typeEvent = 'rabbitmq' system.event(typeEvent).send(topic, data)
// use service
typeEvent = 'service'
system.event(typeEvent).publish(topic, data)
} { #Cron
// register
//npm i node-cron
await createCoreCron('test', ({ system }) => ({
"create": {
time: '* * * * * *',
active: false,//true||false
"fn": () => {
console.log('_test_')
}
}
}))
//system.cron('test.create').start()
//system.cron('test.create').stop()
}
{ #Job //npm i bullmq // register await createCoreQueue('test', ({ system }) => ({
"nameQueue": {
fn: (job) => {
console.log(job.data)
}
}
}))
// use job
//'job::queue'
const data = {}
await system.module('job::queue').queue('nameQueue').add('optional', data)
}
{ #JobTask //npm i bullmq
await createCoreTask('task', ({ system }) => ({
"nameQueue": {
completed: (job, res) => {
console.log(`${job.id} has completed!`, res);
},
progress: (job, progress) => {
console.log(`${job.id} has progress `, progress);
},
failed: (job, err) => {
console.log(`${job.id} has failed with ${err.message}`);
},
steps: [{
input: 'input',// job.data
do: (data) => {
console.log(data)
return {}
},
undo() {
}
},
{
input: '0',//output of step[0].output
do: (data) => {
console.log(data)
return {}
},
undo() {
}
}
]
}
}))
// use jobTask
//'task::task'
const dataTask = {}
await system.module('job::task').task('nameQueue').add('optional', dataTask)
} {
##Seneca //Register
await createCoreSeneca({
server: {
port: process.env.GATEWAY_PORT,
host: process.env.GATEWAY_HOST
},
services: [{
auth: [],
name: 'user.*'
},
{
auth: [],
name: 'client.*'
}
],
clients: [{
jwt: 'ddddd',
name: 'test',
port: process.env.GATEWAY_PORT,
host: process.env.GATEWAY_HOST
}, {
jwt: 'ddddd',
name: 'config',
port: process.env.GATEWAY_CONFIG_PORT,
host: process.env.GATEWAY_CONFIG_HOST
}, {
jwt: 'ddddd',
name: 'auth',
port: process.env.GATEWAY_AUTH_PORT,
host: process.env.GATEWAY_AUTH_HOST
}]
})
await system.module('seneca::client.test').cmd('user.index', { name: 'd' })
}
{
## createCorePath
//register
const pathService = '/src/services'
await createCorePath(pathService, {
name: 'user',
mode: 'createCoreService',
})
//src/services
//file:user.js
export default ({ system }) => ({
async index(data) {
console.log(data)
}
})
}
{ const pathJob = '/src/jobs' await createCorePath(pathService, { name: 'user', mode: 'createCoreJob', }) //src/jobs //file:user.js export default ({ system }) => ({ "teste": { fn: (job) => { console.log(job.data) } } }) }
{ const pathTask = '/src/tasks' await createCorePath(pathService, { name: 'user', mode: 'createCoreTask', }) //src/task //file:user.js export default ({ system }) => ({ "nameQueue": {
completed: (job, res) => {
console.log(`${job.id} has completed!`, res);
},
progress: (job, progress) => {
console.log(`${job.id} has progress `, progress);
},
failed: (job, err) => {
console.log(`${job.id} has failed with ${err.message}`);
},
steps: [{
input: 'input',// job.data
do: (data) => {
console.log(data)
return {}
},
undo() {
}
},
{
input: '0',//output of step[0].output
do: (data) => {
console.log(data)
return {}
},
undo() {
}
}
]
}
})
}
{ const pathCron = '/src/cron' await createCorePath(pathService, { name: 'user', mode: 'createCoreCron', }) //src/jobs //file:user.js export default ({ system }) => ({ "create": { time: '* * * * * *', active: false,//true||false "fn": () => { console.log('test') }
}
})
}
{ const pathRouter = '/src/cron' await createCorePath(pathService, { name: 'user', mode: 'createCoreRouter', }) //src/routers //file:user.js export default ({ system }) => ({ prefix: '', routers: [{ path: '/', auth: [], middleware: [], handler: (req, res) => {
}
}]
})
}
{ const pathEvent = '/src/events' await createCorePath(pathService, { name: 'user', mode: 'createCoreEvent', }) //src/events //file:user.js export default ({ system }) => ({ "index": { type: 'redis', handler: (data) => { console.log(data, '...') } } }) }
{ const pathSocket = '/src/server/sockets' await createCorePath(pathService, { name: 'user', mode: 'createCoreSocket', }) //src/server/sockets //file:index.js export default ({ system }) => ({
})
}
{ const fileServer = '/src/server/server.js' await createCoreServer(pathService, { name: 'user', mode: 'createCoreSocket', })
///
export default ({ routers, sockets }) => {
console.log(routers)
return {
start() {
},
close() {
}
}
}
}
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago