Trabalho com bancos de dados em Swift: PostgreSQL e MongoDB

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 ao trabalho com bancos de dados em Swift

Swift deixou há muito tempo de ser uma linguagem exclusivamente para desenvolvimento mobile. Com o surgimento de frameworks server-side, como Vapor e Kitura, Swift se tornou uma ferramenta completa para criar soluções backend. Um aspecto fundamental de qualquer sistema servidor é o trabalho com bancos de dados. Neste artigo, veremos como conectar e interagir com dois SGBDs populares: o relacional PostgreSQL e o orientado a documentos MongoDB. Você aprenderá quais bibliotecas usar, como configurar a conexão e realizar operações CRUD básicas em Swift puro.



PostgreSQL em Swift: configuração e operações básicas

PostgreSQL é um dos bancos de dados relacionais mais confiáveis. Para trabalhar com ele em Swift, existem várias bibliotecas, mas a mais popular é PostgresNIO — um driver assíncrono construído sobre SwiftNIO. Se você usa o framework Vapor, o trabalho com PostgreSQL é simplificado através do ORM Fluent.



Conexão ao PostgreSQL via PostgresNIO

Vamos começar instalando a dependência. No Package.swift, adicione:

// swift-tools-version:5.7import PackageDescription

let package = Package( name: "MyApp", dependencies: [ .package(url: "https://github.com/vapor/postgres-nio.git", from: "1.18.0") ], targets: [ .target(name: "MyApp", dependencies: [ .product(name: "PostgresNIO", package: "postgres-nio") ]) ])


Exemplo de conexão e execução de uma consulta SELECT simples:

import PostgresNIOimport NIOCoreimport NIOPosix

let eventLoopGroup = MultiThreadedEventLoopGroup(numberOfThreads: 1)

let config = PostgresConnection.Configuration( host: "localhost", port: 5432, username: "myuser", password: "mypassword", database: "mydb", tls: .disable)

let connection = try await PostgresConnection.connect( on: eventLoopGroup.next(), configuration: config)

let rows = try await connection.query("SELECT id, name FROM users LIMIT 5;", logger: nil)

for try await row in rows { let id: Int = try row["id"].decode(Int.self) let name: String = try row["name"].decode(String.self) print("User: \\(id) - \\(name)")}


Trabalhando com Vapor Fluent (ORM)

Fluent fornece uma API de alto nível para trabalhar com PostgreSQL. O modelo de usuário ficará assim:

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 }}

// Criando um registrolet user = User(name: "Ivan", email: "ivan@example.com")try await user.save(on: req.db)

// Consultando todos os usuárioslet users = try await User.query(on: req.db).all()


MongoDB em Swift: trabalhando com documentos

MongoDB é um banco de dados NoSQL que armazena dados no formato BSON (JSON binário). Para Swift, existe o driver oficial MongoSwift, desenvolvido pela MongoDB Inc. Ele suporta operações assíncronas e modo síncrono.



Instalação e conexão do MongoSwift

Adicione a dependência no Package.swift:

dependencies: [    .package(url: "https://github.com/mongodb/mongo-swift-driver.git", from: "1.3.0")],targets: [    .target(name: "MyApp", dependencies: [        .product(name: "MongoSwift", package: "mongo-swift-driver")    ])]


Exemplo de conexão a um MongoDB local e inserção de um documento:

import MongoSwift

let client = try MongoClient("mongodb://localhost:27017")let db = client.db("mydatabase")let collection = db.collection("u

Blogs

Book Recommendations