Sobes.tech
Junior — Middle

Оё шумо мигратсияҳоро барои пойгоҳи додаҳо дар лоиҳоти худ эҷод кардаед?

sobes.tech AI

Ҷавоб аз AI

Бале, дар лоиҳаҳои Go одатан миграцияҳо барои идоракунии тағирот дар сохтори базаи додаҳо сохта мешаванд. Миграцияҳо имкон медиҳанд, ки тағиротҳоро ба таври пайдарпай татбиқ кардан (сохтани ҷадвалҳо, илова кардани сутунҳо, индексҳо ва ғайра) ва дар сурати зарурат онҳоро баргардондан.

Барои кор бо миграцияҳо дар Go, китобхонаҳои машҳур ба монанди golang-migrate/migrate мавҷуданд. Онҳо имкон медиҳанд, ки миграцияҳоро дар шакли файлҳои SQL ё коди Go нигоҳ доштан ва онҳоро ба таври барномавӣ татбиқ кардан.

Маслиҳат барои истифодаи миграцияҳо бо китобхонаи migrate:

import (
    "database/sql"
    _ "github.com/lib/pq" // драйвери PostgreSQL
    "github.com/golang-migrate/migrate/v4"
    "github.com/golang-migrate/migrate/v4/database/postgres"
    _ "github.com/golang-migrate/migrate/v4/source/file"
)

func main() {
    db, _ := sql.Open("postgres", "postgres://корбар:парол@localhost:5432/маълумотнома?sslmode=disable")
    driver, _ := postgres.WithInstance(db, &postgres.Config{})
    m, _ := migrate.NewWithDatabaseInstance(
        "file://мигратсияҳо",
        "postgres", driver)

    err := m.Up() // татбиқи ҳамаи миграцияҳо
    if err != nil && err != migrate.ErrNoChange {
        panic(err)
    }
}

Ин тариқ, миграцияҳо кӯмак мекунанд, ки базаи додаҳо навсозӣ шавад ва равандҳои паҳнкунӣ ва навсозии барномаҳо содда гарданд.