11import { parse } from 'yaml' ;
22import { existsSync , readFileSync } from 'node:fs' ;
3- import { Event , IacDatabase , IacFunction , RawServerlessIac , ServerlessIac } from '../types' ;
3+ import {
4+ DatabaseEnum ,
5+ Event ,
6+ IacDatabase ,
7+ IacFunction ,
8+ RawIacDatabase ,
9+ RawServerlessIac ,
10+ ServerlessIac ,
11+ } from '../types' ;
412import { validateYaml } from './iacSchema' ;
13+ import { get , isEmpty } from 'lodash' ;
514
615const mapToArr = ( obj : Record < string , Record < string , unknown > | string | null | undefined > ) => {
716 if ( ! obj ) {
@@ -24,7 +33,30 @@ const validateExistence = (path: string) => {
2433 throw new Error ( `File does not exist at path: ${ path } ` ) ;
2534 }
2635} ;
27-
36+ const transformDatabase = ( databases ?: {
37+ [ key : string ] : RawIacDatabase ;
38+ } ) : Array < IacDatabase > | undefined => {
39+ if ( isEmpty ( databases ) ) {
40+ return undefined ;
41+ }
42+ return Object . entries ( databases ) ?. map ( ( [ key , database ] ) => ( {
43+ key : key ,
44+ name : database . name ,
45+ type : database . type as DatabaseEnum ,
46+ version : database . version ,
47+ engineMode : database . engine_mode ,
48+ security : {
49+ basicAuth : {
50+ password : get ( database , 'security.basic_auth.password' ) ,
51+ } ,
52+ } ,
53+ cu : database . cu ,
54+ storageSize : database . storage_size ,
55+ network : database . network && {
56+ public : database . network ?. public as boolean ,
57+ } ,
58+ } ) ) ;
59+ } ;
2860const transformYaml = ( iacJson : RawServerlessIac ) : ServerlessIac => {
2961 return {
3062 service : iacJson . service ,
@@ -38,7 +70,7 @@ const transformYaml = (iacJson: RawServerlessIac): ServerlessIac => {
3870 { key : 'iac-provider' , value : 'ServerlessInsight' } ,
3971 ...mapToKvArr ( iacJson . tags ) ,
4072 ] as unknown as Array < { key : string ; value : string } > ,
41- databases : mapToArr ( iacJson . databases ) as unknown as Array < IacDatabase > ,
73+ databases : transformDatabase ( iacJson . databases ) ,
4274 } ;
4375} ;
4476
0 commit comments