MCPcopy Create free account
hub / github.com/OpenAtomFoundation/SmartIDE / InsertOrUpdateRemote

Function InsertOrUpdateRemote

cli/internal/dal/remote.go:161–218  ·  view source on GitHub ↗
(remoteInfo workspace.RemoteInfo)

Source from the content-addressed store, hash-verified

159}
160
161func InsertOrUpdateRemote(remoteInfo workspace.RemoteInfo) (id int, err error) {
162
163 var single *workspace.RemoteInfo
164
165 if remoteInfo.ID > 0 {
166 single, err = GetRemoteById(remoteInfo.ID)
167 if err != nil {
168 return id, err
169 }
170 } else {
171 single, err = GetRemoteByHost(remoteInfo.Addr, remoteInfo.UserName)
172 if err != nil {
173 return id, err
174 }
175 }
176
177 //1. init
178 db := getDb()
179 defer db.Close()
180
181 passwordEncrypt := ""
182 if len(remoteInfo.Password) > 0 {
183 passwordEncrypt = aes4go.Encrypt(remoteInfo.Password, aesDecryptKey)
184 }
185
186 //2. insert or update
187 if single != nil { //2.1. update
188 stmt, err := db.Prepare(`update remote
189 set r_addr=?, r_port=?, r_username=?, r_auth_type=?, r_password=?
190 where r_id=? or r_addr=?`)
191 if err != nil {
192 return id, err
193 }
194 _, err = stmt.Exec(remoteInfo.Addr, remoteInfo.SSHPort, remoteInfo.UserName, remoteInfo.AuthType, passwordEncrypt,
195 remoteInfo.ID, remoteInfo.Addr)
196 if err != nil {
197 return -1, err
198 }
199
200 id = single.ID
201
202 } else { //2.2. insert
203 stmt, err := db.Prepare(`INSERT INTO remote(r_addr, r_port, r_username, r_auth_type, r_password)
204 values(?, ?, ?, ?, ?)`)
205 if err != nil {
206 return id, err
207 }
208 res, err := stmt.Exec(remoteInfo.Addr, remoteInfo.SSHPort, remoteInfo.UserName, remoteInfo.AuthType, passwordEncrypt)
209 if err != nil {
210 return id, err
211 }
212 id64, err := res.LastInsertId()
213 id = int(id64)
214 return id, err
215 }
216
217 return id, err
218}

Callers 1

InsertOrUpdateWorkspaceFunction · 0.85

Calls 4

GetRemoteByIdFunction · 0.85
GetRemoteByHostFunction · 0.85
getDbFunction · 0.85
ExecMethod · 0.80

Tested by

no test coverage detected