MCPcopy Create free account
hub / github.com/devaccuracy/ledgerforge / UpdateLedger

Method UpdateLedger

database/ledger.go:179–209  ·  view source on GitHub ↗

UpdateLedger updates an existing ledger's name in the database. It validates that the ledger exists and updates only the name field. Parameters: - id: The unique ID of the ledger to update. - name: The new name for the ledger. Returns: - *model.Ledger: The updated ledger object. - error: An error

(id, name string)

Source from the content-addressed store, hash-verified

177// - *model.Ledger: The updated ledger object.
178// - error: An error if the ledger is not found or if the update fails.
179func (d Datasource) UpdateLedger(id, name string) (*model.Ledger, error) {
180 // First, check if the ledger exists
181 existingLedger, err := d.GetLedgerByID(id)
182 if err != nil {
183 return nil, err
184 }
185
186 // Update the ledger name
187 _, err = d.Conn.ExecContext(context.Background(), `
188 UPDATE ledgerforge.ledgers
189 SET name = $1
190 WHERE ledger_id = $2
191 `, name, id)
192 if err != nil {
193 pqErr, ok := err.(*pq.Error)
194 if ok {
195 switch pqErr.Code.Name() {
196 case "unique_violation":
197 return nil, apierror.NewAPIError(apierror.ErrConflict, "Ledger with this name already exists", err)
198 default:
199 return nil, apierror.NewAPIError(apierror.ErrInternalServer, "Database error occurred", err)
200 }
201 }
202 return nil, apierror.NewAPIError(apierror.ErrInternalServer, "Failed to update ledger", err)
203 }
204
205 // Update the existing ledger object with the new name
206 existingLedger.Name = name
207
208 return existingLedger, nil
209}
210
211// GetAllLedgersWithFilter retrieves ledgers with advanced filtering support.
212// It delegates to GetAllLedgersWithFilterAndOptions with nil options.

Callers 3

TestUpdateLedger_SuccessFunction · 0.95

Calls 2

GetLedgerByIDMethod · 0.95
NewAPIErrorFunction · 0.92

Tested by 3

TestUpdateLedger_SuccessFunction · 0.76