package de.accso.flexinale.shared_kernel;

import java.io.Serializable;
import java.util.UUID;

public interface Identifiable {
    record Id(String id) implements Serializable, RawWrapper<String> {
        public static Id of() {
            return uuid();
        }

        public static Id of(String id) {
            return new Id(id);
        }

        public static Id uuid() {
            return Id.of(UUID.randomUUID().toString());
        }

        public static String uuidString() {
            return UUID.randomUUID().toString();
        }

        @Override
        public String raw() {
            return id;
        }
    }

    Id id();
}
