-
💧Vapor💧 MySQL DB에 연결하기Programing/Vapor 2020. 5. 8. 03:14
안녕하세요 5anniversary에요~!
이번 시간에는 저번 시간에 이어서 Vapor를 이용해 서버를 구축하기 위해서 MySQL DB에 연결해 볼 거예요~!
우선 MySQL을 사용하기 위해서 필요한 패키지를 받아줘야겠죠??
저희가 사용할 패키지는 fluent-mysql-driver 를 사용해 줄 거예요 Fluent에 대해서 알아보자면
Fluent (vapor/fluent) is a type-safe, fast, and easy-to-use ORM framework built for Swift. It takes advantage of Swift's strong type system to provide an elegant foundation for building database integrations.
Fluent는 Swift를 위한 type-safe가 지원되고, 빠르고, 사용하기 쉬운 객체 관계 매핑을 지원해주는 프레임워크입니다. - 출처
라고 설명이 되어있네요!!
사용할 패키지를 알아봤으면 이제 한 번 패키지를 받아보도록 할까요??
import Vapor let package = Package( name: "Hello", // 프로젝트 이름 dependencies: [ /// Any other dependencies ... .package(url: "https://github.com/vapor/fluent-mysql-driver.git", from: "3.0.0"), // git 그리고 버전 ], targets: [ .target(name: "App", dependencies: ["FluentMySQL", ...]), .target(name: "Run", dependencies: ["App"]), .testTarget(name: "AppTests", dependencies: ["App"]), ] )
Package.swift
이렇게 Package.swift 파일에 작성해준 이후
터미널로 돌아가
vapor xcode -y
를 해주시면 바로 패키지를 받아온 프로젝트가 펼쳐지게 됩니다.
우선 간단한 유저 모델을 작성해주겠습니다.
import Vapor import FluentMySQL struct User { var id: Int? var name: String? } extension User: Content {} extension User: Migration {} extension User: MySQLModel { typealias Database = MySQLDatabase }
User.swift
MySQL의 모델을 가지고 있으려면 id값은 기본 pk로 설정되어있어 건드리지 않는 편이 좋습니다.
또한, Content는 request를 다뤄줄 때 사용, Migration은 모델링을 해두면 해당 모델을 가지고 DB에 migration을 통해 자동 모델링을 해줄 때 사용되기 때문에 상속받아야 합니다.
그다음 MySQL과 연결을 해줄 건데요
import FluentMySQL import Vapor public func configure(_ config: inout Config, _ env: inout Environment, _ services: inout Services) throws { // Register providers first try services.register(FluentMySQLProvider()) ...code... var databases = DatabasesConfig() let hostname = "localhost" let username = "디비 사용자 명" let password = "디비 비밀번호" let databaseName = "접속 디비 이름" let databaseConfig = MySQLDatabaseConfig( hostname: hostname, port: 3306, // 기본 디비 포트가 3306 일거입니다. username: username, password: password, database: databaseName) let database = MySQLDatabase(config: databaseConfig) databases.add(database: database, as: .mysql) services.register(databases) var migrations = MigrationConfig() migrations.add(model: User.self, database: DatabaseIdentifier<MySQLDatabase>.mysql) services.register(migrations) }
configure.swift
configure.swift를 통해 DB설정을 해줍니다.
이다음 실행을 해주시면
원하는 모델대로 테이블이 생성된 것을 볼 수 있습니다.
테이블에
유저를 추가시켜준 다음
import Vapor public func routes(_ router: Router) throws { // ...code... router.get("users") { req in return User.query(on: req).all() } }
routes.swift
라우터를 추가시켜준다음 실행시켜주시면
와 같은 결과를 얻어볼 수 있습니다.
git link 에서 여기까지 해놓은 코드의 링크를 첨부 합니다.
그리고, 다음 시간에는 오늘 결과로 좀 더 나아가 heroku에 배포도 진행해보도록 하겠습니다.
'Programing > Vapor' 카테고리의 다른 글
[Vapor] Rest API 만들기 - 2 (POST) (0) 2020.05.22 [Vapor] Rest API 만들기 - 1 (0) 2020.05.22 💧Vapor💧 Heroku MySQL DB 사용하기 (0) 2020.05.11 💧Vapor💧 Swift Server, Heroku 배포하기 (6) 2020.05.10 💧Vapor💧 Swift로 서버 구축하기 (1) 2020.04.27