Files
summercms/lagoon/attach/migrations.go
Jakub Zych ba9c99246e feat(05-04): implement attach File, Thumb, blob bucket, system_files migration
- Winter-exact thumb filename and 3x3 partition with lazy imaging resize
- gocloud.dev/blob fileblob/memblob; empty bucket_url fails boot
- lagoon.Migrate runs system_files before every plugin set
2026-09-18 19:55:15 +02:00

50 lines
1.4 KiB
Go

package attach
import (
"github.com/go-gormigrate/gormigrate/v2"
"gorm.io/gorm"
)
// Migrations creates Winter's system_files table. Folded from
// modules/system/database/migrations/2013_10_01_000002_Db_System_Files.php
// and 2025_04_10_000031_Db_Add_System_Files_Metadata.php.
var Migrations = []*gormigrate.Migration{
{
ID: "202609180001_create_system_files",
Migrate: func(tx *gorm.DB) error {
stmts := []string{
`CREATE TABLE system_files (
id SERIAL PRIMARY KEY,
disk_name TEXT NOT NULL,
file_name TEXT NOT NULL,
file_size INTEGER NOT NULL,
content_type TEXT NOT NULL,
title TEXT,
description TEXT,
field TEXT,
attachment_id TEXT,
attachment_type TEXT,
is_public BOOLEAN NOT NULL DEFAULT TRUE,
sort_order INTEGER,
metadata TEXT,
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
)`,
`CREATE INDEX system_files_field_index ON system_files (field)`,
`CREATE INDEX system_files_attachment_id_index ON system_files (attachment_id)`,
`CREATE INDEX system_files_attachment_type_index ON system_files (attachment_type)`,
`CREATE INDEX system_files_attachment_lookup_index ON system_files (attachment_type, attachment_id, field)`,
}
for _, stmt := range stmts {
if err := tx.Exec(stmt).Error; err != nil {
return err
}
}
return nil
},
Rollback: func(tx *gorm.DB) error {
return tx.Exec("DROP TABLE IF EXISTS system_files").Error
},
},
}