UI 初体验
This commit is contained in:
@@ -1,4 +1,7 @@
|
||||
import 'package:drift/drift.dart';
|
||||
import 'package:drift_flutter/drift_flutter.dart';
|
||||
|
||||
part 'models.g.dart';
|
||||
|
||||
/// 导入记录表定义
|
||||
class ImportRecord extends Table {
|
||||
@@ -24,5 +27,46 @@ class SaleDetail extends Table {
|
||||
TextColumn get objName => text()();
|
||||
|
||||
/// 进销单据性质
|
||||
TextColumn get type => text().map(const SaleDetailTypeConverter())();
|
||||
|
||||
/// 关联导入记录 ID
|
||||
IntColumn get importId => integer().references(ImportRecord, #id)();
|
||||
}
|
||||
|
||||
enum SaleDetailType {
|
||||
bill('挂账', 'BILL', ['挂账']),
|
||||
cash('现金', 'CASH', ['挂账']),
|
||||
online('线上支付', 'ONLINE', ['挂账']);
|
||||
|
||||
final String desc;
|
||||
final String code;
|
||||
final List<String> identity;
|
||||
static final Map<String, SaleDetailType> map = {
|
||||
for (var type in SaleDetailType.values) type.code: type,
|
||||
};
|
||||
const SaleDetailType(this.desc, this.code, this.identity);
|
||||
static SaleDetailType? of(String param) => map[param];
|
||||
}
|
||||
|
||||
class SaleDetailTypeConverter extends TypeConverter<SaleDetailType, String> {
|
||||
const SaleDetailTypeConverter();
|
||||
|
||||
@override
|
||||
SaleDetailType fromSql(String code) => SaleDetailType.of(code)!;
|
||||
|
||||
@override
|
||||
String toSql(SaleDetailType type) => type.code;
|
||||
}
|
||||
|
||||
// 添加数据库类
|
||||
@DriftDatabase(tables: [ImportRecord, SaleDetail])
|
||||
class AppDatabase extends _$AppDatabase {
|
||||
AppDatabase([QueryExecutor? executor]) : super(executor ?? _openConnection());
|
||||
|
||||
@override
|
||||
int get schemaVersion => 1;
|
||||
|
||||
static QueryExecutor _openConnection() {
|
||||
return driftDatabase(name: 'my_database');
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user