import 'dart:async'; import 'dart:io'; import 'package:floor/floor.dart'; import 'package:pj_supermarket_cloud/common/index.dart'; import 'package:pj_supermarket_cloud/common/services/database/database_migration.dart'; import 'package:sqflite/sqflite.dart' as sqflite; part 'database.g.dart'; const entities = [ BroadcastEntity, OrderEntity, OrderHoldBillEntity, CanteenSpuEntity, SupermarketSkuEntity, SupermarketSpuEntity, SupermarketCodeEntity, ShopCardEntity, ClassifyEntity, PrintHistoryEntity, UserEntity, FaceEntity, SettingEntity, ]; const typeConverters = [ DateTimeConverter, DateTimeEmptyConverter, OrderStatusConverter, OrderTypeConverter, OrderPayTypeConverter, SysTypeConverter, PrintStatusConverter, SupermarketNatureConverter, DiscountsTypeConverter, ListDiscountsConverter, ListIntConverter, BoolConverter, ]; @Database(version: 6, entities: entities) @TypeConverters(typeConverters) abstract class AppDatabase extends FloorDatabase { BroadcastDao get getBroadcastDao; OrderDao get getOrderDao; OrderHoldBillDao get getOrderHoldBillDao; CanteenSpuDao get getCanteenSpuDao; SupermarketSkuDao get getSupermarketSkuDao; SupermarketSpuDao get getSupermarketSpuDao; SupermarketCodeDao get getSupermarketCodeDao; ShopCardDao get getShopCardDao; ClassifyDao get getClassifyDao; PrintHistoryDao get getPrintHistoryDao; UserDao get getUserDao; FaceDao get getFaceDao; SettingDao get getSettingDao; static Future getDataBase() async { final dbPath = await AppFileTool.getDatabasePath(); final name = "$dbPath/${Constants.databaseName}"; final dataBase = await $FloorAppDatabase .databaseBuilder(name) .addCallback( Callback( onCreate: (database, version) async { logger.i('数据库已创建,版本: $version'); }, onOpen: (database) async { logger.i('数据库已打开'); }, onUpgrade: (database, startVersion, endVersion) { logger.i('数据库已升级,版本: $startVersion -> $endVersion'); }, ), ) .addMigrations(DatabaseMigration.getDatabaseMigrations()) .build(); return dataBase; } }