88 lines
2.1 KiB
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";
|
|
}
|