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+
66+
67+ try {
68+
69+ debug ( 'updating service' )
70+ debug ( srvDoc . data )
71+ await srvDoc . mergeData ( {
72+ package : compiledSrv . package ,
73+ schemas : compiledSrv . schemas ,
74+ endpoints : compiledSrv . endpoints ,
75+ midddleware : compiledSrv . middleware ,
76+ middleware_order : compiledSrv . middleware_order
77+ } )
78+
79+ //debug(srvDoc.data)
80+
81+ debug ( 'saving doc' )
82+
83+
84+ await srvDoc . save ( )
85+ }
86+ catch ( err ) {
87+ console . log ( err )
88+ }
89+ debug ( 'updated service' )
90+ }
91+
92+ return { srv :srvDoc . data }
93+ }
94+ }
0 commit comments