Changes models to use UBID for id column value. Each model which needs id generator has a type constant in `lib/ubid.rb`. For example, `TYPE_VM` or `TYPE_ACCOUNT`. Then other code sites can use `UBID.generate(type)` to generate an appropriate ubid. This ubid can be completely random or based on current timestamp depending on the type. Since postgres doesn't have ubid functions, this PR also drops defaults for id columns, so the id is assigned from a ubid generated in the ruby code. To make id assignment more convenient, a `model.create_with_id()` method is added. If a model wants to include this method, it needs to include `ResourceMethods` and define `self.ubid_type`. For example: ``` class AccessTag < Sequel::Model ... include ResourceMethods def self.ubid_type UBID::TYPE_ACCESS_TAG end end ```
74 lines
1.4 KiB
Ruby
74 lines
1.4 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
Sequel.migration do
|
|
change do
|
|
alter_table(:strand) do
|
|
set_column_default :id, nil
|
|
end
|
|
|
|
alter_table(:semaphore) do
|
|
set_column_default :id, nil
|
|
end
|
|
|
|
alter_table(:sshable) do
|
|
set_column_default :id, nil
|
|
end
|
|
|
|
alter_table(:vm) do
|
|
set_column_default :id, nil
|
|
end
|
|
|
|
alter_table(:vm_storage_volume) do
|
|
set_column_default :id, nil
|
|
end
|
|
|
|
alter_table(:storage_key_encryption_key) do
|
|
set_column_default :id, nil
|
|
end
|
|
|
|
alter_table(:project) do
|
|
set_column_default :id, nil
|
|
end
|
|
|
|
alter_table(:access_tag) do
|
|
set_column_default :id, nil
|
|
end
|
|
|
|
alter_table(:access_policy) do
|
|
set_column_default :id, nil
|
|
end
|
|
|
|
alter_table(:ipsec_tunnel) do
|
|
set_column_default :id, nil
|
|
end
|
|
|
|
alter_table(:accounts) do
|
|
set_column_default :id, nil
|
|
end
|
|
|
|
alter_table(:account_authentication_audit_logs) do
|
|
set_column_default :id, nil
|
|
end
|
|
|
|
alter_table(:account_jwt_refresh_keys) do
|
|
set_column_default :id, nil
|
|
end
|
|
|
|
alter_table(:vm_private_subnet) do
|
|
set_column_default :id, nil
|
|
end
|
|
|
|
alter_table(:address) do
|
|
set_column_default :id, nil
|
|
end
|
|
|
|
alter_table(:assigned_vm_address) do
|
|
set_column_default :id, nil
|
|
end
|
|
|
|
alter_table(:assigned_host_address) do
|
|
set_column_default :id, nil
|
|
end
|
|
end
|
|
end
|