Trabalho com bancos de dados em Swift: PostgreSQL e MongoDB para iniciantes

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Introdução: por que um desenvolvedor Swift precisa de bancos de dados?

Aplicativos modernos para iOS e macOS raramente funcionam sem armazenamento de dados. Seja uma lista de tarefas, um perfil de usuário ou um catálogo de produtos — os dados precisam ser salvos e recuperados em algum lugar. O Swift, como principal linguagem do ecossistema Apple, fornece ferramentas poderosas para trabalhar com bancos de dados (BD). Neste artigo, vamos explicar como um desenvolvedor iniciante pode se conectar e realizar operações CRUD (criação, leitura, atualização, exclusão) com dois sistemas populares: o relacional PostgreSQL e o orientado a documentos MongoDB.

Usaremos o framework de servidor Vapor (baseado em SwiftNIO) para trabalhar com PostgreSQL, e o driver popular MongoKitten para MongoDB. Ambas as opções são excelentes para backend em Swift. Se você está começando — não tenha medo: todo o código será simples e com explicações.



1. PostgreSQL e Swift: o clássico dos bancos de dados relacionais

PostgreSQL é um poderoso banco de dados relacional com suporte a SQL. Para Swift, a melhor maneira de interagir é através do framework Vapor e seu ORM Fluent. O Fluent permite trabalhar com tabelas como se fossem estruturas Swift comuns.



1.1. Configuração do projeto Vapor

Primeiro, instale o Vapor Toolbox e crie um projeto:

brew install vaporvapor new MyAppcd MyApp

Adicione a dependência para PostgreSQL no Package.swift:

dependencies: [    .package(url: "https://github.com/vapor/vapor.git", from: "4.0.0"),    .package(url: "https://github.com/vapor/fluent.git", from: "4.0.0"),    .package(url: "https://github.com/vapor/fluent-postgres-driver.git", from: "2.0.0")]


1.2. Modelo e migração

Vamos criar um modelo simples User:

import Fluentimport Vapor

final class User: Model, Content { static let schema = "users" @ID(key: .id) var id: UUID? @Field(key: "name") var name: String @Field(key: "email") var email: String init() { } init(id: UUID? = nil, name: String, email: String) { self.id = id self.name = name self.email = email }}

Agora, a migração para criar a tabela:

struct CreateUser: Migration {    func prepare(on database: Database) -> EventLoopFuture<Void> {        database.schema("users")            .id()            .field("name", .string, .required)            .field("email", .string, .required)            .create()    }        func revert(on database: Database) -> EventLoopFuture<Void> {        database.schema("users").delete()    }}

Registre a migração no configure.swift:

app.migrations.add(CreateUser())


1.3. Operações CRUD

Criação de registro (Create):

let user = User(name: "Ivan", email: "ivan@example.com")try await user.save(on: database)

Leitura (Read):

let users = try await User.query(on: database).all()let user = try await User.find(id, on: database)

Atualização (Update):

guard let user = try await User.find(id, on: database) else { return }user.name = "Novo nome"try await user.update(on: database)

Exclusão (Delete):

guard let user = try await User.find(id, on: database) else { return }try await user.delete(on: database)

O Fluent gera automaticamente as consultas SQL, o que simplifica muito a vida dos iniciantes.



2. MongoDB e Swift: a flexibilidade do NoSQL

MongoDB é um banco de dados documental, onde os dados são armazenados no formato BSON (JSON binário). Para Swift, usamos a biblioteca MongoKitten — uma biblioteca madura e ativamente suportada.

Blogs

Book Recommendations