import Vapor
import Fluent

var server: SQLiteDatabase!

// configures your application
public func configure(_ app: Application) throws {
    let storageFolder = URL(fileURLWithPath: app.directory.resourcesDirectory)

    app.http.server.configuration.port = 6002

    // Set target environment
    app.environment = .production

    if app.environment == .development {
        app.logger.logLevel = .info
        print("[DEVELOPMENT] Using in-memory database")
        app.databases.use(.sqlite(.memory), as: .sqlite)
        
    } else {
        app.logger.logLevel = .notice
        let dbFile = storageFolder.appendingPathComponent("db.sqlite").path
        print("[PRODUCTION] Using database at \(dbFile)")
        app.databases.use(.sqlite(.file(dbFile)), as: .sqlite)
    }
    app.migrations.add(UserTableMigration())

    try app.autoMigrate().wait()

    // serve files from /Public folder
    app.middleware.use(FileMiddleware(publicDirectory: app.directory.publicDirectory))

    let db = app.databases.database(.sqlite, logger: .init(label: "Init"), on: app.databases.eventLoopGroup.next())!
    server = try SQLiteDatabase(db: db)

    // register routes
    try routes(app)
}
