Mostrando las entradas con la etiqueta GORM. Mostrar todas las entradas
Mostrando las entradas con la etiqueta GORM. Mostrar todas las entradas

lunes, 23 de enero de 2023

GORM, un ORM para Golang

 


Grom es un ORM simple para Golang. Tiene todas las características de un ORM moderno como : 

  • Asociaciones (uno uno, uno a muchos, muchos a muchos, polimorfismo, herencia con una tabla única)
  • Hooks o Ganchos
  • Carga ansiosa con Preload, Joins
  • Transacciones, Transacciones anidadas, Checkpoints y rollback del checkpoint
  • Inserción por lotes, FindInBatches, Buscar/Crear con mapa, CRUD con SQL Expr y Context Valuer
  • SQL Builder, Upsert, Bloqueo, Optimizador/Índice/Sugerencias de comentarios, Argumento con nombre, Subconsulta
  • Migraciones automáticas
  • API de complemento extensible y flexible: Resolución de base de datos (bases de datos múltiples, división de lectura/escritura) / Prometheus...

Para instalarlo tenemos que ejecutar estos comandos: 

go get -u gorm.io/gorm

go get -u gorm.io/driver/sqlite


Y ya con eso podemos empezar a utilizarlo. Veamos un ejemplo : 

package main

import (
  "gorm.io/gorm"
  "gorm.io/driver/sqlite"
)

type Product struct {
  gorm.Model
  Code  string
  Price uint
}

func main() {
  db, err := gorm.Open(sqlite.Open("test.db"), &gorm.Config{})
  if err != nil {
    panic("failed to connect database")
  }

  // Migrate the schema
  db.AutoMigrate(&Product{})

  // Create
  db.Create(&Product{Code: "D42", Price: 100})

  // Read
  var product Product
  db.First(&product, 1) // find product with integer primary key
  db.First(&product, "code = ?", "D42") // find product with code D42

  // Update - update product's price to 200
  db.Model(&product).Update("Price", 200)
  // Update - update multiple fields
  db.Model(&product).Updates(Product{Price: 200, Code: "F42"}) // non-zero fields
  db.Model(&product).Updates(map[string]interface{}{"Price": 200, "Code": "F42"})

  // Delete - delete product
  db.Delete(&product, 1)
}

Dejo link: https://gorm.io/