User panel fully functional
This commit is contained in:
parent
e562216658
commit
f67e947f8b
16 changed files with 1346 additions and 641 deletions
106
lib/models/db_column_definition.dart
Normal file
106
lib/models/db_column_definition.dart
Normal file
|
|
@ -0,0 +1,106 @@
|
|||
import 'package:tuuli_api/tuuli_api.dart';
|
||||
|
||||
extension ColumnsParser on TableDefinition {
|
||||
List<DBColumnDefinition> get parsedColumns {
|
||||
return columns
|
||||
.split(",")
|
||||
.map((e) {
|
||||
final parts = e.split(":");
|
||||
final name = parts[0];
|
||||
switch (parts[1]) {
|
||||
case "serial":
|
||||
return PrimarySerialColumnDefinition(name);
|
||||
case "str":
|
||||
return TextColumnDefinition(
|
||||
name,
|
||||
parts.contains("unique"),
|
||||
parts.contains("default"),
|
||||
);
|
||||
case "bool":
|
||||
return BooleanColumnDefinition(
|
||||
name,
|
||||
parts.contains("unique"),
|
||||
parts.contains("default"),
|
||||
);
|
||||
case "datetime":
|
||||
return TimestampColumnDefinition(
|
||||
name,
|
||||
parts.contains("unique"),
|
||||
parts.contains("default"),
|
||||
);
|
||||
case "float":
|
||||
return DoubleColumnDefinition(
|
||||
name,
|
||||
parts.contains("unique"),
|
||||
parts.contains("default"),
|
||||
);
|
||||
case "int":
|
||||
return IntegerColumnDefinition(
|
||||
name,
|
||||
parts.contains("unique"),
|
||||
parts.contains("default"),
|
||||
);
|
||||
case "int-user":
|
||||
return UserRefColumnDefinition(name);
|
||||
case "int-asset":
|
||||
return AssetRefColumnDefinition(name);
|
||||
}
|
||||
|
||||
return null;
|
||||
})
|
||||
.whereType<DBColumnDefinition>()
|
||||
.toList(growable: false);
|
||||
}
|
||||
}
|
||||
|
||||
abstract class DBColumnDefinition {
|
||||
final String name;
|
||||
final bool unique;
|
||||
final bool hasDefault;
|
||||
|
||||
DBColumnDefinition({
|
||||
required this.name,
|
||||
required this.unique,
|
||||
required this.hasDefault,
|
||||
});
|
||||
}
|
||||
|
||||
class PrimarySerialColumnDefinition extends DBColumnDefinition {
|
||||
PrimarySerialColumnDefinition(String name)
|
||||
: super(name: name, unique: false, hasDefault: false);
|
||||
}
|
||||
|
||||
class TextColumnDefinition extends DBColumnDefinition {
|
||||
TextColumnDefinition(String name, bool unique, bool hasDefault)
|
||||
: super(name: name, unique: unique, hasDefault: hasDefault);
|
||||
}
|
||||
|
||||
class BooleanColumnDefinition extends DBColumnDefinition {
|
||||
BooleanColumnDefinition(String name, bool unique, bool hasDefault)
|
||||
: super(name: name, unique: unique, hasDefault: hasDefault);
|
||||
}
|
||||
|
||||
class TimestampColumnDefinition extends DBColumnDefinition {
|
||||
TimestampColumnDefinition(String name, bool unique, bool hasDefault)
|
||||
: super(name: name, unique: unique, hasDefault: hasDefault);
|
||||
}
|
||||
|
||||
class DoubleColumnDefinition extends DBColumnDefinition {
|
||||
DoubleColumnDefinition(String name, bool unique, bool hasDefault)
|
||||
: super(name: name, unique: unique, hasDefault: hasDefault);
|
||||
}
|
||||
|
||||
class IntegerColumnDefinition extends DBColumnDefinition {
|
||||
IntegerColumnDefinition(String name, bool unique, bool hasDefault)
|
||||
: super(name: name, unique: unique, hasDefault: hasDefault);
|
||||
}
|
||||
|
||||
class UserRefColumnDefinition extends DBColumnDefinition {
|
||||
UserRefColumnDefinition(String name)
|
||||
: super(name: name, unique: false, hasDefault: false);
|
||||
}
|
||||
|
||||
class AssetRefColumnDefinition extends DBColumnDefinition {
|
||||
AssetRefColumnDefinition(String name)
|
||||
: super(name: name, unique: false, hasDefault: false);
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue