首次提交
This commit is contained in:
36
lib/base/database/DataBase.dart
Normal file
36
lib/base/database/DataBase.dart
Normal file
@@ -0,0 +1,36 @@
|
||||
abstract class DataBase {
|
||||
static late DataBase _dataBase;
|
||||
|
||||
static DataBase getInstance() {
|
||||
return _dataBase;
|
||||
}
|
||||
|
||||
static void setInstance(DataBase database) {
|
||||
_dataBase = database;
|
||||
}
|
||||
|
||||
// 执行查询操作
|
||||
Future<List<Map<String, dynamic>>> query(String table, {dynamic condition});
|
||||
|
||||
// 执行插入操作
|
||||
Future<void> insert(String table, Map<String, dynamic> data);
|
||||
|
||||
// 执行更新操作
|
||||
Future<void> update(
|
||||
String table, Map<String, dynamic> data, dynamic condition);
|
||||
|
||||
// 执行删除操作
|
||||
Future<void> delete(String table, dynamic condition);
|
||||
}
|
||||
|
||||
class DataBaseConfig {
|
||||
String host;
|
||||
String userName;
|
||||
String password;
|
||||
String dataBase;
|
||||
DataBaseConfig(
|
||||
{required this.host,
|
||||
required this.userName,
|
||||
required this.password,
|
||||
required this.dataBase});
|
||||
}
|
||||
51
lib/base/database/impl/MongoDb.dart
Normal file
51
lib/base/database/impl/MongoDb.dart
Normal file
@@ -0,0 +1,51 @@
|
||||
import 'package:EasyDartModule/base/database/DataBase.dart';
|
||||
import 'package:mongo_dart/mongo_dart.dart';
|
||||
|
||||
class MongoDb implements DataBase {
|
||||
final DataBaseConfig config;
|
||||
final Db db;
|
||||
MongoDb(this.config)
|
||||
: db = Db(
|
||||
"mongodb://${config.userName}:${config.password}@${config.host}/${config.dataBase}?authSource=admin") {
|
||||
Future.delayed(Duration(seconds: 1), () async {
|
||||
do {
|
||||
try {
|
||||
await db.open();
|
||||
print('Connected successfully!');
|
||||
} catch (e) {
|
||||
print('Connection error: $e');
|
||||
await Future.delayed(Duration(seconds: 1));
|
||||
}
|
||||
} while (!db.isConnected);
|
||||
});
|
||||
}
|
||||
|
||||
DbCollection getCollection(String name) {
|
||||
return db.collection(name);
|
||||
}
|
||||
|
||||
@override
|
||||
Future<void> delete(String table, dynamic condition) async {
|
||||
await getCollection(table).deleteMany(condition);
|
||||
}
|
||||
|
||||
@override
|
||||
Future<void> insert(String table, Map<String, dynamic> data) async {
|
||||
await getCollection(table).insert(data);
|
||||
}
|
||||
|
||||
@override
|
||||
Future<List<Map<String, dynamic>>> query(String table,
|
||||
{dynamic condition}) async {
|
||||
if (condition == null) {
|
||||
return await getCollection(table).find().toList();
|
||||
}
|
||||
return await getCollection(table).find(condition).toList();
|
||||
}
|
||||
|
||||
@override
|
||||
Future<void> update(
|
||||
String table, Map<String, dynamic> data, dynamic condition) async {
|
||||
await getCollection(table).update(condition, data);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user