You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

78 lines
2.4 KiB

import 'package:dde_gesture_manager/model/model.dart';
import 'package:dde_gesture_manager/dde_gesture_manager.dart';
/// This type initializes an application.
///
/// Override methods in this class to set up routes and initialize services like
/// database connections. See http://conduit.io/docs/http/channel/.
class DdeGestureManagerChannel extends ApplicationChannel {
late ManagedContext context;
/// Initialize services in this method.
///
/// Implement this method to initialize services, read values from [options]
/// and any other initialization required before constructing [entryPoint].
///
/// This method is invoked prior to [entryPoint] being accessed.
@override
Future prepare() async {
logger.onRecord.listen(
(rec) => print("$rec ${rec.error ?? ""} ${rec.stackTrace ?? ""}"));
final config =
DdeGestureManagerConfiguration(options!.configurationFilePath!);
context = contextWithConnectionInfo(config.database!);
}
/// Construct the request channel.
///
/// Return an instance of some [Controller] that will be the initial receiver
/// of all [Request]s.
///
/// This method is invoked after [prepare].
@override
Controller get entryPoint {
final router = Router();
router
.route("/model/[:id]")
.link(() => ManagedObjectController<Model>(context));
router
.route("/")
.linkFunction((Request request) async => Response.ok('ok'));
return router;
}
/*
* Helper methods
*/
ManagedContext contextWithConnectionInfo(
DatabaseConfiguration connectionInfo) {
final dataModel = ManagedDataModel.fromCurrentMirrorSystem();
final psc = PostgreSQLPersistentStore(
connectionInfo.username,
connectionInfo.password,
connectionInfo.host,
connectionInfo.port,
connectionInfo.databaseName);
return ManagedContext(dataModel, psc);
}
}
/// An instance of this class reads values from a configuration
/// file specific to this application.
///
/// Configuration files must have key-value for the properties in this class.
/// For more documentation on configuration files, see https://conduit.io/docs/configure/ and
/// https://pub.dartlang.org/packages/safe_config.
class DdeGestureManagerConfiguration extends Configuration {
DdeGestureManagerConfiguration(String fileName)
: super.fromFile(File(fileName));
DatabaseConfiguration? database;
}