如何使用 Aqueduct 创建 MySQL 的 persistentStore?

How create a persistentStore to MySQL with Aqueduct?

我正在尝试使用 dataModel 和 persistentStore 创建上下文...按照以下代码使用 PostgreSQL:

  @override
  Future prepare() async {
    logger.onRecord.listen((rec) => print("$rec ${rec.error ?? ""} ${rec.stackTrace ?? ""}"));

    final dataModel = ManagedDataModel.fromCurrentMirrorSystem();
    final persistentStore = PostgreSQLPersistentStore.fromConnectionInfo(
      "heroes_user", "password", "localhost", 5432, "heroes");

    context = ManagedContext(dataModel, persistentStore);
  }

我想使用 MySQL 而不是 PostgreSQL,我找不到任何使用它的教程。

下面是使用另一种数据库的一般过程:

  • 找到一个 MySQL Dart 包。 (也许 this one
  • 创建一个 class 来扩展 Aqueduct 的 PersistentStore
  • 实现 MySQL 的抽象方法。 (作为参考,请参阅 PostgreSQLPersistentStore 如何在 PostgreSQL 中执行此操作。)
  • 如果您使用身份验证,请对 AuthServerDelegate. (For reference, see how ManagedAuthDelegate 在 PostgreSQL 中执行相同的操作。)
  • 创建大量测试来检查您的工作。

我的推荐:

  • 使用默认的 PostgreSQL 实现。与 MySQL 自己实现所有内容相比,学习所需的时间要少得多。默认实现可能也经过了更好的测试。使用 ORM,您甚至不会使用太多原始 PostgreSQL 代码,它本身与原始 MySQL 代码没有显着差异。
  • 您还可以查看 Angel server, which seems to be more modular than Aqueduct, but you are still going to have to implement your own MySQL service. See this
  • 在不选择框架或数据库的情况下,尽可能多地进行开发。作为干净架构的原则,这些都是细节。如果可能,将它们抽象出来。参见 Clean architecture for the rest of us