Files
plates-server/src/users/models/user-daily-health.model.ts

116 lines
2.3 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import { Column, DataType, Index, Model, PrimaryKey, Table } from 'sequelize-typescript';
/**
* 用户每日健康记录表
* 每日每个用户只会生成一条数据,通过 userId + recordDate 唯一确定
*/
@Table({
tableName: 't_user_daily_health',
underscored: true,
indexes: [
{
unique: true,
fields: ['user_id', 'record_date'],
name: 'uk_user_record_date',
},
{
fields: ['user_id'],
name: 'idx_user_id',
},
{
fields: ['record_date'],
name: 'idx_record_date',
},
],
})
export class UserDailyHealth extends Model {
@PrimaryKey
@Column({
type: DataType.BIGINT,
autoIncrement: true,
})
declare id: number;
@Column({
type: DataType.STRING(64),
allowNull: false,
comment: '用户ID',
})
declare userId: string;
@Column({
type: DataType.DATEONLY,
allowNull: false,
comment: '记录日期 (YYYY-MM-DD)',
})
declare recordDate: string;
@Column({
type: DataType.INTEGER,
allowNull: true,
comment: '饮水量 (毫升 ml)',
})
declare waterIntake: number | null;
@Column({
type: DataType.INTEGER,
allowNull: true,
comment: '锻炼分钟数',
})
declare exerciseMinutes: number | null;
@Column({
type: DataType.FLOAT,
allowNull: true,
comment: '消耗卡路里 (千卡 kcal)',
})
declare caloriesBurned: number | null;
@Column({
type: DataType.INTEGER,
allowNull: true,
comment: '站立时间 (分钟)',
})
declare standingMinutes: number | null;
@Column({
type: DataType.FLOAT,
allowNull: true,
comment: '基础代谢 (千卡 kcal)',
})
declare basalMetabolism: number | null;
@Column({
type: DataType.INTEGER,
allowNull: true,
comment: '睡眠分钟数',
})
declare sleepMinutes: number | null;
@Column({
type: DataType.FLOAT,
allowNull: true,
comment: '血氧饱和度 (百分比 %)',
})
declare bloodOxygen: number | null;
@Column({
type: DataType.DECIMAL(5, 1),
allowNull: true,
comment: '压力 (ms保留一位小数)',
})
declare stressLevel: number | null;
@Column({
type: DataType.DATE,
defaultValue: DataType.NOW,
})
declare createdAt: Date;
@Column({
type: DataType.DATE,
defaultValue: DataType.NOW,
})
declare updatedAt: Date;
}