@@ -12,18 +12,29 @@ func (d *SqlDb) CreateIntegration(integration db.Integration) (newIntegration db
1212 return
1313 }
1414
15+ if integration .TaskParams != nil {
16+ params := * integration .TaskParams
17+ params .ProjectID = integration .ProjectID
18+ err = d .Sql ().Insert (& params )
19+ if err != nil {
20+ return
21+ }
22+ integration .TaskParamsID = & params .ID
23+ }
24+
1525 insertID , err := d .insert (
1626 "id" ,
1727 "insert into project__integration " +
18- "(project_id, name, template_id, auth_method, auth_secret_id, auth_header, searchable) values " +
19- "(?, ?, ?, ?, ?, ?, ?)" ,
28+ "(project_id, name, template_id, auth_method, auth_secret_id, auth_header, searchable, task_params_id ) values " +
29+ "(?, ?, ?, ?, ?, ?, ?, ? )" ,
2030 integration .ProjectID ,
2131 integration .Name ,
2232 integration .TemplateID ,
2333 integration .AuthMethod ,
2434 integration .AuthSecretID ,
2535 integration .AuthHeader ,
26- integration .Searchable )
36+ integration .Searchable ,
37+ integration .TaskParamsID )
2738
2839 if err != nil {
2940 return
@@ -42,6 +53,20 @@ func (d *SqlDb) GetIntegrations(projectID int, params db.RetrieveQueryParams) (i
4253
4354func (d * SqlDb ) GetIntegration (projectID int , integrationID int ) (integration db.Integration , err error ) {
4455 err = d .getObject (projectID , db .IntegrationProps , integrationID , & integration )
56+ if err != nil {
57+ return
58+ }
59+
60+ if integration .TaskParamsID != nil {
61+ var taskParams db.TaskParams
62+ err = d .getObject (projectID , db .TaskParamsProps , * integration .TaskParamsID , & taskParams )
63+ if err != nil {
64+ return
65+ }
66+
67+ integration .TaskParams = & taskParams
68+ }
69+
4570 return
4671}
4772
@@ -54,25 +79,72 @@ func (d *SqlDb) GetIntegrationRefs(projectID int, integrationID int) (referrers
5479 return
5580}
5681
57- func (d * SqlDb ) DeleteIntegration (projectID int , integrationID int ) error {
58- return d .deleteObject (projectID , db .IntegrationProps , integrationID )
82+ func (d * SqlDb ) DeleteIntegration (projectID int , integrationID int ) (err error ) {
83+ var integration db.Integration
84+ err = d .getObject (projectID , db .IntegrationProps , integrationID , & integration )
85+ if err != nil {
86+ return
87+ }
88+
89+ err = d .deleteObject (projectID , db .IntegrationProps , integrationID )
90+ if err != nil {
91+ return
92+ }
93+
94+ if integration .TaskParamsID != nil {
95+ err = d .deleteObject (projectID , db .TaskParamsProps , * integration .TaskParamsID )
96+ }
97+ return
5998}
6099
61- func (d * SqlDb ) UpdateIntegration (integration db.Integration ) error {
62- err := integration .Validate ()
100+ func (d * SqlDb ) UpdateIntegration (integration db.Integration ) (err error ) {
63101
64- if err != nil {
65- return err
102+ if err = integration .Validate (); err != nil {
103+ return
104+ }
105+
106+ if integration .TaskParams != nil {
107+ var curr db.Integration
108+ err = d .getObject (integration .ProjectID , db .IntegrationProps , integration .ID , & curr )
109+ if err != nil {
110+ return
111+ }
112+
113+ params := * integration .TaskParams
114+ params .ProjectID = integration .ProjectID
115+
116+ if curr .TaskParamsID == nil {
117+ err = d .Sql ().Insert (& params )
118+ } else {
119+ params .ID = * curr .TaskParamsID
120+ _ , err = d .Sql ().Update (& params )
121+ }
122+
123+ if err != nil {
124+ return
125+ }
126+
127+ integration .TaskParamsID = & params .ID
66128 }
67129
68130 _ , err = d .exec (
69- "update project__integration set `name`=?, template_id=?, auth_method=?, auth_secret_id=?, auth_header=?, searchable=? where `id`=?" ,
131+ "update project__integration set " +
132+ "`name`=?, " +
133+ "template_id=?, " +
134+ "auth_method=?, " +
135+ "auth_secret_id=?, " +
136+ "auth_header=?, " +
137+ "searchable=?, " +
138+ "task_params_id=? " +
139+ "where project_id=? AND `id`=?" ,
70140 integration .Name ,
71141 integration .TemplateID ,
72142 integration .AuthMethod ,
73143 integration .AuthSecretID ,
74144 integration .AuthHeader ,
75145 integration .Searchable ,
146+ integration .TaskParamsID ,
147+ integration .ProjectID ,
76148 integration .ID )
77149
78150 return err
0 commit comments