Files
ubicloud/migrate/20230721_remove_default_ids.rb
Hadi Moshayedi 1349ea6ac9 Use UBID for model identifiers
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
```
2023-07-20 15:24:53 -07:00

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