Skip to content

Implementar geração segura de identificadores #22

@wallanpsantos

Description

@wallanpsantos

Título: Replace random ID generation with ULID/UUID for collision safety
Labels: medium, reliability, id-generation
Prioridade: MÉDIA

Problema Atual (Ponto 6 do Feedback):

  • RandomID com potencial de colisão
  • Falta de estratégia centralizada

Solução Proposta:

// Core - Domain Service (interface)
public interface IdentityGenerator {
    String generateId();
    String generateCorrelationId();
}

// DataProvider - ULID Implementation
@Service
public class UlidIdentityGenerator implements IdentityGenerator {
    
    private final UlidCreator ulidCreator = UlidCreator.getMonotonicUlid();
    
    @Override
    public String generateId() {
        return ulidCreator.create().toString();
    }
    
    @Override
    public String generateCorrelationId() {
        return UUID.randomUUID().toString(); // Para correlação, UUID é suficiente
    }
}

// PostgreSQL - Usando UUID nativo
ALTER TABLE wallets ALTER COLUMN id SET DEFAULT gen_random_uuid();
ALTER TABLE wallet_transactions ALTER COLUMN id SET DEFAULT gen_random_uuid();

Tarefas:

  • Adicionar dependência ULID

    <dependency>
        <groupId>com.github.f4b6a3</groupId>
        <artifactId>ulid-creator</artifactId>
        <version>5.2.0</version>
    </dependency>
  • Implementar UlidIdentityGenerator

  • Configurar PostgreSQL para UUID default

  • Substituir todas as gerações manuais

  • Testes de unicidade/performance

Metadata

Metadata

Assignees

Labels

enhancementNew feature or requestperformanceMelhoria de performance

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions