tuuli_app/lib/models/table_column_definition.dart

88 lines
2.1 KiB
Dart

abstract class TableColumnDefinition {
final String columnName;
final bool isUnique;
TableColumnDefinition({
required this.columnName,
required this.isUnique,
});
String get def => throw UnimplementedError("def getter not implemented");
}
class SerialPrimaryColumnDefinition extends TableColumnDefinition {
SerialPrimaryColumnDefinition({
required super.columnName,
}) : super(isUnique: true);
@override
String get def => "$columnName:serial:primary";
}
class TextColumnDefinition extends TableColumnDefinition {
TextColumnDefinition({
required super.columnName,
required super.isUnique,
});
@override
String get def => "$columnName:str${isUnique ? ":unique" : ""}";
}
class BooleanColumnDefinition extends TableColumnDefinition {
BooleanColumnDefinition({
required super.columnName,
required super.isUnique,
});
@override
String get def => "$columnName:bool${isUnique ? ":unique" : ""}";
}
class TimestampColumnDefinition extends TableColumnDefinition {
TimestampColumnDefinition({
required super.columnName,
required super.isUnique,
});
@override
String get def => "$columnName:datetime${isUnique ? ":unique" : ""}";
}
class DoubleColumnDefinition extends TableColumnDefinition {
DoubleColumnDefinition({
required super.columnName,
required super.isUnique,
});
@override
String get def => "$columnName:float${isUnique ? ":unique" : ""}";
}
class IntegerColumnDefinition extends TableColumnDefinition {
IntegerColumnDefinition({
required super.columnName,
required super.isUnique,
});
@override
String get def => "$columnName:int${isUnique ? ":unique" : ""}";
}
class UserRefColumnDefinition extends TableColumnDefinition {
UserRefColumnDefinition({
required super.columnName,
}) : super(isUnique: false);
@override
String get def => "$columnName:int-user";
}
class AssetRefColumnDefinition extends TableColumnDefinition {
AssetRefColumnDefinition({
required super.columnName,
}) : super(isUnique: false);
@override
String get def => "$columnName:int-asset";
}