import NIOSSL import Fluent import FluentMySQLDriver import Vapor // Configures your application public func configure(_ app: Application) async throws { app.middleware = .init() // Global user state management app.middleware.use(StateMiddleware()) app.manager = .init() // Error HTML pages or JSON responses app.middleware.use(CustomErrorMiddleware(environment: app.environment)) // Serve files from /Public folder app.middleware.use(FileMiddleware(publicDirectory: app.directory.publicDirectory)) // sudo mariadb-install-db --user=mysql --basedir=/usr --datadir=/var/lib/mysql // sudo systemctl enable mariadb.service // sudo systemctl start mariadb.service // sudo mariadb // > CREATE DATABASE riyyi; // > GRANT ALL ON riyyi.* TO 'riyyi'@'%' IDENTIFIED BY '123' WITH GRANT OPTION; // > GRANT ALL ON riyyi.* TO 'riyyi'@'localhost' IDENTIFIED BY '123' WITH GRANT OPTION; // % does NOT match localhost! // > FLUSH PRIVILEGES; app.databases.use(DatabaseConfigurationFactory.mysql( hostname: Environment.get("DATABASE_HOST") ?? "localhost", port: Environment.get("DATABASE_PORT").flatMap(Int.init(_:)) ?? MySQLConfiguration.ianaPortNumber, username: Environment.get("DATABASE_USERNAME") ?? "riyyi", password: Environment.get("DATABASE_PASSWORD") ?? "123", database: Environment.get("DATABASE_NAME") ?? "riyyi", tlsConfiguration: nil // Local connections dont need encryption ), as: .mysql) app.migrations.add(CreateTodo()) // Register routes try routes(app) }