migrate

package
v0.4.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 8, 2026 License: Apache-2.0 Imports: 7 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	// WithGlobalUniqueID sets the universal ids options to the migration.
	// If this option is enabled, ent migration will allocate a 1<<32 range
	// for the ids of each entity (table).
	// Note that this option cannot be applied on tables that already exist.
	WithGlobalUniqueID = schema.WithGlobalUniqueID
	// WithDropColumn sets the drop column option to the migration.
	// If this option is enabled, ent migration will drop old columns
	// that were used for both fields and edges. This defaults to false.
	WithDropColumn = schema.WithDropColumn
	// WithDropIndex sets the drop index option to the migration.
	// If this option is enabled, ent migration will drop old indexes
	// that were defined in the schema. This defaults to false.
	// Note that unique constraints are defined using `UNIQUE INDEX`,
	// and therefore, it's recommended to enable this option to get more
	// flexibility in the schema changes.
	WithDropIndex = schema.WithDropIndex
	// WithForeignKeys enables creating foreign-key in schema DDL. This defaults to true.
	WithForeignKeys = schema.WithForeignKeys
)
View Source
var (
	// LionAuthProvidersColumns holds the columns for the "lion_auth_providers" table.
	LionAuthProvidersColumns = []*schema.Column{
		{Name: "id", Type: field.TypeInt, Increment: true},
		{Name: "created_at", Type: field.TypeTime, Default: "CURRENT_TIMESTAMP"},
		{Name: "updated_at", Type: field.TypeTime, Default: "CURRENT_TIMESTAMP"},
		{Name: "deleted_at", Type: field.TypeTime, Nullable: true},
		{Name: "created_by", Type: field.TypeInt64, Nullable: true, Default: 0},
		{Name: "updated_by", Type: field.TypeInt64, Nullable: true, Default: 0},
		{Name: "code", Type: field.TypeString, Unique: true, Size: 32},
		{Name: "provider_type", Type: field.TypeInt},
		{Name: "provider_status", Type: field.TypeInt, Default: 1},
		{Name: "display_name", Type: field.TypeString, Size: 256, Default: ""},
		{Name: "description", Type: field.TypeString, Default: ""},
		{Name: "sort_order", Type: field.TypeInt, Default: 100},
		{Name: "icon_url", Type: field.TypeString, Default: ""},
		{Name: "config", Type: field.TypeJSON, Nullable: true},
		{Name: "secret_encrypted", Type: field.TypeBytes, Nullable: true},
		{Name: "protected", Type: field.TypeBool, Default: false},
	}
	// LionAuthProvidersTable holds the schema information for the "lion_auth_providers" table.
	LionAuthProvidersTable = &schema.Table{
		Name:       "lion_auth_providers",
		Columns:    LionAuthProvidersColumns,
		PrimaryKey: []*schema.Column{LionAuthProvidersColumns[0]},
		Indexes: []*schema.Index{
			{
				Name:    "authproviders_provider_type",
				Unique:  false,
				Columns: []*schema.Column{LionAuthProvidersColumns[7]},
			},
			{
				Name:    "authproviders_provider_status",
				Unique:  false,
				Columns: []*schema.Column{LionAuthProvidersColumns[8]},
			},
			{
				Name:    "authproviders_sort_order",
				Unique:  false,
				Columns: []*schema.Column{LionAuthProvidersColumns[11]},
			},
		},
	}
	// LionCredentialsColumns holds the columns for the "lion_credentials" table.
	LionCredentialsColumns = []*schema.Column{
		{Name: "id", Type: field.TypeInt, Increment: true},
		{Name: "created_at", Type: field.TypeTime, Default: "CURRENT_TIMESTAMP"},
		{Name: "updated_at", Type: field.TypeTime, Default: "CURRENT_TIMESTAMP"},
		{Name: "created_by", Type: field.TypeInt64, Nullable: true, Default: 0},
		{Name: "updated_by", Type: field.TypeInt64, Nullable: true, Default: 0},
		{Name: "code", Type: field.TypeString},
		{Name: "credential_type", Type: field.TypeInt, Default: 0},
		{Name: "credential_algorithm", Type: field.TypeInt, Default: 0},
		{Name: "credential_usage", Type: field.TypeInt, Default: 0},
		{Name: "credential_visibility", Type: field.TypeInt, Default: 1},
		{Name: "credential_status", Type: field.TypeInt, Default: 1},
		{Name: "credential_source", Type: field.TypeInt, Default: 0},
		{Name: "key_id", Type: field.TypeString, Nullable: true},
		{Name: "api_key", Type: field.TypeString, Nullable: true},
		{Name: "api_secret_encrypted", Type: field.TypeBytes, Nullable: true},
		{Name: "public_key", Type: field.TypeString, Nullable: true},
		{Name: "private_key_encrypted", Type: field.TypeBytes, Nullable: true},
		{Name: "passphrase_encrypted", Type: field.TypeBytes, Nullable: true},
		{Name: "certificate", Type: field.TypeBytes, Nullable: true},
		{Name: "ca_chain", Type: field.TypeJSON, Nullable: true},
		{Name: "license_key_encrypted", Type: field.TypeString, Nullable: true},
		{Name: "signature", Type: field.TypeString, Nullable: true},
		{Name: "symmetric_key", Type: field.TypeBytes, Nullable: true},
		{Name: "jwks_uri", Type: field.TypeString, Nullable: true},
		{Name: "not_before", Type: field.TypeTime, Nullable: true},
		{Name: "expires_at", Type: field.TypeTime, Nullable: true},
		{Name: "metadata", Type: field.TypeJSON, Nullable: true},
		{Name: "description", Type: field.TypeString, Nullable: true},
	}
	// LionCredentialsTable holds the schema information for the "lion_credentials" table.
	LionCredentialsTable = &schema.Table{
		Name:       "lion_credentials",
		Columns:    LionCredentialsColumns,
		PrimaryKey: []*schema.Column{LionCredentialsColumns[0]},
	}
	// LionDepartmentsColumns holds the columns for the "lion_departments" table.
	LionDepartmentsColumns = []*schema.Column{
		{Name: "id", Type: field.TypeInt, Increment: true},
		{Name: "created_at", Type: field.TypeTime, Default: "CURRENT_TIMESTAMP"},
		{Name: "updated_at", Type: field.TypeTime, Default: "CURRENT_TIMESTAMP"},
		{Name: "deleted_at", Type: field.TypeTime, Nullable: true},
		{Name: "created_by", Type: field.TypeInt64, Nullable: true, Default: 0},
		{Name: "updated_by", Type: field.TypeInt64, Nullable: true, Default: 0},
		{Name: "parent_id", Type: field.TypeInt, Default: 0},
		{Name: "code", Type: field.TypeString, Size: 256},
		{Name: "display_name", Type: field.TypeString, Size: 256},
		{Name: "department_type", Type: field.TypeInt, Default: 0},
		{Name: "department_status", Type: field.TypeInt, Default: 1},
		{Name: "sort_order", Type: field.TypeInt, Default: 100},
		{Name: "email_encrypted", Type: field.TypeBytes, Nullable: true},
		{Name: "phone_number_encrypted", Type: field.TypeBytes, Nullable: true},
		{Name: "address_encrypted", Type: field.TypeBytes, Nullable: true},
		{Name: "cost_center_code", Type: field.TypeString, Nullable: true},
		{Name: "budget_item_code", Type: field.TypeString, Nullable: true},
		{Name: "max_members", Type: field.TypeInt, Default: 0},
		{Name: "external_id", Type: field.TypeString, Nullable: true},
		{Name: "visibility", Type: field.TypeInt, Default: 0},
		{Name: "metadata", Type: field.TypeJSON, Nullable: true},
		{Name: "description", Type: field.TypeString, Default: ""},
		{Name: "protected", Type: field.TypeBool, Default: false},
	}
	// LionDepartmentsTable holds the schema information for the "lion_departments" table.
	LionDepartmentsTable = &schema.Table{
		Name:       "lion_departments",
		Columns:    LionDepartmentsColumns,
		PrimaryKey: []*schema.Column{LionDepartmentsColumns[0]},
	}
	// LionSettingsColumns holds the columns for the "lion_settings" table.
	LionSettingsColumns = []*schema.Column{
		{Name: "id", Type: field.TypeInt, Increment: true},
		{Name: "created_at", Type: field.TypeTime, Default: "CURRENT_TIMESTAMP"},
		{Name: "updated_at", Type: field.TypeTime, Default: "CURRENT_TIMESTAMP"},
		{Name: "created_by", Type: field.TypeInt64, Nullable: true, Default: 0},
		{Name: "updated_by", Type: field.TypeInt64, Nullable: true, Default: 0},
		{Name: "category", Type: field.TypeString, Size: 64},
		{Name: "setting_key", Type: field.TypeString, Size: 128},
		{Name: "setting_value", Type: field.TypeString, Size: 2147483647, Default: ""},
		{Name: "value_type", Type: field.TypeString, Size: 16, Default: "string"},
		{Name: "description", Type: field.TypeString, Size: 255, Default: ""},
		{Name: "protected", Type: field.TypeBool, Default: false},
	}
	// LionSettingsTable holds the schema information for the "lion_settings" table.
	LionSettingsTable = &schema.Table{
		Name:       "lion_settings",
		Columns:    LionSettingsColumns,
		PrimaryKey: []*schema.Column{LionSettingsColumns[0]},
		Indexes: []*schema.Index{
			{
				Name:    "globalsettings_category_setting_key",
				Unique:  true,
				Columns: []*schema.Column{LionSettingsColumns[5], LionSettingsColumns[6]},
			},
			{
				Name:    "globalsettings_category",
				Unique:  false,
				Columns: []*schema.Column{LionSettingsColumns[5]},
			},
		},
	}
	// LionGroupsColumns holds the columns for the "lion_groups" table.
	LionGroupsColumns = []*schema.Column{
		{Name: "id", Type: field.TypeInt, Increment: true},
		{Name: "created_at", Type: field.TypeTime, Default: "CURRENT_TIMESTAMP"},
		{Name: "updated_at", Type: field.TypeTime, Default: "CURRENT_TIMESTAMP"},
		{Name: "deleted_at", Type: field.TypeTime, Nullable: true},
		{Name: "created_by", Type: field.TypeInt64, Nullable: true, Default: 0},
		{Name: "updated_by", Type: field.TypeInt64, Nullable: true, Default: 0},
		{Name: "code", Type: field.TypeString, Unique: true, Size: 128},
		{Name: "display_name", Type: field.TypeString, Size: 256},
		{Name: "group_type", Type: field.TypeInt, Default: 0},
		{Name: "group_status", Type: field.TypeInt, Default: 0},
		{Name: "sort_order", Type: field.TypeInt, Default: 100},
		{Name: "parent_id", Type: field.TypeInt, Default: 0},
		{Name: "max_members", Type: field.TypeInt, Default: 0},
		{Name: "metadata", Type: field.TypeJSON},
		{Name: "ref_id", Type: field.TypeInt, Default: 0},
		{Name: "ref_expr", Type: field.TypeString, Size: 4096, Default: ""},
		{Name: "visibility", Type: field.TypeInt, Default: 0},
		{Name: "description", Type: field.TypeString, Default: ""},
		{Name: "departments_lion_groups", Type: field.TypeInt, Nullable: true},
	}
	// LionGroupsTable holds the schema information for the "lion_groups" table.
	LionGroupsTable = &schema.Table{
		Name:       "lion_groups",
		Columns:    LionGroupsColumns,
		PrimaryKey: []*schema.Column{LionGroupsColumns[0]},
		ForeignKeys: []*schema.ForeignKey{
			{
				Symbol:     "lion_groups_lion_departments_lion_groups",
				Columns:    []*schema.Column{LionGroupsColumns[18]},
				RefColumns: []*schema.Column{LionDepartmentsColumns[0]},
				OnDelete:   schema.SetNull,
			},
		},
		Indexes: []*schema.Index{
			{
				Name:    "groups_code",
				Unique:  true,
				Columns: []*schema.Column{LionGroupsColumns[6]},
			},
			{
				Name:    "groups_group_type",
				Unique:  false,
				Columns: []*schema.Column{LionGroupsColumns[8]},
			},
			{
				Name:    "groups_group_status",
				Unique:  false,
				Columns: []*schema.Column{LionGroupsColumns[9]},
			},
			{
				Name:    "groups_group_type_ref_id",
				Unique:  false,
				Columns: []*schema.Column{LionGroupsColumns[8], LionGroupsColumns[14]},
			},
		},
	}
	// LionMenusColumns holds the columns for the "lion_menus" table.
	LionMenusColumns = []*schema.Column{
		{Name: "id", Type: field.TypeInt, Increment: true},
		{Name: "created_at", Type: field.TypeTime, Default: "CURRENT_TIMESTAMP"},
		{Name: "updated_at", Type: field.TypeTime, Default: "CURRENT_TIMESTAMP"},
		{Name: "created_by", Type: field.TypeInt64, Nullable: true, Default: 0},
		{Name: "updated_by", Type: field.TypeInt64, Nullable: true, Default: 0},
		{Name: "parent_id", Type: field.TypeInt64, Default: 0},
		{Name: "code", Type: field.TypeString, Size: 128},
		{Name: "display_name", Type: field.TypeString, Size: 64, Default: ""},
		{Name: "route_path", Type: field.TypeString, Size: 255, Default: ""},
		{Name: "component", Type: field.TypeString, Size: 255, Default: ""},
		{Name: "icon", Type: field.TypeString, Size: 64, Default: ""},
		{Name: "sort_order", Type: field.TypeInt, Default: 100},
		{Name: "visibility", Type: field.TypeString, Size: 16, Default: "global"},
		{Name: "menu_status", Type: field.TypeString, Size: 16, Default: "active"},
		{Name: "metadata", Type: field.TypeJSON, Nullable: true},
		{Name: "description", Type: field.TypeString, Default: ""},
		{Name: "protected", Type: field.TypeBool, Default: false},
	}
	// LionMenusTable holds the schema information for the "lion_menus" table.
	LionMenusTable = &schema.Table{
		Name:       "lion_menus",
		Columns:    LionMenusColumns,
		PrimaryKey: []*schema.Column{LionMenusColumns[0]},
		Indexes: []*schema.Index{
			{
				Name:    "menus_code",
				Unique:  true,
				Columns: []*schema.Column{LionMenusColumns[6]},
			},
			{
				Name:    "menus_parent_id",
				Unique:  false,
				Columns: []*schema.Column{LionMenusColumns[5]},
			},
		},
	}
	// LionOauth2ClientsColumns holds the columns for the "lion_oauth2_clients" table.
	LionOauth2ClientsColumns = []*schema.Column{
		{Name: "id", Type: field.TypeInt, Increment: true},
		{Name: "created_at", Type: field.TypeTime, Default: "CURRENT_TIMESTAMP"},
		{Name: "updated_at", Type: field.TypeTime, Default: "CURRENT_TIMESTAMP"},
		{Name: "deleted_at", Type: field.TypeTime, Nullable: true},
		{Name: "created_by", Type: field.TypeInt64, Nullable: true, Default: 0},
		{Name: "updated_by", Type: field.TypeInt64, Nullable: true, Default: 0},
		{Name: "client_id", Type: field.TypeString, Unique: true, Size: 64},
		{Name: "client_secret_hash", Type: field.TypeString, Size: 128},
		{Name: "display_name", Type: field.TypeString, Size: 128, Default: ""},
		{Name: "redirect_uris", Type: field.TypeJSON, Nullable: true},
		{Name: "client_status", Type: field.TypeInt, Default: 1},
		{Name: "grant_types", Type: field.TypeJSON, Nullable: true},
		{Name: "scopes", Type: field.TypeJSON, Nullable: true},
		{Name: "logo_url", Type: field.TypeString, Size: 512, Default: ""},
		{Name: "description", Type: field.TypeString, Size: 512, Default: ""},
	}
	// LionOauth2ClientsTable holds the schema information for the "lion_oauth2_clients" table.
	LionOauth2ClientsTable = &schema.Table{
		Name:       "lion_oauth2_clients",
		Columns:    LionOauth2ClientsColumns,
		PrimaryKey: []*schema.Column{LionOauth2ClientsColumns[0]},
		Indexes: []*schema.Index{
			{
				Name:    "oauth2clients_client_status",
				Unique:  false,
				Columns: []*schema.Column{LionOauth2ClientsColumns[10]},
			},
		},
	}
	// LionOauth2CodesColumns holds the columns for the "lion_oauth2_codes" table.
	LionOauth2CodesColumns = []*schema.Column{
		{Name: "id", Type: field.TypeInt, Increment: true},
		{Name: "created_at", Type: field.TypeTime, Default: "CURRENT_TIMESTAMP"},
		{Name: "updated_at", Type: field.TypeTime, Default: "CURRENT_TIMESTAMP"},
		{Name: "code_hash", Type: field.TypeString, Unique: true, Size: 64},
		{Name: "client_id", Type: field.TypeString, Size: 64},
		{Name: "redirect_uri", Type: field.TypeString, Size: 512},
		{Name: "user_id", Type: field.TypeInt, Default: 0},
		{Name: "username", Type: field.TypeString, Size: 255, Default: ""},
		{Name: "scopes", Type: field.TypeJSON, Nullable: true},
		{Name: "state", Type: field.TypeString, Size: 256, Default: ""},
		{Name: "nonce", Type: field.TypeString, Size: 256, Default: ""},
		{Name: "code_challenge", Type: field.TypeString, Size: 128, Default: ""},
		{Name: "code_challenge_method", Type: field.TypeString, Size: 16, Default: ""},
		{Name: "expires_at", Type: field.TypeTime},
		{Name: "consumed_at", Type: field.TypeTime, Nullable: true},
	}
	// LionOauth2CodesTable holds the schema information for the "lion_oauth2_codes" table.
	LionOauth2CodesTable = &schema.Table{
		Name:       "lion_oauth2_codes",
		Columns:    LionOauth2CodesColumns,
		PrimaryKey: []*schema.Column{LionOauth2CodesColumns[0]},
		Indexes: []*schema.Index{
			{
				Name:    "oauth2codes_client_id_expires_at",
				Unique:  false,
				Columns: []*schema.Column{LionOauth2CodesColumns[4], LionOauth2CodesColumns[13]},
			},
		},
	}
	// LionPoliciesColumns holds the columns for the "lion_policies" table.
	LionPoliciesColumns = []*schema.Column{
		{Name: "id", Type: field.TypeInt, Increment: true},
		{Name: "created_at", Type: field.TypeTime, Default: "CURRENT_TIMESTAMP"},
		{Name: "updated_at", Type: field.TypeTime, Default: "CURRENT_TIMESTAMP"},
		{Name: "deleted_at", Type: field.TypeTime, Nullable: true},
		{Name: "created_by", Type: field.TypeInt64, Nullable: true, Default: 0},
		{Name: "updated_by", Type: field.TypeInt64, Nullable: true, Default: 0},
		{Name: "code", Type: field.TypeString, Size: 256},
		{Name: "display_name", Type: field.TypeString},
		{Name: "policy_status", Type: field.TypeInt, Default: 0},
		{Name: "statements", Type: field.TypeJSON},
		{Name: "protected", Type: field.TypeBool, Default: false},
		{Name: "description", Type: field.TypeString, Default: ""},
	}
	// LionPoliciesTable holds the schema information for the "lion_policies" table.
	LionPoliciesTable = &schema.Table{
		Name:       "lion_policies",
		Columns:    LionPoliciesColumns,
		PrimaryKey: []*schema.Column{LionPoliciesColumns[0]},
		Indexes: []*schema.Index{
			{
				Name:    "policies_code",
				Unique:  true,
				Columns: []*schema.Column{LionPoliciesColumns[6]},
			},
		},
	}
	// LionPrincipalRolesColumns holds the columns for the "lion_principal_roles" table.
	LionPrincipalRolesColumns = []*schema.Column{
		{Name: "id", Type: field.TypeInt, Increment: true},
		{Name: "created_at", Type: field.TypeTime, Default: "CURRENT_TIMESTAMP"},
		{Name: "updated_at", Type: field.TypeTime, Default: "CURRENT_TIMESTAMP"},
		{Name: "created_by", Type: field.TypeInt64, Nullable: true, Default: 0},
		{Name: "updated_by", Type: field.TypeInt64, Nullable: true, Default: 0},
		{Name: "principal_type", Type: field.TypeInt, Default: 0},
		{Name: "principal_id", Type: field.TypeInt},
		{Name: "binding_status", Type: field.TypeInt, Default: 1},
		{Name: "expires_at", Type: field.TypeTime, Nullable: true},
		{Name: "metadata", Type: field.TypeJSON, Nullable: true},
		{Name: "description", Type: field.TypeString, Default: ""},
		{Name: "role_id", Type: field.TypeInt},
	}
	// LionPrincipalRolesTable holds the schema information for the "lion_principal_roles" table.
	LionPrincipalRolesTable = &schema.Table{
		Name:       "lion_principal_roles",
		Columns:    LionPrincipalRolesColumns,
		PrimaryKey: []*schema.Column{LionPrincipalRolesColumns[0]},
		ForeignKeys: []*schema.ForeignKey{
			{
				Symbol:     "lion_principal_roles_lion_roles_lion_principal_roles",
				Columns:    []*schema.Column{LionPrincipalRolesColumns[11]},
				RefColumns: []*schema.Column{LionRolesColumns[0]},
				OnDelete:   schema.NoAction,
			},
		},
		Indexes: []*schema.Index{
			{
				Name:    "principalroles_principal_type_principal_id_role_id",
				Unique:  true,
				Columns: []*schema.Column{LionPrincipalRolesColumns[5], LionPrincipalRolesColumns[6], LionPrincipalRolesColumns[11]},
			},
			{
				Name:    "principalroles_role_id",
				Unique:  false,
				Columns: []*schema.Column{LionPrincipalRolesColumns[11]},
			},
			{
				Name:    "principalroles_principal_type_principal_id",
				Unique:  false,
				Columns: []*schema.Column{LionPrincipalRolesColumns[5], LionPrincipalRolesColumns[6]},
			},
			{
				Name:    "principalroles_binding_status",
				Unique:  false,
				Columns: []*schema.Column{LionPrincipalRolesColumns[7]},
			},
		},
	}
	// LionRoleMenusColumns holds the columns for the "lion_role_menus" table.
	LionRoleMenusColumns = []*schema.Column{
		{Name: "id", Type: field.TypeInt, Increment: true},
		{Name: "created_at", Type: field.TypeTime, Default: "CURRENT_TIMESTAMP"},
		{Name: "updated_at", Type: field.TypeTime, Default: "CURRENT_TIMESTAMP"},
		{Name: "created_by", Type: field.TypeInt64, Nullable: true, Default: 0},
		{Name: "updated_by", Type: field.TypeInt64, Nullable: true, Default: 0},
		{Name: "permission_scope", Type: field.TypeInt, Default: 1},
		{Name: "description", Type: field.TypeString, Default: ""},
		{Name: "is_recursive", Type: field.TypeBool, Default: false},
		{Name: "menu_id", Type: field.TypeInt},
		{Name: "role_id", Type: field.TypeInt},
	}
	// LionRoleMenusTable holds the schema information for the "lion_role_menus" table.
	LionRoleMenusTable = &schema.Table{
		Name:       "lion_role_menus",
		Columns:    LionRoleMenusColumns,
		PrimaryKey: []*schema.Column{LionRoleMenusColumns[0]},
		ForeignKeys: []*schema.ForeignKey{
			{
				Symbol:     "lion_role_menus_lion_menus_lion_role_menus",
				Columns:    []*schema.Column{LionRoleMenusColumns[8]},
				RefColumns: []*schema.Column{LionMenusColumns[0]},
				OnDelete:   schema.NoAction,
			},
			{
				Symbol:     "lion_role_menus_lion_roles_lion_role_menus",
				Columns:    []*schema.Column{LionRoleMenusColumns[9]},
				RefColumns: []*schema.Column{LionRolesColumns[0]},
				OnDelete:   schema.NoAction,
			},
		},
		Indexes: []*schema.Index{
			{
				Name:    "rolemenus_role_id_menu_id",
				Unique:  true,
				Columns: []*schema.Column{LionRoleMenusColumns[9], LionRoleMenusColumns[8]},
			},
			{
				Name:    "rolemenus_menu_id",
				Unique:  false,
				Columns: []*schema.Column{LionRoleMenusColumns[8]},
			},
		},
	}
	// LionRolePoliciesColumns holds the columns for the "lion_role_policies" table.
	LionRolePoliciesColumns = []*schema.Column{
		{Name: "id", Type: field.TypeInt, Increment: true},
		{Name: "created_at", Type: field.TypeTime, Default: "CURRENT_TIMESTAMP"},
		{Name: "updated_at", Type: field.TypeTime, Default: "CURRENT_TIMESTAMP"},
		{Name: "created_by", Type: field.TypeInt64, Nullable: true, Default: 0},
		{Name: "updated_by", Type: field.TypeInt64, Nullable: true, Default: 0},
		{Name: "metadata", Type: field.TypeJSON, Nullable: true},
		{Name: "description", Type: field.TypeString, Default: ""},
		{Name: "policy_id", Type: field.TypeInt},
		{Name: "role_id", Type: field.TypeInt},
	}
	// LionRolePoliciesTable holds the schema information for the "lion_role_policies" table.
	LionRolePoliciesTable = &schema.Table{
		Name:       "lion_role_policies",
		Columns:    LionRolePoliciesColumns,
		PrimaryKey: []*schema.Column{LionRolePoliciesColumns[0]},
		ForeignKeys: []*schema.ForeignKey{
			{
				Symbol:     "lion_role_policies_lion_policies_lion_role_policies",
				Columns:    []*schema.Column{LionRolePoliciesColumns[7]},
				RefColumns: []*schema.Column{LionPoliciesColumns[0]},
				OnDelete:   schema.NoAction,
			},
			{
				Symbol:     "lion_role_policies_lion_roles_lion_role_policies",
				Columns:    []*schema.Column{LionRolePoliciesColumns[8]},
				RefColumns: []*schema.Column{LionRolesColumns[0]},
				OnDelete:   schema.NoAction,
			},
		},
		Indexes: []*schema.Index{
			{
				Name:    "rolepolicies_role_id_policy_id",
				Unique:  true,
				Columns: []*schema.Column{LionRolePoliciesColumns[8], LionRolePoliciesColumns[7]},
			},
			{
				Name:    "rolepolicies_role_id",
				Unique:  false,
				Columns: []*schema.Column{LionRolePoliciesColumns[8]},
			},
			{
				Name:    "rolepolicies_policy_id",
				Unique:  false,
				Columns: []*schema.Column{LionRolePoliciesColumns[7]},
			},
		},
	}
	// LionRolesColumns holds the columns for the "lion_roles" table.
	LionRolesColumns = []*schema.Column{
		{Name: "id", Type: field.TypeInt, Increment: true},
		{Name: "created_at", Type: field.TypeTime, Default: "CURRENT_TIMESTAMP"},
		{Name: "updated_at", Type: field.TypeTime, Default: "CURRENT_TIMESTAMP"},
		{Name: "deleted_at", Type: field.TypeTime, Nullable: true},
		{Name: "created_by", Type: field.TypeInt64, Nullable: true, Default: 0},
		{Name: "updated_by", Type: field.TypeInt64, Nullable: true, Default: 0},
		{Name: "parent_id", Type: field.TypeInt, Default: 0},
		{Name: "code", Type: field.TypeString, Size: 256},
		{Name: "display_name", Type: field.TypeString, Size: 256},
		{Name: "role_type", Type: field.TypeInt, Default: 0},
		{Name: "role_status", Type: field.TypeInt, Default: 0},
		{Name: "sort_order", Type: field.TypeInt, Default: 100},
		{Name: "description", Type: field.TypeString, Default: ""},
		{Name: "protected", Type: field.TypeBool, Default: false},
	}
	// LionRolesTable holds the schema information for the "lion_roles" table.
	LionRolesTable = &schema.Table{
		Name:       "lion_roles",
		Columns:    LionRolesColumns,
		PrimaryKey: []*schema.Column{LionRolesColumns[0]},
		Indexes: []*schema.Index{
			{
				Name:    "roles_code",
				Unique:  true,
				Columns: []*schema.Column{LionRolesColumns[7]},
			},
		},
	}
	// LionUserIdentitiesColumns holds the columns for the "lion_user_identities" table.
	LionUserIdentitiesColumns = []*schema.Column{
		{Name: "id", Type: field.TypeInt, Increment: true},
		{Name: "created_at", Type: field.TypeTime, Default: "CURRENT_TIMESTAMP"},
		{Name: "updated_at", Type: field.TypeTime, Default: "CURRENT_TIMESTAMP"},
		{Name: "created_by", Type: field.TypeInt64, Nullable: true, Default: 0},
		{Name: "updated_by", Type: field.TypeInt64, Nullable: true, Default: 0},
		{Name: "provider_user_id", Type: field.TypeString},
		{Name: "provider_union_id", Type: field.TypeString, Nullable: true},
		{Name: "password_hash", Type: field.TypeString, Default: ""},
		{Name: "mfa_enabled", Type: field.TypeBool, Default: false},
		{Name: "mfa_secret_encrypted", Type: field.TypeBytes},
		{Name: "mfa_recovery_codes_encrypted", Type: field.TypeBytes, Nullable: true},
		{Name: "access_token_encrypted", Type: field.TypeBytes, Nullable: true},
		{Name: "refresh_token_encrypted", Type: field.TypeBytes, Nullable: true},
		{Name: "password_changed_at", Type: field.TypeTime, Nullable: true},
		{Name: "password_expires_at", Type: field.TypeTime, Nullable: true},
		{Name: "token_expires_at", Type: field.TypeTime, Nullable: true},
		{Name: "last_login_at", Type: field.TypeTime, Nullable: true},
		{Name: "provider_id", Type: field.TypeInt},
		{Name: "user_id", Type: field.TypeInt},
	}
	// LionUserIdentitiesTable holds the schema information for the "lion_user_identities" table.
	LionUserIdentitiesTable = &schema.Table{
		Name:       "lion_user_identities",
		Columns:    LionUserIdentitiesColumns,
		PrimaryKey: []*schema.Column{LionUserIdentitiesColumns[0]},
		ForeignKeys: []*schema.ForeignKey{
			{
				Symbol:     "lion_user_identities_lion_auth_providers_lion_user_identities",
				Columns:    []*schema.Column{LionUserIdentitiesColumns[17]},
				RefColumns: []*schema.Column{LionAuthProvidersColumns[0]},
				OnDelete:   schema.NoAction,
			},
			{
				Symbol:     "lion_user_identities_lion_users_lion_user_identities",
				Columns:    []*schema.Column{LionUserIdentitiesColumns[18]},
				RefColumns: []*schema.Column{LionUsersColumns[0]},
				OnDelete:   schema.NoAction,
			},
		},
		Indexes: []*schema.Index{
			{
				Name:    "useridentities_user_id_provider_id",
				Unique:  true,
				Columns: []*schema.Column{LionUserIdentitiesColumns[18], LionUserIdentitiesColumns[17]},
			},
		},
	}
	// LionUserMembershipsColumns holds the columns for the "lion_user_memberships" table.
	LionUserMembershipsColumns = []*schema.Column{
		{Name: "id", Type: field.TypeInt, Increment: true},
		{Name: "created_at", Type: field.TypeTime, Default: "CURRENT_TIMESTAMP"},
		{Name: "updated_at", Type: field.TypeTime, Default: "CURRENT_TIMESTAMP"},
		{Name: "created_by", Type: field.TypeInt64, Nullable: true, Default: 0},
		{Name: "updated_by", Type: field.TypeInt64, Nullable: true, Default: 0},
		{Name: "target_type", Type: field.TypeInt, Default: 0},
		{Name: "target_id", Type: field.TypeInt},
		{Name: "member_role", Type: field.TypeInt, Default: 0},
		{Name: "member_status", Type: field.TypeInt, Default: 0},
		{Name: "member_type", Type: field.TypeInt, Default: 0},
		{Name: "joined_at", Type: field.TypeTime, Nullable: true},
		{Name: "expires_at", Type: field.TypeTime, Nullable: true},
		{Name: "metadata", Type: field.TypeJSON, Nullable: true},
		{Name: "description", Type: field.TypeString, Default: ""},
		{Name: "user_id", Type: field.TypeInt},
	}
	// LionUserMembershipsTable holds the schema information for the "lion_user_memberships" table.
	LionUserMembershipsTable = &schema.Table{
		Name:       "lion_user_memberships",
		Columns:    LionUserMembershipsColumns,
		PrimaryKey: []*schema.Column{LionUserMembershipsColumns[0]},
		ForeignKeys: []*schema.ForeignKey{
			{
				Symbol:     "lion_user_memberships_lion_users_lion_user_memberships",
				Columns:    []*schema.Column{LionUserMembershipsColumns[14]},
				RefColumns: []*schema.Column{LionUsersColumns[0]},
				OnDelete:   schema.NoAction,
			},
		},
		Indexes: []*schema.Index{
			{
				Name:    "usermemberships_user_id_target_type_target_id",
				Unique:  true,
				Columns: []*schema.Column{LionUserMembershipsColumns[14], LionUserMembershipsColumns[5], LionUserMembershipsColumns[6]},
			},
			{
				Name:    "usermemberships_target_type_target_id",
				Unique:  false,
				Columns: []*schema.Column{LionUserMembershipsColumns[5], LionUserMembershipsColumns[6]},
			},
			{
				Name:    "usermemberships_user_id",
				Unique:  true,
				Columns: []*schema.Column{LionUserMembershipsColumns[14]},
				Annotation: &entsql.IndexAnnotation{
					Where: "target_type = 2 AND member_type = 1",
				},
			},
		},
	}
	// LionUserProfilesColumns holds the columns for the "lion_user_profiles" table.
	LionUserProfilesColumns = []*schema.Column{
		{Name: "id", Type: field.TypeInt, Increment: true},
		{Name: "created_at", Type: field.TypeTime, Default: "CURRENT_TIMESTAMP"},
		{Name: "updated_at", Type: field.TypeTime, Default: "CURRENT_TIMESTAMP"},
		{Name: "deleted_at", Type: field.TypeTime, Nullable: true},
		{Name: "user_id", Type: field.TypeInt},
		{Name: "attr_key", Type: field.TypeString},
		{Name: "attr_value", Type: field.TypeString},
	}
	// LionUserProfilesTable holds the schema information for the "lion_user_profiles" table.
	LionUserProfilesTable = &schema.Table{
		Name:       "lion_user_profiles",
		Columns:    LionUserProfilesColumns,
		PrimaryKey: []*schema.Column{LionUserProfilesColumns[0]},
		Indexes: []*schema.Index{
			{
				Name:    "userprofiles_user_id_attr_key",
				Unique:  true,
				Columns: []*schema.Column{LionUserProfilesColumns[4], LionUserProfilesColumns[5]},
			},
		},
	}
	// LionUsersColumns holds the columns for the "lion_users" table.
	LionUsersColumns = []*schema.Column{
		{Name: "id", Type: field.TypeInt, Increment: true},
		{Name: "created_at", Type: field.TypeTime, Default: "CURRENT_TIMESTAMP"},
		{Name: "updated_at", Type: field.TypeTime, Default: "CURRENT_TIMESTAMP"},
		{Name: "deleted_at", Type: field.TypeTime, Nullable: true},
		{Name: "created_by", Type: field.TypeInt64, Nullable: true, Default: 0},
		{Name: "updated_by", Type: field.TypeInt64, Nullable: true, Default: 0},
		{Name: "username", Type: field.TypeString, Unique: true, Size: 255},
		{Name: "realname_encrypted", Type: field.TypeBytes, Nullable: true},
		{Name: "user_type", Type: field.TypeInt, Default: 0},
		{Name: "user_status", Type: field.TypeInt, Default: 0},
		{Name: "national_id_encrypted", Type: field.TypeBytes, Nullable: true},
		{Name: "national_id_hash", Type: field.TypeString, Nullable: true},
		{Name: "nickname", Type: field.TypeString, Nullable: true},
		{Name: "profile", Type: field.TypeString, Nullable: true, Size: 500},
		{Name: "picture", Type: field.TypeString, Nullable: true},
		{Name: "website", Type: field.TypeString, Nullable: true},
		{Name: "email_encrypted", Type: field.TypeBytes, Nullable: true},
		{Name: "email_hash", Type: field.TypeString, Nullable: true},
		{Name: "email_verified", Type: field.TypeBool, Default: false},
		{Name: "gender", Type: field.TypeInt, Default: 0},
		{Name: "birthdate", Type: field.TypeTime, Nullable: true},
		{Name: "timezone", Type: field.TypeString, Nullable: true},
		{Name: "locale", Type: field.TypeString, Nullable: true},
		{Name: "phone_number_encrypted", Type: field.TypeBytes, Nullable: true},
		{Name: "phone_number_hash", Type: field.TypeString, Nullable: true},
		{Name: "phone_number_verified", Type: field.TypeBool, Default: false},
		{Name: "address_encrypted", Type: field.TypeBytes, Nullable: true},
		{Name: "description", Type: field.TypeString, Nullable: true, Size: 4096},
		{Name: "metadata", Type: field.TypeJSON, Nullable: true},
	}
	// LionUsersTable holds the schema information for the "lion_users" table.
	LionUsersTable = &schema.Table{
		Name:       "lion_users",
		Columns:    LionUsersColumns,
		PrimaryKey: []*schema.Column{LionUsersColumns[0]},
		Indexes: []*schema.Index{
			{
				Name:    "users_email_hash",
				Unique:  true,
				Columns: []*schema.Column{LionUsersColumns[17]},
				Annotation: &entsql.IndexAnnotation{
					Where: "email_hash != '' AND email_hash IS NOT NULL",
				},
			},
			{
				Name:    "users_phone_number_hash",
				Unique:  true,
				Columns: []*schema.Column{LionUsersColumns[24]},
				Annotation: &entsql.IndexAnnotation{
					Where: "phone_number_hash != '' AND phone_number_hash IS NOT NULL",
				},
			},
			{
				Name:    "users_national_id_hash",
				Unique:  true,
				Columns: []*schema.Column{LionUsersColumns[11]},
				Annotation: &entsql.IndexAnnotation{
					Where: "national_id_hash != '' AND national_id_hash IS NOT NULL",
				},
			},
			{
				Name:    "users_deleted_at_user_status_created_at",
				Unique:  false,
				Columns: []*schema.Column{LionUsersColumns[3], LionUsersColumns[9], LionUsersColumns[1]},
			},
			{
				Name:    "users_deleted_at_user_type_user_status_created_at",
				Unique:  false,
				Columns: []*schema.Column{LionUsersColumns[3], LionUsersColumns[8], LionUsersColumns[9], LionUsersColumns[1]},
			},
			{
				Name:    "users_deleted_at_created_at",
				Unique:  false,
				Columns: []*schema.Column{LionUsersColumns[3], LionUsersColumns[1]},
			},
			{
				Name:    "users_user_type_user_status",
				Unique:  false,
				Columns: []*schema.Column{LionUsersColumns[8], LionUsersColumns[9]},
			},
			{
				Name:    "users_user_type_created_at",
				Unique:  false,
				Columns: []*schema.Column{LionUsersColumns[8], LionUsersColumns[1]},
			},
			{
				Name:    "users_user_type",
				Unique:  false,
				Columns: []*schema.Column{LionUsersColumns[8]},
			},
			{
				Name:    "users_user_status",
				Unique:  false,
				Columns: []*schema.Column{LionUsersColumns[9]},
			},
			{
				Name:    "users_email_hash_email_verified",
				Unique:  false,
				Columns: []*schema.Column{LionUsersColumns[17], LionUsersColumns[18]},
				Annotation: &entsql.IndexAnnotation{
					Where: "email_hash != '' AND email_hash IS NOT NULL",
				},
			},
			{
				Name:    "users_phone_number_hash_phone_number_verified",
				Unique:  false,
				Columns: []*schema.Column{LionUsersColumns[24], LionUsersColumns[25]},
				Annotation: &entsql.IndexAnnotation{
					Where: "phone_number_hash != '' AND phone_number_hash IS NOT NULL",
				},
			},
			{
				Name:    "users_created_at",
				Unique:  false,
				Columns: []*schema.Column{LionUsersColumns[1]},
			},
			{
				Name:    "users_created_by_created_at",
				Unique:  false,
				Columns: []*schema.Column{LionUsersColumns[4], LionUsersColumns[1]},
			},
			{
				Name:    "users_updated_by_updated_at",
				Unique:  false,
				Columns: []*schema.Column{LionUsersColumns[5], LionUsersColumns[2]},
			},
		},
	}
	// Tables holds all the tables in the schema.
	Tables = []*schema.Table{
		LionAuthProvidersTable,
		LionCredentialsTable,
		LionDepartmentsTable,
		LionSettingsTable,
		LionGroupsTable,
		LionMenusTable,
		LionOauth2ClientsTable,
		LionOauth2CodesTable,
		LionPoliciesTable,
		LionPrincipalRolesTable,
		LionRoleMenusTable,
		LionRolePoliciesTable,
		LionRolesTable,
		LionUserIdentitiesTable,
		LionUserMembershipsTable,
		LionUserProfilesTable,
		LionUsersTable,
	}
)

Functions

func Create

func Create(ctx context.Context, s *Schema, tables []*schema.Table, opts ...schema.MigrateOption) error

Create creates all table resources using the given schema driver.

Types

type Schema

type Schema struct {
	// contains filtered or unexported fields
}

Schema is the API for creating, migrating and dropping a schema.

func NewSchema

func NewSchema(drv dialect.Driver) *Schema

NewSchema creates a new schema client.

func (*Schema) Create

func (s *Schema) Create(ctx context.Context, opts ...schema.MigrateOption) error

Create creates all schema resources.

func (*Schema) WriteTo

func (s *Schema) WriteTo(ctx context.Context, w io.Writer, opts ...schema.MigrateOption) error

WriteTo writes the schema changes to w instead of running them against the database.

if err := client.Schema.WriteTo(context.Background(), os.Stdout); err != nil {
	log.Fatal(err)
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL