首次提交

This commit is contained in:
qmqz
2025-01-02 10:08:03 +08:00
commit fd62ed3d98
16 changed files with 1143 additions and 0 deletions

View 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});
}

View 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);
}
}