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), ]);