Skip to content

Commit 531c1b3

Browse files
updated crud implementations to use client.WithTransaction when updating/creating
1 parent 6dfa9cd commit 531c1b3

4 files changed

Lines changed: 203 additions & 163 deletions

File tree

ui/tui/models/views/account/crud.go

Lines changed: 46 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -114,49 +114,59 @@ func NewCrud(c client.Client, rc router.Controll) *crud.Crud[recordT, recordCrea
114114
return accountToRecord(context.Background(), c, account)
115115
},
116116
func(recordCreate recordCreateT) (recordT, error) {
117-
port, err := strconv.Atoi(recordCreate.Port)
118-
if err != nil {
119-
return recordT{}, err
120-
}
117+
var record recordT
118+
err := c.WithTransaction(context.Background(), func(c client.Client) error {
119+
port, err := strconv.Atoi(recordCreate.Port)
120+
if err != nil {
121+
return err
122+
}
121123

122-
account, err := c.CreateAccount(
123-
context.Background(),
124-
recordCreate.Username,
125-
recordCreate.Host,
126-
port,
127-
recordCreate.DeployMethod,
128-
recordCreate.DeploySecret,
129-
)
130-
if err != nil {
131-
return recordT{}, err
132-
}
124+
account, err := c.CreateAccount(
125+
context.Background(),
126+
recordCreate.Username,
127+
recordCreate.Host,
128+
port,
129+
recordCreate.DeployMethod,
130+
recordCreate.DeploySecret,
131+
)
132+
if err != nil {
133+
return err
134+
}
133135

134-
return accountToRecord(context.Background(), c, account)
136+
record, err = accountToRecord(context.Background(), c, account)
137+
return err
138+
})
139+
return record, err
135140
},
136141
func(id recordIdT, recordUpdate recordUpdateT) (recordT, error) {
137-
port, err := strconv.Atoi(recordUpdate.Port)
138-
if err != nil {
139-
return recordT{}, err
140-
}
142+
var record recordT
143+
err := c.WithTransaction(context.Background(), func(c client.Client) error {
144+
port, err := strconv.Atoi(recordUpdate.Port)
145+
if err != nil {
146+
return err
147+
}
141148

142-
if err := c.UpdateAccount(
143-
context.Background(),
144-
id,
145-
recordUpdate.Username,
146-
recordUpdate.Host,
147-
port,
148-
recordUpdate.DeployMethod,
149-
recordUpdate.DeploySecret,
150-
); err != nil {
151-
return recordT{}, err
152-
}
149+
if err := c.UpdateAccount(
150+
context.Background(),
151+
id,
152+
recordUpdate.Username,
153+
recordUpdate.Host,
154+
port,
155+
recordUpdate.DeployMethod,
156+
recordUpdate.DeploySecret,
157+
); err != nil {
158+
return err
159+
}
153160

154-
account, err := c.GetAccount(context.Background(), id)
155-
if err != nil {
156-
return recordT{}, err
157-
}
161+
account, err := c.GetAccount(context.Background(), id)
162+
if err != nil {
163+
return err
164+
}
158165

159-
return accountToRecord(context.Background(), c, account)
166+
record, err = accountToRecord(context.Background(), c, account)
167+
return err
168+
})
169+
return record, err
160170
},
161171
func(id recordIdT) error {
162172
return c.DeleteAccounts(context.Background(), id)

ui/tui/models/views/linkaccount/crud.go

Lines changed: 57 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -74,55 +74,65 @@ func NewCrud(c client.Client, rc router.Controll, account client.Account) *crud.
7474
return linkToRecord(context.Background(), c, link)
7575
},
7676
func(recordCreate recordCreateT) (recordT, error) {
77-
expr, err := tags.ParseMatcher(recordCreate.TagMatcher)
78-
if err != nil {
79-
return recordT{}, err
80-
}
81-
82-
expiresAt, err := util.ParseTime(recordCreate.ExpiresAt)
83-
if err != nil {
84-
return recordT{}, err
85-
}
86-
87-
link, err := c.CreateLink(
88-
context.Background(),
89-
account.Id,
90-
expr.String(),
91-
expiresAt,
92-
)
93-
if err != nil {
94-
return recordT{}, err
95-
}
96-
97-
return linkToRecord(context.Background(), c, link)
77+
var record recordT
78+
err := c.WithTransaction(context.Background(), func(c client.Client) error {
79+
expr, err := tags.ParseMatcher(recordCreate.TagMatcher)
80+
if err != nil {
81+
return err
82+
}
83+
84+
expiresAt, err := util.ParseTime(recordCreate.ExpiresAt)
85+
if err != nil {
86+
return err
87+
}
88+
89+
link, err := c.CreateLink(
90+
context.Background(),
91+
account.Id,
92+
expr.String(),
93+
expiresAt,
94+
)
95+
if err != nil {
96+
return err
97+
}
98+
99+
record, err = linkToRecord(context.Background(), c, link)
100+
return err
101+
})
102+
return record, err
98103
},
99104
func(id recordIdT, recordUpdate recordUpdateT) (recordT, error) {
100-
expr, err := tags.ParseMatcher(recordUpdate.TagMatcher)
101-
if err != nil {
102-
return recordT{}, err
103-
}
104-
105-
expiresAt, err := util.ParseTime(recordUpdate.ExpiresAt)
106-
if err != nil {
107-
return recordT{}, err
108-
}
109-
110-
if err := c.UpdateLink(
111-
context.Background(),
112-
id,
113-
account.Id,
114-
expr.String(),
115-
expiresAt,
116-
); err != nil {
117-
return recordT{}, err
118-
}
119-
120-
link, err := c.GetLink(context.Background(), id)
121-
if err != nil {
122-
return recordT{}, err
123-
}
124-
125-
return linkToRecord(context.Background(), c, link)
105+
var record recordT
106+
err := c.WithTransaction(context.Background(), func(c client.Client) error {
107+
expr, err := tags.ParseMatcher(recordUpdate.TagMatcher)
108+
if err != nil {
109+
return err
110+
}
111+
112+
expiresAt, err := util.ParseTime(recordUpdate.ExpiresAt)
113+
if err != nil {
114+
return err
115+
}
116+
117+
if err := c.UpdateLink(
118+
context.Background(),
119+
id,
120+
account.Id,
121+
expr.String(),
122+
expiresAt,
123+
); err != nil {
124+
return err
125+
}
126+
127+
link, err := c.GetLink(context.Background(), id)
128+
if err != nil {
129+
return err
130+
}
131+
132+
record, err = linkToRecord(context.Background(), c, link)
133+
return err
134+
})
135+
return record, err
126136
},
127137
func(id recordIdT) error {
128138
return c.DeleteLinks(context.Background(), id)

ui/tui/models/views/linkpublickey/crud.go

Lines changed: 67 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -97,65 +97,75 @@ func NewCrud(c client.Client, rc router.Controll, publicKey client.PublicKey) *c
9797
return linkToRecord(context.Background(), c, link)
9898
},
9999
func(recordCreate recordCreateT) (recordT, error) {
100-
expr, err := tags.ParseMatcher(recordCreate.TagMatcher)
101-
if err != nil {
102-
return recordT{}, err
103-
}
104-
105-
expiresAt, err := util.ParseTime(recordCreate.ExpiresAt)
106-
if err != nil {
107-
return recordT{}, err
108-
}
109-
110-
account, err := resolveAccountByName(context.Background(), c, recordCreate.Account)
111-
if err != nil {
112-
return recordT{}, err
113-
}
114-
115-
link, err := c.CreateLink(
116-
context.Background(),
117-
account.Id,
118-
expr.String(),
119-
expiresAt,
120-
)
121-
if err != nil {
122-
return recordT{}, err
123-
}
124-
125-
return linkToRecord(context.Background(), c, link)
100+
var record recordT
101+
err := c.WithTransaction(context.Background(), func(c client.Client) error {
102+
expr, err := tags.ParseMatcher(recordCreate.TagMatcher)
103+
if err != nil {
104+
return err
105+
}
106+
107+
expiresAt, err := util.ParseTime(recordCreate.ExpiresAt)
108+
if err != nil {
109+
return err
110+
}
111+
112+
account, err := resolveAccountByName(context.Background(), c, recordCreate.Account)
113+
if err != nil {
114+
return err
115+
}
116+
117+
link, err := c.CreateLink(
118+
context.Background(),
119+
account.Id,
120+
expr.String(),
121+
expiresAt,
122+
)
123+
if err != nil {
124+
return err
125+
}
126+
127+
record, err = linkToRecord(context.Background(), c, link)
128+
return err
129+
})
130+
return record, err
126131
},
127132
func(id recordIdT, recordUpdate recordUpdateT) (recordT, error) {
128-
expr, err := tags.ParseMatcher(recordUpdate.TagMatcher)
129-
if err != nil {
130-
return recordT{}, err
131-
}
132-
133-
expiresAt, err := util.ParseTime(recordUpdate.ExpiresAt)
134-
if err != nil {
135-
return recordT{}, err
136-
}
137-
138-
account, err := resolveAccountByName(context.Background(), c, recordUpdate.Account)
139-
if err != nil {
140-
return recordT{}, err
141-
}
142-
143-
if err := c.UpdateLink(
144-
context.Background(),
145-
id,
146-
account.Id,
147-
expr.String(),
148-
expiresAt,
149-
); err != nil {
150-
return recordT{}, err
151-
}
152-
153-
link, err := c.GetLink(context.Background(), id)
154-
if err != nil {
155-
return recordT{}, err
156-
}
157-
158-
return linkToRecord(context.Background(), c, link)
133+
var record recordT
134+
err := c.WithTransaction(context.Background(), func(c client.Client) error {
135+
expr, err := tags.ParseMatcher(recordUpdate.TagMatcher)
136+
if err != nil {
137+
return err
138+
}
139+
140+
expiresAt, err := util.ParseTime(recordUpdate.ExpiresAt)
141+
if err != nil {
142+
return err
143+
}
144+
145+
account, err := resolveAccountByName(context.Background(), c, recordUpdate.Account)
146+
if err != nil {
147+
return err
148+
}
149+
150+
if err := c.UpdateLink(
151+
context.Background(),
152+
id,
153+
account.Id,
154+
expr.String(),
155+
expiresAt,
156+
); err != nil {
157+
return err
158+
}
159+
160+
link, err := c.GetLink(context.Background(), id)
161+
if err != nil {
162+
return err
163+
}
164+
165+
record, err = linkToRecord(context.Background(), c, link)
166+
return err
167+
})
168+
return record, err
159169
},
160170
func(id recordIdT) error {
161171
return c.DeleteLinks(context.Background(), id)

0 commit comments

Comments
 (0)