get.go (1946B)
1 // GoToSocial 2 // Copyright (C) GoToSocial Authors admin@gotosocial.org 3 // SPDX-License-Identifier: AGPL-3.0-or-later 4 // 5 // This program is free software: you can redistribute it and/or modify 6 // it under the terms of the GNU Affero General Public License as published by 7 // the Free Software Foundation, either version 3 of the License, or 8 // (at your option) any later version. 9 // 10 // This program is distributed in the hope that it will be useful, 11 // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 // GNU Affero General Public License for more details. 14 // 15 // You should have received a copy of the GNU Affero General Public License 16 // along with this program. If not, see <http://www.gnu.org/licenses/>. 17 18 package federatingdb 19 20 import ( 21 "context" 22 "fmt" 23 "net/url" 24 25 "codeberg.org/gruf/go-kv" 26 "github.com/superseriousbusiness/activity/streams/vocab" 27 "github.com/superseriousbusiness/gotosocial/internal/log" 28 "github.com/superseriousbusiness/gotosocial/internal/uris" 29 ) 30 31 // Get returns the database entry for the specified id. 32 // 33 // The library makes this call only after acquiring a lock first. 34 func (f *federatingDB) Get(ctx context.Context, id *url.URL) (value vocab.Type, err error) { 35 l := log.WithContext(ctx). 36 WithFields(kv.Fields{{"id", id}}...) 37 l.Debug("entering Get") 38 39 switch { 40 case uris.IsUserPath(id): 41 acct, err := f.state.DB.GetAccountByURI(ctx, id.String()) 42 if err != nil { 43 return nil, err 44 } 45 return f.typeConverter.AccountToAS(ctx, acct) 46 case uris.IsStatusesPath(id): 47 status, err := f.state.DB.GetStatusByURI(ctx, id.String()) 48 if err != nil { 49 return nil, err 50 } 51 return f.typeConverter.StatusToAS(ctx, status) 52 case uris.IsFollowersPath(id): 53 return f.Followers(ctx, id) 54 case uris.IsFollowingPath(id): 55 return f.Following(ctx, id) 56 default: 57 return nil, fmt.Errorf("federatingDB: could not Get %s", id.String()) 58 } 59 }