extractIdStrategy static method
Extract ID strategy from @Id annotation
Implementation
static IDStrategy? extractIdStrategy(ElementAnnotation? idAnnotation) {
if (idAnnotation == null) return null;
try {
final source = idAnnotation.toSource();
// Check for named constructors (postgres, mysql, sqlite, uuid)
if (source.contains('Id.postgres')) return IDStrategy.serial;
if (source.contains('Id.mysql')) return IDStrategy.autoIncrement;
if (source.contains('Id.sqlite')) return IDStrategy.autoIncrementSqlite;
if (source.contains('Id.uuid')) return IDStrategy.uuid;
// Check for strategy parameter in default constructor
final strategyMatch = RegExp(
r'strategy\s*:\s*IDStrategy\.(\w+)',
).firstMatch(source);
if (strategyMatch != null) {
final strategyName = strategyMatch.group(1);
return IDStrategy.values.firstWhere(
(s) => s.name == strategyName,
orElse: () => IDStrategy.autoIncrement,
);
}
} catch (e) {
// Silently fail and return null
}
return null;
}