- Assign default circle to user when leaving a circle

- Support Pushover
- Support Disable Signup
- Migrate chatID to TargetID
This commit is contained in:
Mo Tarbin 2024-12-14 02:15:51 -05:00
parent 850d472445
commit adf5c0c0cd
20 changed files with 362 additions and 151 deletions

View file

@ -1,6 +1,10 @@
package circle
import "time"
import (
"time"
nModel "donetick.com/core/internal/notifier/model"
)
type Circle struct {
ID int `json:"id" gorm:"primary_key"` // Unique identifier
@ -29,7 +33,8 @@ type UserCircle struct {
type UserCircleDetail struct {
UserCircle
Username string `json:"username" gorm:"column:username"`
DisplayName string `json:"displayName" gorm:"column:display_name"`
ChatID int `json:"chatID" gorm:"column:chat_id"`
Username string `json:"username" gorm:"column:username"`
DisplayName string `json:"displayName" gorm:"column:display_name"`
NotificationType nModel.NotificationType `json:"-" gorm:"column:notification_type"`
TargetID string `json:"-" gorm:"column:target_id"` // Target ID
}

View file

@ -41,8 +41,13 @@ func (r *CircleRepository) AddUserToCircle(c context.Context, circleUser *cModel
func (r *CircleRepository) GetCircleUsers(c context.Context, circleID int) ([]*cModel.UserCircleDetail, error) {
var circleUsers []*cModel.UserCircleDetail
// join user table to get user details like username and display name:
if err := r.db.WithContext(c).Raw("SELECT * FROM user_circles LEFT JOIN users on users.id = user_circles.user_id WHERE user_circles.circle_id = ?", circleID).Scan(&circleUsers).Error; err != nil {
if err := r.db.WithContext(c).
Table("user_circles uc").
Select("uc.*, u.username, u.display_name, u.chat_id, unt.user_id as user_id, unt.target_id as target_id, unt.type as notification_type").
Joins("left join users u on u.id = uc.user_id").
Joins("left join user_notification_targets unt on unt.user_id = u.id").
Where("uc.circle_id = ?", circleID).
Scan(&circleUsers).Error; err != nil {
return nil, err
}
return circleUsers, nil