一、记录项数据模型
记录项类型:id(编号)、name(名称)
代码:
class ItemModel{
getById(id:number,isFood:boolean = true){
return isFood ? foods[id] : workouts[id - 10000]
}
//查询所有
list(isFood: boolean = true):RecordItem[]{
return isFood ? foods : workouts
}
//按组查询
listItemGroupByCategory(isFood:boolean = true){
//0.判断要处理的是食物还是运动
let categories = isFood ? FoodCategories:WorkoutCategories
let items = isFood ? foods:workouts
//1.创建空的分组
let groups = categories.map(itemCategory => new GroupInfo(itemCategory,[]))
//2.遍历记录项列表,将食物添加到对应的分组
items.forEach(item => groups[item.categoryId].items.push(item))
//3.返回结果
return groups
}
}
@Builder TabContentBuilder(items:RecordItem[]){
List({space:CommonConstants.SPACE_10}){
ForEach(items,(item:RecordItem)=>{
ListItem(){
Row({space:CommonConstants.SPACE_6}){
Image(item.image).width(50)
Column({space:CommonConstants.SPACE_4}){
Text(item.name).fontWeight(CommonConstants.FONT_WEIGHT_500)
Text(`${item.calorie}千卡/片${item.unit}`).fontSize(14).fontColor($r('app.color.light_gray'))
}
Blank()
Image($r('app.media.ic_public_add_norm_filled'))
.width(18)
.fillColor($r('app.color.primary_color'))
}
.width('100%')
.padding(CommonConstants.SPACE_6)
}
.onClick(()=>this.showPanel(item))
})
}
.width('100%')
.height('100%')
}
二、饮食记录数据模型
//关系型数据库
import relationalStore from '@ohos.data.relationalStore'
import data from '@ohos.telephony.data'
import { ColumnInfo, ColumnType } from '../common/bean/ColumnInfo'
import RecordPO from '../common/bean/RecordPO'
import DbUtil from '../common/utils/DbUtil'
//数据库建表语句
const CREATE_TABLE_SQL: string = `
CREATE TABLE IF NOT EXISTS record (
id INTEGER PRIMARY KEY AUTOINCREMENT,
type_id INTEGER NOT NULL,
item_id INTEGER NOT NULL,
amount DOUBLE NOT NULL,
create_time INTEGER NOT NULL
)
`
const COLUMNS:ColumnInfo[]=[
{name:'id',columnName:'id',type:ColumnType.LONG},
{name:'typeId',columnName:'id',type:ColumnType.LONG},
{name:'itemId',columnName:'id',type:ColumnType.LONG},
{name:'amount',columnName:'id',type:ColumnType.DOUBLE},
{name:'createTime',columnName:'id',type:ColumnType.LONG}
]
const TABLE_NAME = 'record'
const ID_COLUMN = 'id'
const DATE_COLUMN = 'create_time'
class RecordModel {
getCreateTableSql():string{
return CREATE_TABLE_SQL
}
insert(record:RecordPO):Promise<number>{
return DbUtil.insert(TABLE_NAME,record,COLUMNS)
}
deleteById(id:number){
//1.删除条件
let predicates = new relationalStore.RdbPredicates(TABLE_NAME)
predicates.equalTo('ID_COLUMN',id)
//2.删除
return DbUtil.delete(predicates)
}
listByDate(date:number) :Promise<RecordPO[]>{
//1.查询条件
let predicates = new relationalStore.RdbPredicates(TABLE_NAME)
predicates.equalTo('DATE_COLUMN',date)
//2.查询
return DbUtil.queryForList(predicates,COLUMNS)
}
}
let recordModel = new RecordModel()
export default recordModel as RecordModel