mirror of https://github.com/usememos/memos.git
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
|
|
@ -70,6 +70,13 @@ func (s *APIV1Service) CreateMemo(ctx context.Context, request *v1pb.CreateMemoR
|
||||||
|
|
||||||
memo, err := s.Store.CreateMemo(ctx, create)
|
memo, err := s.Store.CreateMemo(ctx, create)
|
||||||
if err != nil {
|
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
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue