Search code examples
swiftsqlitevaporserver-side-swift

Creating data in SQLite database manually in Vapor


How to add data to SQLite database manually in Vapor project so that at startup there's already some data in it?


Solution

  • I use this:

    struct CreateAdminUser: Migration {
    
        static func prepare(on connection: SQLiteConnection) -> Future<Void> {
            let password = try? BCrypt.hash("secret")
            let user = User(email: "[email protected]", password: password!)
            return user.save(on: connection).transform(to: ())
        }
    
        static func revert(on connection: SQLiteConnection) -> Future<Void> {
            return Future.map(on: connection) {}
        }
    }
    

    I then put this line into configure.swift migrations:

    migrations.add(migration: CreateAdminUser.self, database: .sqlite)