You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
29 lines
1.5 KiB
29 lines
1.5 KiB
/**
|
|
* @param { import("knex").Knex } knex
|
|
* @returns { Promise<void> }
|
|
*/
|
|
export const up = async knex => {
|
|
return knex.schema.createTable("users", function (table) {
|
|
table.increments("id").primary() // 自增主键
|
|
table.string("username", 100).notNullable().unique().comment("用户名") // 字符串字段(最大长度100)
|
|
table.string("nickname", 100).comment("昵称") // 字符串字段(最大长度100)
|
|
table.string("bio").comment("个人简介")
|
|
table.string("avatar", 500).comment("头像") // 字符串字段(最大长度100)
|
|
table.string("email", 100).unique().comment("邮箱") // 唯一邮箱
|
|
table.string("password", 100).notNullable().comment("密码") // 密码
|
|
table.string("role", 100).notNullable().defaultTo("user").comment("角色 user, admin") // 角色 user, admin
|
|
table.string("phone", 100).comment("电话号码")
|
|
table.string("status", 20).defaultTo("inactive").comment("用户状态 inactive, active") // 用户状态 inactive, active
|
|
table.integer("age").unsigned().comment("年龄") // 无符号整数
|
|
table.timestamp("created_at").defaultTo(knex.fn.now()).comment("创建时间") // 创建时间
|
|
table.timestamp("updated_at").defaultTo(knex.fn.now()).comment("更新时间") // 更新时间
|
|
})
|
|
}
|
|
|
|
/**
|
|
* @param { import("knex").Knex } knex
|
|
* @returns { Promise<void> }
|
|
*/
|
|
export const down = async knex => {
|
|
return knex.schema.dropTable("users") // 回滚时删除表
|
|
}
|
|
|