gotosocial/internal/db/pg/mention.go

70 lines
1.8 KiB
Go
Raw Normal View History

2021-08-17 19:03:41 +02:00
/*
GoToSocial
Copyright (C) 2021 GoToSocial Authors admin@gotosocial.org
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package pg
import (
"context"
"github.com/go-pg/pg/v10"
"github.com/go-pg/pg/v10/orm"
"github.com/sirupsen/logrus"
"github.com/superseriousbusiness/gotosocial/internal/config"
"github.com/superseriousbusiness/gotosocial/internal/db"
"github.com/superseriousbusiness/gotosocial/internal/gtsmodel"
)
type mentionDB struct {
config *config.Config
conn *pg.DB
log *logrus.Logger
cancel context.CancelFunc
}
func (m *mentionDB) newMentionQ(i interface{}) *orm.Query {
return m.conn.Model(i).
Relation("Status").
Relation("OriginAccount").
Relation("TargetAccount")
}
func (m *mentionDB) GetMention(id string) (*gtsmodel.Mention, db.DBError) {
mention := &gtsmodel.Mention{}
q := m.newMentionQ(mention).
Where("mention.id = ?", id)
2021-08-18 14:21:19 +02:00
err := processErrorResponse(q.Select())
return mention, err
2021-08-17 19:03:41 +02:00
}
func (m *mentionDB) GetMentions(ids []string) ([]*gtsmodel.Mention, db.DBError) {
mentions := []*gtsmodel.Mention{}
2021-08-18 14:21:19 +02:00
if len(ids) == 0 {
return mentions, nil
}
q := m.newMentionQ(&mentions).
2021-08-17 19:03:41 +02:00
Where("mention.id in (?)", pg.In(ids))
2021-08-18 14:21:19 +02:00
err := processErrorResponse(q.Select())
2021-08-17 19:03:41 +02:00
2021-08-18 14:21:19 +02:00
return mentions, err
2021-08-17 19:03:41 +02:00
}