import { mysqlTable, mysqlSchema, AnyMySqlColumn, primaryKey, unique, bigint, int, tinyint, varchar, datetime, } from 'drizzle-orm/mysql-core'; import { sql } from 'drizzle-orm'; export const sysDict = mysqlTable( 'sys_dict', { id: bigint({ mode: 'number' }).autoincrement().notNull(), version: int().default(0).notNull(), pid: bigint({ mode: 'number' }).notNull(), module: tinyint(), dictKey: varchar('dict_key', { length: 255 }), value: varchar({ length: 255 }), description: varchar({ length: 255 }), sort: int().default(0).notNull(), status: int().notNull(), createdBy: bigint('created_by', { mode: 'number' }).notNull(), updatedBy: bigint('updated_by', { mode: 'number' }).notNull(), createdAt: datetime('created_at', { mode: 'string' }) .default(sql`(CURRENT_TIMESTAMP)`) .notNull(), updatedAt: datetime('updated_at', { mode: 'string' }) .default(sql`(CURRENT_TIMESTAMP)`) .notNull(), }, table => [ primaryKey({ columns: [table.id], name: 'sys_dict_id' }), unique('uniq_dict_key').on(table.dictKey, table.pid), ], ); export const sysOrganization = mysqlTable( 'sys_organization', { orgId: bigint('org_id', { mode: 'number' }).autoincrement().notNull(), pid: bigint({ mode: 'number' }).notNull(), orgName: varchar('org_name', { length: 255 }), orgCode: varchar('org_code', { length: 128 }), orgType: int('org_type').notNull(), description: varchar({ length: 255 }), sort: int().default(0).notNull(), status: int().notNull(), createdBy: bigint('created_by', { mode: 'number' }).notNull(), updatedBy: bigint('updated_by', { mode: 'number' }).notNull(), createdAt: datetime('created_at', { mode: 'string' }) .default(sql`(CURRENT_TIMESTAMP)`) .notNull(), updatedAt: datetime('updated_at', { mode: 'string' }) .default(sql`(CURRENT_TIMESTAMP)`) .notNull(), }, table => [ primaryKey({ columns: [table.orgId], name: 'sys_organization_org_id' }), unique('uniq_org_code').on(table.orgCode, table.pid), unique('uniq_org_name').on(table.orgName, table.pid), ], ); export const sysOrganizationManager = mysqlTable( 'sys_organization_manager', { id: bigint({ mode: 'number' }).autoincrement().notNull(), version: int().default(0).notNull(), orgId: bigint('org_id', { mode: 'number' }).notNull(), userId: bigint('user_id', { mode: 'number' }).notNull(), rank: int().notNull(), description: varchar({ length: 255 }), createdBy: bigint('created_by', { mode: 'number' }).notNull(), updatedBy: bigint('updated_by', { mode: 'number' }).notNull(), createdAt: datetime('created_at', { mode: 'string' }) .default(sql`(CURRENT_TIMESTAMP)`) .notNull(), updatedAt: datetime('updated_at', { mode: 'string' }) .default(sql`(CURRENT_TIMESTAMP)`) .notNull(), }, table => [ primaryKey({ columns: [table.id], name: 'sys_organization_manager_id' }), unique('uniq_org_user').on(table.orgId, table.userId), ], ); export const sysPermission = mysqlTable( 'sys_permission', { permId: bigint('perm_id', { mode: 'number' }).autoincrement().notNull(), pid: bigint({ mode: 'number' }).notNull(), permName: varchar('perm_name', { length: 255 }).notNull(), permKey: varchar('perm_key', { length: 255 }).notNull(), url: varchar({ length: 255 }), avatarUrl: varchar('avatar_url', { length: 255 }), description: varchar({ length: 255 }), permType: int('perm_type').notNull(), isVisible: int('is_visible').default(0).notNull(), version: int().default(0).notNull(), sort: int().default(0).notNull(), status: int().notNull(), createdBy: bigint('created_by', { mode: 'number' }).notNull(), updatedBy: bigint('updated_by', { mode: 'number' }).notNull(), createdAt: datetime('created_at', { mode: 'string' }) .default(sql`(CURRENT_TIMESTAMP)`) .notNull(), updatedAt: datetime('updated_at', { mode: 'string' }) .default(sql`(CURRENT_TIMESTAMP)`) .notNull(), }, table => [ primaryKey({ columns: [table.permId], name: 'sys_permission_perm_id' }), unique('uniq_pid_name').on(table.permName, table.pid), unique('uniq_perm_key').on(table.permKey), ], ); export const sysReRolePermission = mysqlTable( 'sys_re_role_permission', { id: bigint({ mode: 'number' }).autoincrement().notNull(), roleId: bigint('role_id', { mode: 'number' }).notNull(), permId: bigint('perm_id', { mode: 'number' }).notNull(), createdBy: bigint('created_by', { mode: 'number' }).notNull(), updatedBy: bigint('updated_by', { mode: 'number' }).notNull(), createdAt: datetime('created_at', { mode: 'string' }) .default(sql`(CURRENT_TIMESTAMP)`) .notNull(), updatedAt: datetime('updated_at', { mode: 'string' }) .default(sql`(CURRENT_TIMESTAMP)`) .notNull(), }, table => [ primaryKey({ columns: [table.id], name: 'sys_re_role_permission_id' }), unique('uniq_perm_role').on(table.roleId, table.permId), ], ); export const sysReUserOrganization = mysqlTable( 'sys_re_user_organization', { id: bigint({ mode: 'number' }).autoincrement().notNull(), userId: bigint('user_id', { mode: 'number' }).notNull(), orgId: bigint('org_id', { mode: 'number' }).notNull(), version: int().default(0).notNull(), createdBy: bigint('created_by', { mode: 'number' }).notNull(), updatedBy: bigint('updated_by', { mode: 'number' }).notNull(), createdAt: datetime('created_at', { mode: 'string' }) .default(sql`(CURRENT_TIMESTAMP)`) .notNull(), updatedAt: datetime('updated_at', { mode: 'string' }) .default(sql`(CURRENT_TIMESTAMP)`) .notNull(), }, table => [ primaryKey({ columns: [table.id], name: 'sys_re_user_organization_id' }), unique('uniq_user_org').on(table.userId, table.orgId), ], ); export const sysReUserRole = mysqlTable( 'sys_re_user_role', { id: bigint({ mode: 'number' }).autoincrement().notNull(), userId: bigint('user_id', { mode: 'number' }).notNull(), roleId: bigint('role_id', { mode: 'number' }).notNull(), version: int().default(0).notNull(), createdBy: bigint('created_by', { mode: 'number' }).notNull(), updatedBy: bigint('updated_by', { mode: 'number' }).notNull(), createdAt: datetime('created_at', { mode: 'string' }) .default(sql`(CURRENT_TIMESTAMP)`) .notNull(), updatedAt: datetime('updated_at', { mode: 'string' }) .default(sql`(CURRENT_TIMESTAMP)`) .notNull(), }, table => [ primaryKey({ columns: [table.id], name: 'sys_re_user_role_id' }), unique('uniq_user_role').on(table.userId, table.roleId), ], ); export const sysRole = mysqlTable( 'sys_role', { roleId: bigint('role_id', { mode: 'number' }).autoincrement().notNull(), pid: bigint({ mode: 'number' }).notNull(), roleName: varchar('role_name', { length: 255 }).notNull(), roleKey: varchar('role_key', { length: 255 }).notNull(), description: varchar({ length: 255 }), status: int().notNull(), createdBy: bigint('created_by', { mode: 'number' }).notNull(), updatedBy: bigint('updated_by', { mode: 'number' }).notNull(), createdAt: datetime('created_at', { mode: 'string' }) .default(sql`(CURRENT_TIMESTAMP)`) .notNull(), updatedAt: datetime('updated_at', { mode: 'string' }) .default(sql`(CURRENT_TIMESTAMP)`) .notNull(), }, table => [ primaryKey({ columns: [table.roleId], name: 'sys_role_role_id' }), unique('uniq_role_pid').on(table.roleName, table.pid), ], ); export const sysUser = mysqlTable( 'sys_user', { userId: bigint('user_id', { mode: 'number' }).notNull(), pid: bigint({ mode: 'number' }).notNull(), username: varchar({ length: 255 }).notNull(), email: varchar({ length: 255 }).notNull(), phone: varchar({ length: 255 }), avatarUrl: varchar('avatar_url', { length: 255 }), userType: tinyint('user_type'), status: tinyint().default(0).notNull(), createdBy: bigint('created_by', { mode: 'number' }).notNull(), updatedBy: bigint('updated_by', { mode: 'number' }).notNull(), createdAt: datetime('created_at', { mode: 'string' }) .default(sql`(CURRENT_TIMESTAMP)`) .notNull(), updatedAt: datetime('updated_at', { mode: 'string' }) .default(sql`(CURRENT_TIMESTAMP)`) .notNull(), }, table => [ primaryKey({ columns: [table.userId], name: 'sys_user_user_id' }), unique('uniq_username').on(table.username), unique('uniq_email').on(table.email), ], ); export const sysUserAuth = mysqlTable( 'sys_user_auth', { userId: bigint('user_id', { mode: 'number' }).notNull(), passwordHash: varchar('password_hash', { length: 255 }).notNull(), passwordModified: datetime('password_modified', { mode: 'string' }).notNull(), passwordExpire: datetime('password_expire', { mode: 'string' }), }, table => [primaryKey({ columns: [table.userId], name: 'sys_user_auth_user_id' })], ); export const sysUserAuthHistory = mysqlTable( 'sys_user_auth_history', { id: bigint({ mode: 'number' }).autoincrement().notNull(), userId: bigint('user_id', { mode: 'number' }).notNull(), passwordHash: varchar('password_hash', { length: 255 }).notNull(), modifiedAt: varchar('modified_at', { length: 255 }).notNull(), }, table => [primaryKey({ columns: [table.id], name: 'sys_user_auth_history_id' })], ); export const sysUserFieldDefinition = mysqlTable( 'sys_user_field_definition', { fieldId: bigint('field_id', { mode: 'number' }).autoincrement().notNull(), version: int().default(0).notNull(), fieldName: varchar('field_name', { length: 255 }).notNull(), fieldKey: varchar('field_key', { length: 255 }).notNull(), fieldType: tinyint('field_type').notNull(), dictModule: int('dict_module'), isRequired: tinyint('is_required').default(0).notNull(), limit: int(), description: varchar({ length: 255 }), defaultValue: varchar('default_value', { length: 255 }), defaultOptions: varchar('default_options', { length: 255 }), sort: int().default(0).notNull(), status: int().notNull(), createdBy: bigint('created_by', { mode: 'number' }).notNull(), updatedBy: bigint('updated_by', { mode: 'number' }).notNull(), createdAt: datetime('created_at', { mode: 'string' }) .default(sql`(CURRENT_TIMESTAMP)`) .notNull(), updatedAt: datetime('updated_at', { mode: 'string' }) .default(sql`(CURRENT_TIMESTAMP)`) .notNull(), }, table => [ primaryKey({ columns: [table.fieldId], name: 'sys_user_field_definition_field_id' }), unique('uniq_field_name').on(table.fieldName), unique('uniq_field_key').on(table.fieldKey), ], ); export const sysUserFieldValue = mysqlTable( 'sys_user_field_value', { id: bigint({ mode: 'number' }).autoincrement().notNull(), userId: bigint('user_id', { mode: 'number' }).notNull(), fieldId: int('field_id').notNull(), value: varchar({ length: 4096 }), createdBy: bigint('created_by', { mode: 'number' }).notNull(), updatedBy: bigint('updated_by', { mode: 'number' }).notNull(), createdAt: datetime('created_at', { mode: 'string' }) .default(sql`(CURRENT_TIMESTAMP)`) .notNull(), updatedAt: datetime('updated_at', { mode: 'string' }) .default(sql`(CURRENT_TIMESTAMP)`) .notNull(), }, table => [ primaryKey({ columns: [table.id], name: 'sys_user_field_value_id' }), unique('uniq_user_field').on(table.userId, table.fieldId), ], ); export const sysUserProfile = mysqlTable( 'sys_user_profile', { id: bigint({ mode: 'number' }).autoincrement().notNull(), version: int().default(0).notNull(), name: varchar({ length: 32 }).notNull(), profileKey: varchar('profile_key', { length: 255 }).notNull(), description: varchar({ length: 255 }), content: varchar({ length: 255 }), createdBy: bigint('created_by', { mode: 'number' }).notNull(), updatedBy: bigint('updated_by', { mode: 'number' }).notNull(), createdAt: datetime('created_at', { mode: 'string' }) .default(sql`(CURRENT_TIMESTAMP)`) .notNull(), updatedAt: datetime('updated_at', { mode: 'string' }) .default(sql`(CURRENT_TIMESTAMP)`) .notNull(), }, table => [ primaryKey({ columns: [table.id], name: 'sys_user_profile_id' }), unique('uniq_name').on(table.name), unique('uniq_profile_key').on(table.profileKey), ], );