package config // Clone returns a deep copy of a configuration snapshot. The copy helpers are // intentionally kept in the config package so data/integration code does not // need protobuf cloning or storage-specific serializers. func Clone(value *Config) *Config { return cloneConfig(value) } func CloneData(value *Data) *Data { if value == nil { return nil } return cloneConfig(&Config{Data: value}).Data } func CloneAdmin(value *Admin) *Admin { if value == nil { return nil } return cloneConfig(&Config{Admin: value}).Admin } func CloneDatabase(value *Database) *Database { if value == nil { return nil } return cloneConfig(&Config{Data: &Data{Database: value}}).Data.Database } func CloneStorage(value *Storage) *Storage { if value == nil { return nil } return cloneConfig(&Config{Admin: &Admin{Storage: value}}).Admin.Storage } func CloneEmail(value *Email) *Email { if value == nil { return nil } return cloneConfig(&Config{Admin: &Admin{Email: value}}).Admin.Email }