1+ const Joi = require ( '@hapi/joi' )
2+ const Hoek = require ( '@hapi/hoek' )
3+ const { Message, Routines} = require ( '@dataparty/crypto' )
4+ const debug = require ( 'debug' ) ( 'dataparty.endpoint.create-service' )
5+
6+ const IEndpoint = require ( '../../service/iendpoint' )
7+ const { exist } = require ( '@hapi/joi' )
8+
9+ module . exports = class CreateSrvEndpoint extends IEndpoint {
10+
11+ static get Name ( ) {
12+ return 'create-service'
13+ }
14+
15+
16+ static get Description ( ) {
17+ return 'Create venue service'
18+ }
19+
20+ static get MiddlewareConfig ( ) {
21+ return {
22+ pre : {
23+ decrypt : false ,
24+ validate : Joi . object ( ) . keys ( null )
25+ } ,
26+ post : {
27+ encrypt : false ,
28+ validate : Joi . object ( ) . keys ( null ) . description ( 'any output allowed' )
29+ }
30+ }
31+ }
32+
33+ static async run ( ctx ) {
34+
35+ ctx . debug ( 'hello' )
36+ debug ( 'echo' )
37+ ctx . debug ( 'ctx.input' , ctx . input )
38+
39+ const compiledSrv = JSON . parse ( ctx . input . service )
40+ const serviceId = compiledSrv . package . name + '-' + compiledSrv . package . version
41+ debug ( 'addService' , serviceId )
42+
43+ let srvDoc = ( await ctx . party . find ( )
44+ . type ( 'venue_srv' )
45+ . where ( 'name' ) . equals ( compiledSrv . package . name )
46+ . exec ( ) ) [ 0 ]
47+
48+
49+
50+ if ( ! srvDoc ) {
51+ debug ( 'creating service' )
52+ srvDoc = await ctx . party . createDocument ( 'venue_srv' , {
53+ name : compiledSrv . package . name ,
54+ 'created' : ( new Date ( ) ) . toISOString ( ) ,
55+ package : compiledSrv . package ,
56+ schemas : compiledSrv . schemas ,
57+ endpoints : compiledSrv . endpoints ,
58+ midddleware : compiledSrv . middleware ,
59+ middleware_order : compiledSrv . middleware_order
60+ } )
61+
62+ debug ( 'service created' )
63+ }
64+ else {
65+ debug ( 'updating service' )
66+ debug ( srvDoc . data )
67+ await srvDoc . mergeData ( {
68+ package : compiledSrv . package ,
69+ //schemas: compiledSrv.schemas,
70+ //endpoints: compiledSrv.endpoints,
71+ //midddleware: compiledSrv.middleware,
72+ middleware_order : compiledSrv . middleware_order
73+ } )
74+
75+ debug ( srvDoc . data )
76+
77+ try {
78+ await srvDoc . save ( )
79+ }
80+ catch ( err ) { }
81+ debug ( 'updated service' )
82+ }
83+
84+ return { srv :srvDoc . data }
85+ }
86+ }
0 commit comments