// Copyright 2016 The Gitea Authors. All rights reserved. // Use of this source code is governed by a MIT-style // license that can be found in the LICENSE file. package notification import ( "code.gitea.io/gitea/models" "code.gitea.io/gitea/modules/log" ) type ( notificationService struct { issueQueue chan issueNotificationOpts } issueNotificationOpts struct { issue *models.Issue notificationAuthorID int64 } ) var ( // Service is the notification service Service = ¬ificationService{ issueQueue: make(chan issueNotificationOpts, 100), } ) func init() { go Service.Run() } func (ns *notificationService) Run() { for { select { case opts := <-ns.issueQueue: if err := models.CreateOrUpdateIssueNotifications(opts.issue, opts.notificationAuthorID); err != nil { log.Error(4, "Was unable to create issue notification: %v", err) } } } } func (ns *notificationService) NotifyIssue(issue *models.Issue, notificationAuthorID int64) { ns.issueQueue <- issueNotificationOpts{ issue, notificationAuthorID, } }