Slick codegen не дает никакого вывода

Я пытаюсь использовать текущую версию Slick и Slick-Codegen (3.2.0) с базой данных sqlite. Когда я пытаюсь перечислить таблицу, я получаю имена правильно. Однако, когда я пытаюсь сгенерировать классы, соответствующие таблицам, я не получаю никакого вывода.

Это работает:

object TableCodeGenerator extends App
{
    val db = Database.forURL("jdbc:sqlite:/home/samik/db/mydb.db", driver = "org.sqlite.JDBC")
    val tables = Await.result(db.run(MTable.getTables), 1 second).toList
    tables.foreach(println)
}

Я получаю вывод ниже:

MTable(MQName(models),TABLE,null,None,None,None)
MTable(MQName(users),TABLE,null,None,None,None)

Однако следующий код, выполняемый таким же образом напрямую, не работает:

object TableCodeGenerator extends App
{
    val db = Database.forURL("jdbc:sqlite:/home/samik/db/mydb.db", driver = "org.sqlite.JDBC")
    val dbio = SQLiteProfile.createModel(Some(MTable.getTables))
    val model = db.run(dbio)

    val codegenFuture: Future[SourceCodeGenerator] = model.map(model => new SourceCodeGenerator(model))

    codegenFuture.onSuccess
    {
        case codegen => codegen.writeToFile(
            "org.sqlite.JDBC",
            "/tmp",
            "my.package.dao",
            "Tables",
            "Tables.scala")
    }
}

Это означает, что код работает успешно, но я не вижу никакого выходного файла. Есть что-то, что я пропускаю?

1 ответ

Решение

Вышесказанное происходило потому, что основной код молча выдавал исключение. Причиной этого исключения было то, что я использовал "функцию" sqlite, где, если вы не упомянули тип данных в схеме, sqlite предполагает, что это текстовый тип. Однако это создает проблему для скользкого кода.

Подробнее здесь. Непосредственное решение состояло в том, чтобы исправить схему, но я думаю, что теперь это было исправлено и в пятно.

Другие вопросы по тегам