- Assign default circle to user when leaving a circle
- Support Pushover - Support Disable Signup - Migrate chatID to TargetID
This commit is contained in:
parent
850d472445
commit
adf5c0c0cd
20 changed files with 362 additions and 151 deletions
|
@ -0,0 +1,62 @@
|
|||
package migrations
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
|
||||
nModel "donetick.com/core/internal/notifier/model"
|
||||
uModel "donetick.com/core/internal/user/model"
|
||||
"donetick.com/core/logging"
|
||||
"gorm.io/gorm"
|
||||
)
|
||||
|
||||
type MigrateChatIdToNotificationTarget20241212 struct{}
|
||||
|
||||
func (m MigrateChatIdToNotificationTarget20241212) ID() string {
|
||||
return "20241212_migrate_chat_id_to_notification_target"
|
||||
}
|
||||
|
||||
func (m MigrateChatIdToNotificationTarget20241212) Description() string {
|
||||
return `Migrate Chat ID to notification target to support multiple notification targets and platform other than telegram`
|
||||
}
|
||||
|
||||
func (m MigrateChatIdToNotificationTarget20241212) Down(ctx context.Context, db *gorm.DB) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (m MigrateChatIdToNotificationTarget20241212) Up(ctx context.Context, db *gorm.DB) error {
|
||||
log := logging.FromContext(ctx)
|
||||
|
||||
// Start a transaction
|
||||
return db.Transaction(func(tx *gorm.DB) error {
|
||||
// Get All Users
|
||||
var users []uModel.User
|
||||
if err := tx.Table("users").Find(&users).Error; err != nil {
|
||||
log.Errorf("Failed to fetch users: %v", err)
|
||||
}
|
||||
|
||||
var notificationTargets []uModel.UserNotificationTarget
|
||||
for _, user := range users {
|
||||
if user.ChatID == 0 {
|
||||
continue
|
||||
}
|
||||
notificationTargets = append(notificationTargets, uModel.UserNotificationTarget{
|
||||
UserID: user.ID,
|
||||
TargetID: fmt.Sprint(user.ChatID),
|
||||
Type: nModel.NotificationTypeTelegram,
|
||||
})
|
||||
}
|
||||
|
||||
// Insert all notification targets
|
||||
if err := tx.Table("user_notification_targets").Create(¬ificationTargets).Error; err != nil {
|
||||
log.Errorf("Failed to insert notification targets: %v", err)
|
||||
}
|
||||
|
||||
return nil
|
||||
})
|
||||
}
|
||||
|
||||
// Register this migration
|
||||
func init() {
|
||||
Register(MigrateChatIdToNotificationTarget20241212{})
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue