76 lines
2.6 KiB
Dart
76 lines
2.6 KiB
Dart
import 'dart:async';
|
|
import 'dart:io';
|
|
import 'package:angel3_framework/angel3_framework.dart';
|
|
import 'package:angel3_orm/angel3_orm.dart';
|
|
import 'package:angel3_orm_mysql/angel3_orm_mysql.dart';
|
|
import 'package:mysql1/mysql1.dart';
|
|
//import 'package:mysql_client/mysql_client.dart';
|
|
|
|
// For MariaDb
|
|
Future<void> configureServer(Angel app) async {
|
|
try {
|
|
var connection = await connectToMariaDb(app.configuration);
|
|
var executor = MariaDbExecutor(connection, logger: app.logger);
|
|
|
|
app
|
|
..container.registerSingleton<QueryExecutor>(executor)
|
|
..shutdownHooks.add((_) => connection.close());
|
|
} catch (e) {
|
|
app.logger.severe("Failed to connect to MariaDB. ORM disabled.", e);
|
|
}
|
|
}
|
|
|
|
// MariaDB connection
|
|
Future<MySqlConnection> connectToMariaDb(Map configuration) async {
|
|
var mariaDbConfig = configuration['mysql'] as Map? ?? {};
|
|
var settings = ConnectionSettings(
|
|
host: mariaDbConfig['host'] as String? ?? 'localhost',
|
|
port: mariaDbConfig['port'] as int? ?? 3306,
|
|
db: mariaDbConfig['database_name'] as String? ??
|
|
Platform.environment['USER'] ??
|
|
Platform.environment['USERNAME'] ??
|
|
'',
|
|
user: mariaDbConfig['username'] as String?,
|
|
password: mariaDbConfig['password'] as String?,
|
|
timeout: Duration(
|
|
seconds: mariaDbConfig['timeout_in_seconds'] as int? ?? 30000),
|
|
useSSL: mariaDbConfig['use_ssl'] as bool? ?? false);
|
|
|
|
var connection = await MySqlConnection.connect(settings);
|
|
return connection;
|
|
}
|
|
|
|
// For Mysql
|
|
/*
|
|
Future<void> configureServer(Angel app) async {
|
|
try {
|
|
var connection = await connectToMysql(app.configuration);
|
|
var executor = MySqlExecutor(connection, logger: app.logger);
|
|
|
|
app
|
|
..container.registerSingleton<QueryExecutor>(executor)
|
|
..shutdownHooks.add((_) => connection.close());
|
|
} catch (e) {
|
|
app.logger.severe("Failed to connect to MySQL. ORM disabled.", e);
|
|
}
|
|
}
|
|
|
|
// Mysql Connection
|
|
Future<MySQLConnection> connectToMysql(Map configuration) async {
|
|
var mysqlConfig = configuration['mysql'] as Map? ?? {};
|
|
|
|
var connection = await MySQLConnection.createConnection(
|
|
host: mysqlConfig['host'] as String? ?? 'localhost',
|
|
port: mysqlConfig['port'] as int? ?? 3306,
|
|
databaseName: mysqlConfig['database_name'] as String? ??
|
|
Platform.environment['USER'] ??
|
|
Platform.environment['USERNAME'] ??
|
|
'',
|
|
userName: mysqlConfig['username'] as String? ?? '',
|
|
password: mysqlConfig['password'] as String? ?? '',
|
|
secure: mysqlConfig['use_ssl'] as bool? ?? false);
|
|
|
|
await connection.connect(timeoutMs: 10000);
|
|
return connection;
|
|
}
|
|
*/
|