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 ( // AccessPoliciesColumns holds the columns for the "access_policies" table. AccessPoliciesColumns = []*schema.Column{ {Name: "id", Type: field.TypeUUID, Unique: true}, {Name: "created_at", Type: field.TypeTime}, {Name: "updated_at", Type: field.TypeTime}, {Name: "name", Type: field.TypeString}, {Name: "description", Type: field.TypeString, Nullable: true}, {Name: "statements", Type: field.TypeJSON}, {Name: "immutable", Type: field.TypeBool, Default: false}, } // AccessPoliciesTable holds the schema information for the "access_policies" table. AccessPoliciesTable = &schema.Table{ Name: "access_policies", Columns: AccessPoliciesColumns, PrimaryKey: []*schema.Column{AccessPoliciesColumns[0]}, } // AccountsColumns holds the columns for the "accounts" table. AccountsColumns = []*schema.Column{ {Name: "id", Type: field.TypeUUID, Unique: true}, {Name: "created_at", Type: field.TypeTime}, {Name: "updated_at", Type: field.TypeTime}, {Name: "name", Type: field.TypeString, Unique: true}, {Name: "description", Type: field.TypeString, Nullable: true}, {Name: "status", Type: field.TypeEnum, Enums: []string{"active", "suspended", "deleted"}, Default: "active"}, {Name: "tenant_accounts", Type: field.TypeUUID, Unique: true}, } // AccountsTable holds the schema information for the "accounts" table. AccountsTable = &schema.Table{ Name: "accounts", Columns: AccountsColumns, PrimaryKey: []*schema.Column{AccountsColumns[0]}, ForeignKeys: []*schema.ForeignKey{ { Symbol: "accounts_tenants_accounts", Columns: []*schema.Column{AccountsColumns[6]}, RefColumns: []*schema.Column{TenantsColumns[0]}, OnDelete: schema.NoAction, }, }, } // AuditLogsColumns holds the columns for the "audit_logs" table. AuditLogsColumns = []*schema.Column{ {Name: "id", Type: field.TypeUUID, Unique: true}, {Name: "created_at", Type: field.TypeTime}, {Name: "updated_at", Type: field.TypeTime}, {Name: "timestamp", Type: field.TypeTime}, {Name: "actor_id", Type: field.TypeInt}, {Name: "actor_username", Type: field.TypeString}, {Name: "action", Type: field.TypeString}, {Name: "resource_id", Type: field.TypeInt, Nullable: true}, {Name: "resource_type", Type: field.TypeEnum, Nullable: true, Enums: []string{"user", "account", "role", "permission", "resource", "tenant", "platform"}}, {Name: "ip_address", Type: field.TypeString, Nullable: true}, {Name: "user_agent", Type: field.TypeString, Nullable: true}, {Name: "details", Type: field.TypeJSON, Nullable: true}, } // AuditLogsTable holds the schema information for the "audit_logs" table. AuditLogsTable = &schema.Table{ Name: "audit_logs", Columns: AuditLogsColumns, PrimaryKey: []*schema.Column{AuditLogsColumns[0]}, } // PlatformsColumns holds the columns for the "platforms" table. PlatformsColumns = []*schema.Column{ {Name: "id", Type: field.TypeUUID, Unique: true}, {Name: "created_at", Type: field.TypeTime}, {Name: "updated_at", Type: field.TypeTime}, {Name: "name", Type: field.TypeString, Unique: true}, {Name: "description", Type: field.TypeString, Nullable: true}, {Name: "region", Type: field.TypeString, Nullable: true}, {Name: "version", Type: field.TypeString, Nullable: true}, {Name: "status", Type: field.TypeEnum, Nullable: true, Enums: []string{"active", "maintenance", "disabled"}, Default: "active"}, {Name: "config", Type: field.TypeJSON, Nullable: true}, } // PlatformsTable holds the schema information for the "platforms" table. PlatformsTable = &schema.Table{ Name: "platforms", Columns: PlatformsColumns, PrimaryKey: []*schema.Column{PlatformsColumns[0]}, } // ResourcesColumns holds the columns for the "resources" table. ResourcesColumns = []*schema.Column{ {Name: "id", Type: field.TypeUUID, Unique: true}, {Name: "created_at", Type: field.TypeTime}, {Name: "updated_at", Type: field.TypeTime}, {Name: "name", Type: field.TypeString, Unique: true}, {Name: "type", Type: field.TypeString}, {Name: "rrn", Type: field.TypeString, Unique: true}, {Name: "properties", Type: field.TypeJSON, Nullable: true}, {Name: "tags", Type: field.TypeJSON, Nullable: true}, {Name: "description", Type: field.TypeString, Nullable: true}, } // ResourcesTable holds the schema information for the "resources" table. ResourcesTable = &schema.Table{ Name: "resources", Columns: ResourcesColumns, PrimaryKey: []*schema.Column{ResourcesColumns[0]}, Indexes: []*schema.Index{ { Name: "resource_name", Unique: true, Columns: []*schema.Column{ResourcesColumns[3]}, }, }, } // RolesColumns holds the columns for the "roles" table. RolesColumns = []*schema.Column{ {Name: "id", Type: field.TypeUUID, Unique: true}, {Name: "created_at", Type: field.TypeTime}, {Name: "updated_at", Type: field.TypeTime}, {Name: "name", Type: field.TypeString, Unique: true}, {Name: "description", Type: field.TypeString, Nullable: true}, {Name: "is_disabled", Type: field.TypeBool, Default: false}, {Name: "is_default", Type: field.TypeBool, Default: false}, {Name: "account_roles", Type: field.TypeUUID, Nullable: true}, } // RolesTable holds the schema information for the "roles" table. RolesTable = &schema.Table{ Name: "roles", Columns: RolesColumns, PrimaryKey: []*schema.Column{RolesColumns[0]}, ForeignKeys: []*schema.ForeignKey{ { Symbol: "roles_accounts_roles", Columns: []*schema.Column{RolesColumns[7]}, RefColumns: []*schema.Column{AccountsColumns[0]}, OnDelete: schema.SetNull, }, }, Indexes: []*schema.Index{ { Name: "role_name", Unique: true, Columns: []*schema.Column{RolesColumns[3]}, }, }, } // TenantsColumns holds the columns for the "tenants" table. TenantsColumns = []*schema.Column{ {Name: "id", Type: field.TypeUUID, Unique: true}, {Name: "created_at", Type: field.TypeTime}, {Name: "updated_at", Type: field.TypeTime}, {Name: "name", Type: field.TypeString, Unique: true}, {Name: "description", Type: field.TypeString, Nullable: true}, {Name: "status", Type: field.TypeEnum, Enums: []string{"active", "inactive", "suspended"}, Default: "active"}, {Name: "platform_tenants", Type: field.TypeUUID}, } // TenantsTable holds the schema information for the "tenants" table. TenantsTable = &schema.Table{ Name: "tenants", Columns: TenantsColumns, PrimaryKey: []*schema.Column{TenantsColumns[0]}, ForeignKeys: []*schema.ForeignKey{ { Symbol: "tenants_platforms_tenants", Columns: []*schema.Column{TenantsColumns[6]}, RefColumns: []*schema.Column{PlatformsColumns[0]}, OnDelete: schema.NoAction, }, }, Indexes: []*schema.Index{ { Name: "tenant_name", Unique: true, Columns: []*schema.Column{TenantsColumns[3]}, }, }, } // UsersColumns holds the columns for the "users" table. UsersColumns = []*schema.Column{ {Name: "id", Type: field.TypeUUID, Unique: true}, {Name: "created_at", Type: field.TypeTime}, {Name: "updated_at", Type: field.TypeTime}, {Name: "avatar", Type: field.TypeString, Nullable: true}, {Name: "nickname", Type: field.TypeString, Unique: true, Nullable: true, Size: 30}, {Name: "bio", Type: field.TypeString, Nullable: true, Size: 200}, {Name: "username", Type: field.TypeString, Unique: true, Size: 30}, {Name: "password", Type: field.TypeString, Size: 120}, {Name: "email", Type: field.TypeString, Unique: true}, {Name: "email_verified", Type: field.TypeBool, Default: true}, {Name: "phone_number", Type: field.TypeString, Nullable: true, Default: ""}, {Name: "phone_number_verified", Type: field.TypeBool, Default: false}, {Name: "totp_secret", Type: field.TypeString, Nullable: true}, {Name: "online", Type: field.TypeBool, Default: true}, {Name: "status", Type: field.TypeBool, Default: true}, {Name: "login_attempts", Type: field.TypeInt, Default: 0}, {Name: "lockout_time", Type: field.TypeTime, Nullable: true}, {Name: "last_login_time", Type: field.TypeTime}, {Name: "social_logins", Type: field.TypeJSON, Nullable: true}, {Name: "is_default", Type: field.TypeBool, Default: false}, {Name: "account_users", Type: field.TypeUUID}, {Name: "user_role", Type: field.TypeUUID}, } // UsersTable holds the schema information for the "users" table. UsersTable = &schema.Table{ Name: "users", Columns: UsersColumns, PrimaryKey: []*schema.Column{UsersColumns[0]}, ForeignKeys: []*schema.ForeignKey{ { Symbol: "users_accounts_users", Columns: []*schema.Column{UsersColumns[20]}, RefColumns: []*schema.Column{AccountsColumns[0]}, OnDelete: schema.NoAction, }, { Symbol: "users_roles_role", Columns: []*schema.Column{UsersColumns[21]}, RefColumns: []*schema.Column{RolesColumns[0]}, OnDelete: schema.NoAction, }, }, Indexes: []*schema.Index{ { Name: "user_username", Unique: true, Columns: []*schema.Column{UsersColumns[6]}, }, { Name: "user_email", Unique: true, Columns: []*schema.Column{UsersColumns[8]}, }, }, } // AccountResourcesColumns holds the columns for the "account_resources" table. AccountResourcesColumns = []*schema.Column{ {Name: "account_id", Type: field.TypeUUID}, {Name: "resource_id", Type: field.TypeUUID}, } // AccountResourcesTable holds the schema information for the "account_resources" table. AccountResourcesTable = &schema.Table{ Name: "account_resources", Columns: AccountResourcesColumns, PrimaryKey: []*schema.Column{AccountResourcesColumns[0], AccountResourcesColumns[1]}, ForeignKeys: []*schema.ForeignKey{ { Symbol: "account_resources_account_id", Columns: []*schema.Column{AccountResourcesColumns[0]}, RefColumns: []*schema.Column{AccountsColumns[0]}, OnDelete: schema.Cascade, }, { Symbol: "account_resources_resource_id", Columns: []*schema.Column{AccountResourcesColumns[1]}, RefColumns: []*schema.Column{ResourcesColumns[0]}, OnDelete: schema.Cascade, }, }, } // AccountAccessPoliciesColumns holds the columns for the "account_access_policies" table. AccountAccessPoliciesColumns = []*schema.Column{ {Name: "account_id", Type: field.TypeUUID}, {Name: "access_policy_id", Type: field.TypeUUID}, } // AccountAccessPoliciesTable holds the schema information for the "account_access_policies" table. AccountAccessPoliciesTable = &schema.Table{ Name: "account_access_policies", Columns: AccountAccessPoliciesColumns, PrimaryKey: []*schema.Column{AccountAccessPoliciesColumns[0], AccountAccessPoliciesColumns[1]}, ForeignKeys: []*schema.ForeignKey{ { Symbol: "account_access_policies_account_id", Columns: []*schema.Column{AccountAccessPoliciesColumns[0]}, RefColumns: []*schema.Column{AccountsColumns[0]}, OnDelete: schema.Cascade, }, { Symbol: "account_access_policies_access_policy_id", Columns: []*schema.Column{AccountAccessPoliciesColumns[1]}, RefColumns: []*schema.Column{AccessPoliciesColumns[0]}, OnDelete: schema.Cascade, }, }, } // ResourceParentColumns holds the columns for the "resource_parent" table. ResourceParentColumns = []*schema.Column{ {Name: "resource_id", Type: field.TypeUUID}, {Name: "child_id", Type: field.TypeUUID}, } // ResourceParentTable holds the schema information for the "resource_parent" table. ResourceParentTable = &schema.Table{ Name: "resource_parent", Columns: ResourceParentColumns, PrimaryKey: []*schema.Column{ResourceParentColumns[0], ResourceParentColumns[1]}, ForeignKeys: []*schema.ForeignKey{ { Symbol: "resource_parent_resource_id", Columns: []*schema.Column{ResourceParentColumns[0]}, RefColumns: []*schema.Column{ResourcesColumns[0]}, OnDelete: schema.Cascade, }, { Symbol: "resource_parent_child_id", Columns: []*schema.Column{ResourceParentColumns[1]}, RefColumns: []*schema.Column{ResourcesColumns[0]}, OnDelete: schema.Cascade, }, }, } // RoleAccessPoliciesColumns holds the columns for the "role_access_policies" table. RoleAccessPoliciesColumns = []*schema.Column{ {Name: "role_id", Type: field.TypeUUID}, {Name: "access_policy_id", Type: field.TypeUUID}, } // RoleAccessPoliciesTable holds the schema information for the "role_access_policies" table. RoleAccessPoliciesTable = &schema.Table{ Name: "role_access_policies", Columns: RoleAccessPoliciesColumns, PrimaryKey: []*schema.Column{RoleAccessPoliciesColumns[0], RoleAccessPoliciesColumns[1]}, ForeignKeys: []*schema.ForeignKey{ { Symbol: "role_access_policies_role_id", Columns: []*schema.Column{RoleAccessPoliciesColumns[0]}, RefColumns: []*schema.Column{RolesColumns[0]}, OnDelete: schema.Cascade, }, { Symbol: "role_access_policies_access_policy_id", Columns: []*schema.Column{RoleAccessPoliciesColumns[1]}, RefColumns: []*schema.Column{AccessPoliciesColumns[0]}, OnDelete: schema.Cascade, }, }, } // RoleChildRolesColumns holds the columns for the "role_child_roles" table. RoleChildRolesColumns = []*schema.Column{ {Name: "role_id", Type: field.TypeUUID}, {Name: "parent_role_id", Type: field.TypeUUID}, } // RoleChildRolesTable holds the schema information for the "role_child_roles" table. RoleChildRolesTable = &schema.Table{ Name: "role_child_roles", Columns: RoleChildRolesColumns, PrimaryKey: []*schema.Column{RoleChildRolesColumns[0], RoleChildRolesColumns[1]}, ForeignKeys: []*schema.ForeignKey{ { Symbol: "role_child_roles_role_id", Columns: []*schema.Column{RoleChildRolesColumns[0]}, RefColumns: []*schema.Column{RolesColumns[0]}, OnDelete: schema.Cascade, }, { Symbol: "role_child_roles_parent_role_id", Columns: []*schema.Column{RoleChildRolesColumns[1]}, RefColumns: []*schema.Column{RolesColumns[0]}, OnDelete: schema.Cascade, }, }, } // TenantAuditLogsColumns holds the columns for the "tenant_audit_logs" table. TenantAuditLogsColumns = []*schema.Column{ {Name: "tenant_id", Type: field.TypeUUID}, {Name: "audit_log_id", Type: field.TypeUUID}, } // TenantAuditLogsTable holds the schema information for the "tenant_audit_logs" table. TenantAuditLogsTable = &schema.Table{ Name: "tenant_audit_logs", Columns: TenantAuditLogsColumns, PrimaryKey: []*schema.Column{TenantAuditLogsColumns[0], TenantAuditLogsColumns[1]}, ForeignKeys: []*schema.ForeignKey{ { Symbol: "tenant_audit_logs_tenant_id", Columns: []*schema.Column{TenantAuditLogsColumns[0]}, RefColumns: []*schema.Column{TenantsColumns[0]}, OnDelete: schema.Cascade, }, { Symbol: "tenant_audit_logs_audit_log_id", Columns: []*schema.Column{TenantAuditLogsColumns[1]}, RefColumns: []*schema.Column{AuditLogsColumns[0]}, OnDelete: schema.Cascade, }, }, } // UserAuditLogsColumns holds the columns for the "user_audit_logs" table. UserAuditLogsColumns = []*schema.Column{ {Name: "user_id", Type: field.TypeUUID}, {Name: "audit_log_id", Type: field.TypeUUID}, } // UserAuditLogsTable holds the schema information for the "user_audit_logs" table. UserAuditLogsTable = &schema.Table{ Name: "user_audit_logs", Columns: UserAuditLogsColumns, PrimaryKey: []*schema.Column{UserAuditLogsColumns[0], UserAuditLogsColumns[1]}, ForeignKeys: []*schema.ForeignKey{ { Symbol: "user_audit_logs_user_id", Columns: []*schema.Column{UserAuditLogsColumns[0]}, RefColumns: []*schema.Column{UsersColumns[0]}, OnDelete: schema.Cascade, }, { Symbol: "user_audit_logs_audit_log_id", Columns: []*schema.Column{UserAuditLogsColumns[1]}, RefColumns: []*schema.Column{AuditLogsColumns[0]}, OnDelete: schema.Cascade, }, }, } // Tables holds all the tables in the schema. Tables = []*schema.Table{ AccessPoliciesTable, AccountsTable, AuditLogsTable, PlatformsTable, ResourcesTable, RolesTable, TenantsTable, UsersTable, AccountResourcesTable, AccountAccessPoliciesTable, ResourceParentTable, RoleAccessPoliciesTable, RoleChildRolesTable, TenantAuditLogsTable, UserAuditLogsTable, } )
Functions ¶
Types ¶
type Schema ¶
type Schema struct {
// contains filtered or unexported fields
}
Schema is the API for creating, migrating and dropping a schema.
Click to show internal directories.
Click to hide internal directories.