Saltar al contenido principal

Configuración inicial

[Traducción Beta No Oficial]

Esta página fue traducida por PageTurner AI (beta). No está respaldada oficialmente por el proyecto. ¿Encontraste un error? Reportar problema →

Esta guía está dirigida a usuarios primerizos que necesiten instrucciones para configurar un proyecto de Ent desde cero. Antes de comenzar, asegúrate de tener instalados los siguientes requisitos previos en tu equipo.

Requisitos previos

Tras instalar estas dependencias, crea un directorio para el proyecto e inicializa un módulo de Go:

mkdir todo
cd $_
go mod init todo

Instalación

Ejecuta los siguientes comandos de Go para instalar Ent e indicarle que inicialice la estructura del proyecto junto con un esquema Todo.

go get entgo.io/ent/cmd/ent
go run -mod=mod entgo.io/ent/cmd/ent new Todo

Tras instalar Ent y ejecutar ent new, la estructura de directorios de tu proyecto debería verse así:

.
├── ent
│ ├── generate.go
│ └── schema
│ └── todo.go
├── go.mod
└── go.sum

El directorio ent contiene los recursos generados (ver siguiente sección), mientras que ent/schema aloja tus esquemas de entidades.

Generación de código

Al ejecutar ent new Todo anteriormente, se creó un esquema llamado Todo en el archivo todo.go dentro del directorio todo/ent/schema/:

package schema

import "entgo.io/ent"

// Todo holds the schema definition for the Todo entity.
type Todo struct {
ent.Schema
}

// Fields of the Todo.
func (Todo) Fields() []ent.Field {
return nil
}

// Edges of the Todo.
func (Todo) Edges() []ent.Edge {
return nil
}

Como ves, inicialmente el esquema no tiene campos ni relaciones definidos. Ejecutemos el comando para generar los recursos necesarios para interactuar con la entidad Todo:

go generate ./ent

Crear un caso de prueba

Ejecutar go generate ./ent activa la herramienta de generación automática de código de Ent, que utiliza los esquemas definidos en nuestro paquete schema para producir el código Go real que usaremos para interactuar con la base de datos. En este punto, encontrarás en ./ent/client.go un cliente capaz de consultar y modificar entidades Todo. Creemos un ejemplo comprobable para utilizarlo. Emplearemos SQLite en este caso de prueba para evaluar Ent.

go get github.com/mattn/go-sqlite3
touch example_test.go

Pega el siguiente código en example_test.go para instanciar un ent.Client que creará automáticamente todos los recursos del esquema en la base de datos (tablas, columnas, etc.).

package todo

import (
"context"
"log"
"todo/ent"

"entgo.io/ent/dialect"
_ "github.com/mattn/go-sqlite3"
)

func Example_Todo() {
// Create an ent.Client with in-memory SQLite database.
client, err := ent.Open(dialect.SQLite, "file:ent?mode=memory&cache=shared&_fk=1")
if err != nil {
log.Fatalf("failed opening connection to sqlite: %v", err)
}
defer client.Close()
ctx := context.Background()
// Run the automatic migration tool to create all schema resources.
if err := client.Schema.Create(ctx); err != nil {
log.Fatalf("failed creating schema resources: %v", err)
}
// Output:
}

Luego ejecuta go test para verificar que todo funciona correctamente.

go test

Con la configuración del proyecto completada, estamos listos para crear nuestra lista de tareas.