Swift e PostgreSQL: a combinação perfeita para backend em 2025

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

Swift e PostgreSQL: por que essa combinação é revolucionária

\n\n

Quando falamos "Swift no servidor", a maioria dos desenvolvedores pensa em Vapor, Perfect ou Kitura. E quando o assunto são bancos de dados, vêm à mente o familiar MySQL ou SQLite. Mas sejamos honestos: se você está construindo um backend sério em Swift, precisa de PostgreSQL. Por quê? Porque não é apenas um banco de dados — é um canivete suíço para trabalhar com dados que se encaixa perfeitamente no poder do Swift.

\n\n

Neste artigo, vamos explorar como integrar Swift e PostgreSQL para que seu código voe, o banco não caia e seus colegas fiquem com inveja. Sem enrolação — apenas prática, código e casos reais.

\n\n

Por que PostgreSQL e não MySQL?

\n\n

Vamos esclarecer isso de uma vez. PostgreSQL é um SGBD objeto-relacional que faz coisas que o MySQL nem sonha:

\n\n
    \n
  • JSON e JSONB nativos — armazene estruturas complexas diretamente nas tabelas
  • \n
  • Arrays — sem gambiarras ou tabelas extras
  • \n
  • Consultas paralelas — utilize todos os núcleos do servidor
  • \n
  • Extensibilidade — PostGIS, TimescaleDB, pgvector para IA
  • \n
\n\n

E o principal: PostgreSQL se integra perfeitamente com SwiftNIO (o motor assíncrono que alimenta o Vapor). Isso significa que suas consultas ao banco não bloquearão o fluxo de execução.

\n\n

Instalação e configuração do driver PostgreSQL para Swift

\n\n

Vamos começar pelo essencial — como conectar o PostgreSQL ao seu projeto Swift. Usaremos vapor/fluent-postgres-driver, o driver mais popular e estável.

\n\n

Passo 1: Adicionando dependências

\n\n

Abra o Package.swift e adicione:

\n\n
// swift-tools-version:5.9\nimport PackageDescription\n\nlet package = Package(\n    name: "MySwiftBackend",\n    platforms: [\n        .macOS(.v13)\n    ],\n    dependencies: [\n        .package(url: "https://github.com/vapor/vapor.git", from: "4.90.0"),\n        .package(url: "https://github.com/vapor/fluent.git", from: "4.10.0"),\n        .package(url: "https://github.com/vapor/fluent-postgres-driver.git", from: "2.8.0")\n    ],\n    targets: [\n        .target(\n            name: "App",\n            dependencies: [\n                .product(name: "Vapor", package: "vapor"),\n                .product(name: "Fluent", package: "fluent"),\n                .product(name: "FluentPostgresDriver", package: "fluent-postgres-driver")\n            ]\n        )\n    ]\n)
\n\n

Passo 2: Configurando a conexão com o banco

\n\n

No arquivo configure.swift, adicione a configuração:

\n\n
import Vapor\nimport Fluent\nimport FluentPostgresDriver\n\npublic func configure(_ app: Application) throws {\n    // Use variáveis de ambiente para segurança\n    let hostname = Environment.get("DB_HOST") ?? "localhost"\n    let port = Environment.get("DB_PORT").flatMap(Int.init) ?? 5432\n    let username = Environment.get("DB_USERNAME") ?? "swift_user"\n    let password = Environment.get("DB_PASSWORD") ?? "swift_pass"\n    let database = Environment.get("DB_NAME") ?? "swift_backend"\n\n    app.databases.use(\n        .postgres(\n            hostname: hostname,\n            port: port,\n            username: username,\n            password: password,\n            database: database\n        ),\n        as: .psql\n    )\n    \n    // Registrando modelos\n    app.migrations.add(CreateUser())\n    \n    // Automigrações na inicialização\n    try app.autoMigrate().wait()\n}
\n\n

Dica importante: nunca coloque senhas fixas no código. Use variáveis de ambiente ou arquivos .env com o Vapor's Environment.

\n\n

Criando um modelo de dados em Swift

\n\n

Agora a parte mais interessante — vamos definir um modelo de usuário. No Swift com Fluent, isso é feito de forma elegante e concisa:

\n\n
import Fluent\nimport Vapor\n\nfinal                

Blogs

Book Recommendations