0Pricing
Go Academy · Leçon

Modèles et AutoMigrate

Définir et migrer le schéma

Modèles et AutoMigrate est une leçon Go Academy gratuite sur CoddyKit. Ceci est la leçon 1 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Go Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Go Academy comprend 4 leçons au total.

Qu'est-ce que GORM

GORM est l'ORM le plus populaire pour Go. Il associe les structures Go aux tables de la base de données afin que vous travailliez avec des objets plutôt qu'avec du SQL brut. Il prend en charge PostgreSQL, MySQL, SQLite et bien d'autres systèmes.

  • Association des structures aux tables
  • Migrations automatiques
  • Associations et points d'extension

Définir un modèle

Un modèle est une structure Go. Chaque champ exporté devient une colonne. L'intégration de gorm.Model ajoute les champs ID, CreatedAt, UpdatedAt et DeletedAt.

type User struct {
    gorm.Model
    Name  string
    Email string
    Age   int
}

Balises de champs

Les balises de structure personnalisent les colonnes. Vous pouvez définir la taille, l'unicité, les index et les valeurs par défaut avec la balise gorm. Une balise s'écrit entre accents graves après le type du champ, par exemple gorm:"uniqueIndex;size:255".

type User struct {
    // ID    uint    tag: gorm:"primaryKey"
    // Email string  tag: gorm:"uniqueIndex;size:255"
    // Name  string  tag: gorm:"not null"
    ID    uint
    Email string
    Name  string
}

Conventions de nommage

GORM met par défaut les noms au pluriel et utilise la casse snake_case : une structure User correspond à une table users, et le champ CreatedAt correspond à created_at. Vous pouvez remplacer ces conventions.

Ouvrir une base avec GORM

gorm.Open reçoit un adaptateur pour votre base de données et renvoie un *gorm.DB. Cette référence encapsule le pool de connexions.

db, err := gorm.Open(postgres.Open(dsn), &gorm.Config{})
if err != nil {
    log.Fatal(err)
}

AutoMigrate

AutoMigrate crée les tables, les colonnes manquantes et les index nécessaires pour correspondre à vos structures. Cette opération est additive : elle ne supprime pas de colonnes et ne modifie pas les types de manière destructive.

db.AutoMigrate(&User{}, &Product{})

Ce que AutoMigrate ne fait pas

AutoMigrate ne supprime jamais les colonnes inutilisées et ne réduit pas les types, afin d'éviter toute perte de données. Pour renommer ou supprimer des éléments, ou modifier des types, vous avez besoin d'outils de migration explicites.

Une simulation exécutable du mappage des modèles

GORM nécessite un pilote de base de données réel ; cet exemple exécutable simule le mappage des tables et des colonnes en casse snake_case effectué par AutoMigrate.

package main

import (
    "fmt"
    "strings"
)

func toSnake(s string) string {
    var b strings.Builder
    for i, r := range s {
        if i > 0 && r >= 65 && r <= 90 {
            b.WriteByte(95)
        }
        if r >= 65 && r <= 90 {
            r = r + 32
        }
        b.WriteRune(r)
    }
    return b.String()
}

func main() {
    model := "User"
    fields := []string{"ID", "Name", "CreatedAt"}
    fmt.Println("table:", toSnake(model)+"s")
    for _, f := range fields {
        fmt.Println("column:", toSnake(f))
    }
}

Le champ DeletedAt

Si votre modèle intègre gorm.Model ou possède un champ gorm.DeletedAt, GORM active les suppressions logiques. Les lignes supprimées reçoivent un horodatage et sont masquées dans les requêtes au lieu d'être supprimées.

Noms de tables personnalisés

Implémentez une méthode TableName sur le modèle pour remplacer le nom par défaut. Cela est utile lorsque votre schéma utilise des noms qui ne correspondent pas aux conventions de GORM.

func (User) TableName() string {
    return "app_users"
}

Remarque sur les paquets externes

GORM et ses adaptateurs se trouvent en dehors de la bibliothèque standard. Ils nécessitent go get gorm.io/gorm ainsi qu'un pilote tel que gorm.io/driver/postgres. Les extraits GORM présentés ici sont donnés à titre d'illustration.

Vérification rapide

Vérifiez vos connaissances sur les modèles.

Récapitulatif

Vous avez appris à utiliser les modèles et AutoMigrate :

  • Les structures correspondent aux tables ; gorm.Model ajoute ID et les horodatages
  • Les balises définissent les clés primaires, les index et les contraintes
  • Le nommage par défaut utilise le pluriel et la casse snake_case
  • AutoMigrate est additif et n'effectue jamais d'opération destructive
  • DeletedAt active les suppressions logiques

Questions Fréquemment Posées

La leçon « Modèles et AutoMigrate » est-elle gratuite ?

Oui — le texte complet de « Modèles et AutoMigrate » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Go Academy, passe à CoddyKit PRO. Le cours Go Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Modèles et AutoMigrate » ?

Définir et migrer le schéma Tu pratiques Go Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer Go Academy ?

Aucune expérience préalable n'est requise. Go Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 1 sur 4.

Combien de temps prend la leçon « Modèles et AutoMigrate » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon Go Academy ?

Oui. Chaque leçon Go Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Modèles et AutoMigrate
  2. Opérations CRUD
  3. Associations
  4. Hooks et portées
← Retour à Go Academy