Table creation implemented

This commit is contained in:
Andrew 2023-04-29 02:32:38 +07:00
parent 2d812b20c4
commit a04eb703f5
3 changed files with 346 additions and 1 deletions

View file

@ -0,0 +1,88 @@
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";
}