feat: sync deployed v1.0.0-rc.38-custom.42
Sync production source including routing, billing, Astra detection and public uptime. Update custom build instructions and license packaging.
This commit is contained in:
1 parent
aa6c3f50f4
commit
ceddfd3d6b
828 files changed
+122253
-13702
No files matched your search
@@ -10,6 +10,7 @@ import (
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
"gorm.io/gorm"
|
||||
"gorm.io/gorm/clause"
|
||||
)
|
||||
|
||||
type MigrationIdentityFields struct {
|
||||
@@ -82,6 +83,32 @@ func TestMigrationSchemaStability(t *testing.T) {
|
||||
t.Cleanup(func() { _ = sqlDB.Close() })
|
||||
recorder := &migrationSQLRecorder{}
|
||||
db = db.Session(&gorm.Session{Logger: recorder})
|
||||
t.Run("request_log_correlation", func(t *testing.T) {
|
||||
const table = "request_log_correlation_test"
|
||||
t.Cleanup(func() { _ = db.Migrator().DropTable(table) })
|
||||
tableDB := db.Table(table).Session(&gorm.Session{})
|
||||
require.NoError(t, tableDB.AutoMigrate(&Log{}))
|
||||
require.NoError(t, tableDB.AutoMigrate(&Log{}))
|
||||
require.True(t, tableDB.Migrator().HasIndex(&Log{}, "idx_logs_correlation"))
|
||||
require.NoError(t, tableDB.Migrator().DropIndex(&Log{}, "idx_logs_correlation"))
|
||||
require.NoError(t, tableDB.Migrator().DropColumn(&Log{}, "correlation_key"))
|
||||
require.NoError(t, tableDB.Omit("correlation_key").Create(&Log{Id: 1, UserId: 1, Quota: 123, Other: "{}"}).Error)
|
||||
for i := 0; i < 2; i++ {
|
||||
require.NoError(t, tableDB.AutoMigrate(&Log{}))
|
||||
}
|
||||
var old Log
|
||||
require.NoError(t, tableDB.First(&old, 1).Error)
|
||||
require.Equal(t, 123, old.Quota)
|
||||
require.Empty(t, old.CorrelationKey)
|
||||
for _, row := range []Log{{Id: 2, UserId: 1, CorrelationKey: "user1-session"}, {Id: 3, UserId: 2, CorrelationKey: "user2-session"}} {
|
||||
require.NoError(t, tableDB.Create(&row).Error)
|
||||
}
|
||||
var found []Log
|
||||
require.NoError(t, tableDB.Where("correlation_key = ?", "user1-session").Find(&found).Error)
|
||||
require.Len(t, found, 1)
|
||||
require.Equal(t, 1, found[0].UserId)
|
||||
require.True(t, tableDB.Migrator().HasIndex(&Log{}, "idx_logs_request_id"))
|
||||
})
|
||||
|
||||
t.Run("identity_and_indexes", func(t *testing.T) {
|
||||
const table = "migration_identity_test"
|
||||
@@ -141,6 +168,48 @@ func TestMigrationSchemaStability(t *testing.T) {
|
||||
require.NoError(t, db.Table(table).Create(&migrationConstraintV1{Name: "existing"}).Error)
|
||||
})
|
||||
|
||||
if dialect == "postgres" {
|
||||
t.Run("renamed_unique_constraints", func(t *testing.T) {
|
||||
const table = "migration_renamed_unique"
|
||||
t.Cleanup(func() { _ = db.Migrator().DropTable(table) })
|
||||
tableDB := db.Table(table).Session(&gorm.Session{})
|
||||
require.NoError(t, tableDB.AutoMigrate(&migrationConstraintV1{}))
|
||||
original := migrationConstraintV1{Name: "existing"}
|
||||
require.NoError(t, tableDB.Create(&original).Error)
|
||||
for _, name := range []string{"models_model_name_key", `imported "model" name`} {
|
||||
require.NoError(t, db.Exec("ALTER TABLE ? ADD CONSTRAINT ? UNIQUE (name)", clause.Table{Name: table}, clause.Column{Name: name}).Error)
|
||||
}
|
||||
require.NoError(t, db.Exec("ALTER TABLE ? ADD CONSTRAINT keep_composite UNIQUE (id, name)", clause.Table{Name: table}).Error)
|
||||
require.NoError(t, db.Exec("CREATE INDEX keep_name_lookup ON ? (name)", clause.Table{Name: table}).Error)
|
||||
// A unique field must keep the old names and still reject duplicates.
|
||||
require.NoError(t, tableDB.AutoMigrate(&migrationConstraintV2{}))
|
||||
require.Error(t, tableDB.Create(&migrationConstraintV2{Name: "existing"}).Error)
|
||||
require.NoError(t, db.Exec("CREATE TABLE migration_unique_reference (name varchar(64) REFERENCES migration_renamed_unique(name))").Error)
|
||||
t.Cleanup(func() { _ = db.Migrator().DropTable("migration_unique_reference") })
|
||||
require.NoError(t, db.Exec("INSERT INTO migration_unique_reference (name) VALUES (?)", "existing").Error)
|
||||
require.Error(t, tableDB.AutoMigrate(&migrationConstraintV1{}), "dependent foreign keys must not be cascaded away")
|
||||
for _, name := range []string{"models_model_name_key", `imported "model" name`} {
|
||||
assert.True(t, tableDB.Migrator().HasConstraint(&migrationConstraintV1{}, name), "all old constraints must survive rollback")
|
||||
}
|
||||
var references int64
|
||||
require.NoError(t, db.Table("migration_unique_reference").Count(&references).Error)
|
||||
assert.EqualValues(t, 1, references)
|
||||
require.NoError(t, db.Migrator().DropTable("migration_unique_reference"))
|
||||
// Removing column uniqueness must resolve both actual constraint names.
|
||||
require.NoError(t, tableDB.AutoMigrate(&migrationConstraintV1{}))
|
||||
recorder.reset()
|
||||
require.NoError(t, tableDB.AutoMigrate(&migrationConstraintV1{}))
|
||||
assert.Empty(t, recorder.schemaMutations())
|
||||
require.NoError(t, tableDB.Create(&migrationConstraintV1{Name: "existing"}).Error)
|
||||
assert.True(t, tableDB.Migrator().HasConstraint(&migrationConstraintV1{}, "keep_composite"))
|
||||
assert.True(t, tableDB.Migrator().HasIndex(&migrationConstraintV1{}, "keep_name_lookup"))
|
||||
var rows []migrationConstraintV1
|
||||
require.NoError(t, tableDB.Order("id").Find(&rows).Error)
|
||||
require.Len(t, rows, 2)
|
||||
assert.Equal(t, original, rows[0])
|
||||
})
|
||||
}
|
||||
|
||||
if dialect == "mysql" {
|
||||
t.Run("decimal_default_and_real_changes", func(t *testing.T) {
|
||||
const table = "migration_decimal_test"
|
||||
|
||||
Reference in new issue
Block a user