package models // ListItem represents an item in a todolist type ListItem struct { ID int64 `xorm:"int(11) autoincr not null unique pk" json:"id"` Text string `xorm:"varchar(250)" json:"text"` Description string `xorm:"varchar(250)" json:"description"` Done bool `json:"done"` DueDateUnix int64 `xorm:"int(11)" json:"dueDate"` ReminderUnix int64 `xorm:"int(11)" json:"reminderDate"` CreatedByID int64 `xorm:"int(11)" json:"createdByID"` // ID of the user who put that item on the list ListID int64 `xorm:"int(11)" json:"listID"` Created int64 `xorm:"created" json:"created"` Updated int64 `xorm:"updated" json:"updated"` CreatedBy User `xorm:"-" json:"createdBy"` } // TableName returns the table name for listitems func (ListItem) TableName() string { return "items" } // GetItemsByListID gets all todoitems for a list func GetItemsByListID(listID int64) (items []*ListItem, err error) { err = x.Where("list_id = ?", listID).Find(&items) if err != nil { return } // Get all users and put them into the array var userIDs []int64 for _, i := range items { found := false for _, u := range userIDs { if i.CreatedByID == u { found = true break } } if !found { userIDs = append(userIDs, i.CreatedByID) } } var users []User err = x.In("id", userIDs).Find(&users) if err != nil { return } for in, item := range items { for _, user := range users { if item.CreatedByID == user.ID { items[in].CreatedBy = user break } } // obsfucate the user password items[in].CreatedBy.Password = "" } return } // DeleteListItemByID deletes a list item by its ID func DeleteListItemByIDtemByID(itemID int64) (err error) { _, err = x.ID(itemID).Delete(ListItem{}) return }