66 "reflect"
77
88 "soarca/internal/capability"
9+ "soarca/internal/capability/http"
910 "soarca/internal/capability/ssh"
1011 "soarca/internal/decomposer"
1112 "soarca/internal/executer"
@@ -16,7 +17,7 @@ import (
1617 "github.com/gin-gonic/gin"
1718
1819 mongo "soarca/database/mongodb"
19- playbookRepo "soarca/database/playbook"
20+ playbookrepository "soarca/database/playbook"
2021 routes "soarca/routes"
2122)
2223
@@ -28,34 +29,26 @@ func init() {
2829 log = logger .Logger (reflect .TypeOf (Empty {}).PkgPath (), logger .Info , "" , logger .Json )
2930}
3031
31- func InitializeAppComponents () error {
32- app := gin . New ()
33- log . Info ( "Testing if this works" )
32+ type Controller struct {
33+ playbookRepo playbookrepository. IPlaybookRepository
34+ }
3435
35- initDatabase := utils .GetEnv ("DATABASE" , "false" )
36- if initDatabase == "true" {
37- errDatabase := InitializeDatabase (app )
38- if errDatabase != nil {
39- log .Error ("Failed to init core" )
40- return errDatabase
41- }
42- }
43- errCore := InitializeCore (app )
36+ var mainController = Controller {}
4437
45- if errCore != nil {
46- log .Error ("Failed to init core" )
47- return errCore
48- }
38+ func (controller * Controller ) NewDecomposer () decomposer.IDecomposer {
39+ ssh := new (ssh.SshCapability )
40+ capabilities := map [string ]capability.ICapability {ssh .GetType (): ssh }
4941
50- port := utils .GetEnv ("PORT" , "8080" )
51- err := app .Run (":" + port )
52- if err != nil {
53- log .Error ("failed to run gin" )
54- }
55- return err
42+ http := new (http.HttpCapability )
43+ capabilities [http .GetType ()] = http
44+
45+ executer := executer .New (capabilities )
46+ guid := new (guid.Guid )
47+ decompose := decomposer .New (executer , guid )
48+ return decompose
5649}
5750
58- func InitializeDatabase ( app * gin. Engine ) error {
51+ func ( controller * Controller ) setupDatabase ( ) error {
5952 mongo .LoadComponent ()
6053
6154 log .Info ("SOARCA API Trying to start" )
@@ -71,28 +64,59 @@ func InitializeDatabase(app *gin.Engine) error {
7164 if err != nil {
7265 return err
7366 }
74- // defer database.GetMongoClient().CloseMongoDB( )
67+ controller . playbookRepo = playbookrepository . SetupPlaybookRepository ( mongo . GetCacaoRepo (), mongo . DefaultLimitOpts () )
7568
76- playbookRepo := playbookRepo .SetupPlaybookRepository (mongo .GetCacaoRepo (), mongo .DefaultLimitOpts ())
69+ return nil
70+ }
7771
78- // setup database routes
79- err = routes .Database (app , playbookRepo )
72+ func (controller * Controller ) GetDatabaseInstance () playbookrepository.IPlaybookRepository {
73+ return controller .playbookRepo
74+ }
75+
76+ func Initialize () error {
77+ app := gin .New ()
78+ log .Info ("Testing if info log works" )
79+ log .Debug ("Testing if debug log works" )
80+ log .Trace ("Testing if Trace log works" )
81+
82+ errCore := initializeCore (app )
83+
84+ if errCore != nil {
85+ log .Error ("Failed to init core" )
86+ return errCore
87+ }
88+
89+ port := utils .GetEnv ("PORT" , "8080" )
90+ err := app .Run (":" + port )
91+ if err != nil {
92+ log .Error ("failed to run gin" )
93+ }
94+ log .Info ("exit" )
8095
8196 return err
8297}
8398
84- func InitializeCore (app * gin.Engine ) error {
85- ssh := new (ssh.SshCapability )
86- capabilities := map [string ]capability.ICapability {ssh .GetType (): ssh }
87- executer := executer .New (capabilities )
88- guid := new (guid.Guid )
89- decompose := decomposer .New (executer , guid )
99+ func initializeCore (app * gin.Engine ) error {
90100
91- err := routes .Api (app , decompose )
101+ err := routes .Api (app , & mainController )
92102 if err != nil {
93103 log .Error (err )
94104 return err
95105 }
106+
107+ initDatabase := utils .GetEnv ("DATABASE" , "false" )
108+ if initDatabase == "true" {
109+ err = mainController .setupDatabase ()
110+ if err != nil {
111+ log .Error (err )
112+ return err
113+ }
114+ err = routes .Database (app , & mainController )
115+ if err != nil {
116+ log .Error (err )
117+ return err
118+ }
119+ }
96120 routes .Logging (app )
97121 routes .Swagger (app )
98122 return err
0 commit comments