Como empezar
- Instalar Buffalo
- Generando Nuevo Proyecto
- Estructura de Directorio
- Configuración
- Integracion de Herramientas
Gestión de Peticiones
- Enrutamiento
- Controlador de Acciones
- Recursos
- Contexto
- Vinculación de Peticiones
- Middleware
- Manejo de Errores
- Sesiones
- Cookies
Frontend
- Renderizado
- Plantillas
- Diseños
- Parciales
- Helpers
- Helpers Personalizados
- Mensajes Flash
- Formularios
- Recursos
Base de datos
- Iniciando con Pop
- Soda CLI
- Configuración de base de datos
- Integración con Buffalo
- Modelos
- Generadores
- Migraciones
- Fizz
- Mutaciones
- Consultas
- Consultas SQL nativo
- Callbacks
- Scoping
- Asociaciones y Relaciones
- Asociaciones Uno a Uno
- Asociaciones Uno a Muchos
Guías
- Aplicaciones API
- Carga de archivos
- Ejecuciones en segundo plano
- Mailers
- Tareas
- Plugins
- Local Authentication
- Third Party Authentication
- Eventos
- Go Modules
- Localización
- Registros
- Motores de Plantillas
- Pruebas
- Videos
Deploy
Base de datos
Integración con Buffalo#
Generando una nueva App#
Cuando generas una nueva aplicación de Buffalo puedes escoger la base de datos de destino con el flag --db-type
. Por ejemplo, para generar una nueva app con soporte para la base de datos MySQl, puedes escribir lo siguiente:
$ buffalo new coke --db-type mysql
Por defecto, buffalo generará una aplicacion con PostgreSQL como la base de datos de respaldo.
Saltar soporte de la base de datos#
Si deseas manejar la base de datos sin usar Pop. o si estas construyento una app sin base de datos, es posible saltar la generacion de todos los componentes de base de datos con el flag --skip-pop
.
$ buffalo new coke --skip-pop
El middleware de transacción de Pop#
Buffalo proporciona un middleware para facilitar el uso de la base de datos dentro de Buffalo: buffalo-pop
Configuración#
Este middleware es configurado para ti por defecto, si escoges usar Pop cuando creas un nuevo proyecto.
// actions/app.go
import "github.com/gobuffalo/buffalo-pop/v3/pop/popmw"
func App() *buffalo.App {
// ...
app.Use(popmw.Transaction(models.DB))
// ...
app.GET("/", HomeHandler)
// ...
}
popmw.Transaction(models.DB)
usa la conexión de la base de datos configurada para crear un nuevo middleware Transaction
. Este middleware hace lo siguiente:
- Registra la duración total gastada durante la solicitud de realizar llamadas a la base de datos.
- Envuelve cada petición HTTP en una transacción de base de datos.
- Hace commit si no hay ningun error ejecutando los middlewares y la accion; y el estado de la respuesta es un 2xx o 3xx
- De lo contrario, hace
Rollback
.
Manejar la transacción a mano#
Si necesitas manejar tu transacción a mano, tu puedas saltar el middleware para una ruta dada:
// actions/app.go
import "github.com/gobuffalo/buffalo-pop/v3/pop/popmw"
func App() *buffalo.App {
// ...
txm := popmw.Transaction(models.DB)
app.Use(txm)
app.Middleware.Skip(txm, HomeHandler)
// ...
app.POST("/form", FormHandler)
app.GET("/", HomeHandler)
// ...
}