mirror of
https://github.com/usememos/memos.git
synced 2025-12-16 21:59:25 +08:00
fix(api): return AlreadyExists error for duplicate memo IDs (AIP-133)
Ensure AIP-133 compliance by returning codes.AlreadyExists when a duplicate memo ID is provided, rather than a generic database error. Handles unique constraint violations across all database drivers: - SQLite: "UNIQUE constraint failed" - PostgreSQL: "duplicate key" - MySQL: "Duplicate entry" This provides a clear, standardized error response per Google's API design guidelines (AIP-133 for Create methods).
This commit is contained in:
parent
c8900acc4e
commit
652c855145
1 changed files with 7 additions and 0 deletions
|
|
@ -70,6 +70,13 @@ func (s *APIV1Service) CreateMemo(ctx context.Context, request *v1pb.CreateMemoR
|
|||
|
||||
memo, err := s.Store.CreateMemo(ctx, create)
|
||||
if err != nil {
|
||||
// Check for unique constraint violation (AIP-133 compliance)
|
||||
errMsg := err.Error()
|
||||
if strings.Contains(errMsg, "UNIQUE constraint failed") ||
|
||||
strings.Contains(errMsg, "duplicate key") ||
|
||||
strings.Contains(errMsg, "Duplicate entry") {
|
||||
return nil, status.Errorf(codes.AlreadyExists, "memo with ID %q already exists", memoUID)
|
||||
}
|
||||
return nil, err
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue