| 
									
										
										
										
											2023-03-12 16:00:57 +01:00
										 |  |  | // GoToSocial | 
					
						
							|  |  |  | // Copyright (C) GoToSocial Authors admin@gotosocial.org | 
					
						
							|  |  |  | // SPDX-License-Identifier: AGPL-3.0-or-later | 
					
						
							|  |  |  | // | 
					
						
							|  |  |  | // 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/>. | 
					
						
							| 
									
										
										
										
											2022-05-20 04:34:36 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | package db | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import ( | 
					
						
							|  |  |  | 	"context" | 
					
						
							| 
									
										
										
										
											2023-07-24 13:14:13 +01:00
										 |  |  | 	"time" | 
					
						
							| 
									
										
										
										
											2022-05-20 04:34:36 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	"github.com/superseriousbusiness/gotosocial/internal/gtsmodel" | 
					
						
							| 
									
										
										
										
											2024-01-31 13:31:53 +00:00
										 |  |  | 	"github.com/superseriousbusiness/gotosocial/internal/paging" | 
					
						
							| 
									
										
										
										
											2022-05-20 04:34:36 -04:00
										 |  |  | ) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-10-12 15:01:42 +02:00
										 |  |  | // EmojiAllDomains can be used as the `domain` value in a GetEmojis | 
					
						
							|  |  |  | // query to indicate that emojis from all domains should be returned. | 
					
						
							|  |  |  | const EmojiAllDomains string = "all" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-05-20 04:34:36 -04:00
										 |  |  | // Emoji contains functions for getting emoji in the database. | 
					
						
							|  |  |  | type Emoji interface { | 
					
						
							| 
									
										
										
										
											2022-09-06 12:42:55 +02:00
										 |  |  | 	// PutEmoji puts one emoji in the database. | 
					
						
							| 
									
										
										
										
											2023-07-25 09:34:05 +01:00
										 |  |  | 	PutEmoji(ctx context.Context, emoji *gtsmodel.Emoji) error | 
					
						
							| 
									
										
										
										
											2023-11-27 16:39:44 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-10-13 15:16:24 +02:00
										 |  |  | 	// UpdateEmoji updates the given columns of one emoji. | 
					
						
							|  |  |  | 	// If no columns are specified, every column is updated. | 
					
						
							| 
									
										
										
										
											2023-06-22 20:46:36 +01:00
										 |  |  | 	UpdateEmoji(ctx context.Context, emoji *gtsmodel.Emoji, columns ...string) error | 
					
						
							| 
									
										
										
										
											2023-11-27 16:39:44 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-10-14 17:30:04 +02:00
										 |  |  | 	// DeleteEmojiByID deletes one emoji by its database ID. | 
					
						
							| 
									
										
										
										
											2023-07-25 09:34:05 +01:00
										 |  |  | 	DeleteEmojiByID(ctx context.Context, id string) error | 
					
						
							| 
									
										
										
										
											2023-11-27 16:39:44 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-12-08 17:35:14 +00:00
										 |  |  | 	// GetEmojisByIDs gets emojis for the given IDs. | 
					
						
							| 
									
										
										
										
											2023-07-25 09:34:05 +01:00
										 |  |  | 	GetEmojisByIDs(ctx context.Context, ids []string) ([]*gtsmodel.Emoji, error) | 
					
						
							| 
									
										
										
										
											2023-11-27 16:39:44 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-10-12 15:01:42 +02:00
										 |  |  | 	// GetUseableEmojis gets all emojis which are useable by accounts on this instance. | 
					
						
							| 
									
										
										
										
											2023-07-25 09:34:05 +01:00
										 |  |  | 	GetUseableEmojis(ctx context.Context) ([]*gtsmodel.Emoji, error) | 
					
						
							| 
									
										
										
										
											2023-07-24 13:14:13 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	// GetEmojis fetches all emojis with IDs less than 'maxID', up to a maximum of 'limit' emojis. | 
					
						
							| 
									
										
										
										
											2024-01-31 13:31:53 +00:00
										 |  |  | 	GetEmojis(ctx context.Context, page *paging.Page) ([]*gtsmodel.Emoji, error) | 
					
						
							| 
									
										
										
										
											2023-07-24 13:14:13 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	// GetRemoteEmojis fetches all remote emojis with IDs less than 'maxID', up to a maximum of 'limit' emojis. | 
					
						
							| 
									
										
										
										
											2024-01-31 13:31:53 +00:00
										 |  |  | 	GetRemoteEmojis(ctx context.Context, page *paging.Page) ([]*gtsmodel.Emoji, error) | 
					
						
							| 
									
										
										
										
											2023-07-24 13:14:13 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	// GetCachedEmojisOlderThan fetches all cached remote emojis with 'updated_at' greater than 'olderThan', up to a maximum of 'limit' emojis. | 
					
						
							|  |  |  | 	GetCachedEmojisOlderThan(ctx context.Context, olderThan time.Time, limit int) ([]*gtsmodel.Emoji, error) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-06-22 20:46:36 +01:00
										 |  |  | 	// GetEmojisBy gets emojis based on given parameters. Useful for admin actions. | 
					
						
							|  |  |  | 	GetEmojisBy(ctx context.Context, domain string, includeDisabled bool, includeEnabled bool, shortcode string, maxShortcodeDomain string, minShortcodeDomain string, limit int) ([]*gtsmodel.Emoji, error) | 
					
						
							| 
									
										
										
										
											2023-11-27 16:39:44 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-09-06 12:42:55 +02:00
										 |  |  | 	// GetEmojiByID gets a specific emoji by its database ID. | 
					
						
							| 
									
										
										
										
											2023-07-25 09:34:05 +01:00
										 |  |  | 	GetEmojiByID(ctx context.Context, id string) (*gtsmodel.Emoji, error) | 
					
						
							| 
									
										
										
										
											2023-11-27 16:39:44 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	// PopulateEmoji populates the struct pointers on the given emoji. | 
					
						
							|  |  |  | 	PopulateEmoji(ctx context.Context, emoji *gtsmodel.Emoji) error | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-09-06 12:42:55 +02:00
										 |  |  | 	// GetEmojiByShortcodeDomain gets an emoji based on its shortcode and domain. | 
					
						
							|  |  |  | 	// For local emoji, domain should be an empty string. | 
					
						
							| 
									
										
										
										
											2023-07-25 09:34:05 +01:00
										 |  |  | 	GetEmojiByShortcodeDomain(ctx context.Context, shortcode string, domain string) (*gtsmodel.Emoji, error) | 
					
						
							| 
									
										
										
										
											2023-11-27 16:39:44 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-09-12 13:03:23 +02:00
										 |  |  | 	// GetEmojiByURI returns one emoji based on its ActivityPub URI. | 
					
						
							| 
									
										
										
										
											2023-07-25 09:34:05 +01:00
										 |  |  | 	GetEmojiByURI(ctx context.Context, uri string) (*gtsmodel.Emoji, error) | 
					
						
							| 
									
										
										
										
											2023-11-27 16:39:44 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-10-13 15:16:24 +02:00
										 |  |  | 	// GetEmojiByStaticURL gets an emoji using the URL of the static version of the emoji image. | 
					
						
							| 
									
										
										
										
											2023-07-25 09:34:05 +01:00
										 |  |  | 	GetEmojiByStaticURL(ctx context.Context, imageStaticURL string) (*gtsmodel.Emoji, error) | 
					
						
							| 
									
										
										
										
											2023-11-27 16:39:44 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-11-14 23:47:27 +01:00
										 |  |  | 	// PutEmojiCategory puts one new emoji category in the database. | 
					
						
							| 
									
										
										
										
											2023-07-25 09:34:05 +01:00
										 |  |  | 	PutEmojiCategory(ctx context.Context, emojiCategory *gtsmodel.EmojiCategory) error | 
					
						
							| 
									
										
										
										
											2023-11-27 16:39:44 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-12-08 17:35:14 +00:00
										 |  |  | 	// GetEmojiCategoriesByIDs gets emoji categories for given IDs. | 
					
						
							| 
									
										
										
										
											2023-07-25 09:34:05 +01:00
										 |  |  | 	GetEmojiCategoriesByIDs(ctx context.Context, ids []string) ([]*gtsmodel.EmojiCategory, error) | 
					
						
							| 
									
										
										
										
											2023-11-27 16:39:44 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-11-14 23:47:27 +01:00
										 |  |  | 	// GetEmojiCategories gets a slice of the names of all existing emoji categories. | 
					
						
							| 
									
										
										
										
											2023-07-25 09:34:05 +01:00
										 |  |  | 	GetEmojiCategories(ctx context.Context) ([]*gtsmodel.EmojiCategory, error) | 
					
						
							| 
									
										
										
										
											2023-11-27 16:39:44 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-11-14 23:47:27 +01:00
										 |  |  | 	// GetEmojiCategory gets one emoji category by its id. | 
					
						
							| 
									
										
										
										
											2023-07-25 09:34:05 +01:00
										 |  |  | 	GetEmojiCategory(ctx context.Context, id string) (*gtsmodel.EmojiCategory, error) | 
					
						
							| 
									
										
										
										
											2023-11-27 16:39:44 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-11-14 23:47:27 +01:00
										 |  |  | 	// GetEmojiCategoryByName gets one emoji category by its name. | 
					
						
							| 
									
										
										
										
											2023-07-25 09:34:05 +01:00
										 |  |  | 	GetEmojiCategoryByName(ctx context.Context, name string) (*gtsmodel.EmojiCategory, error) | 
					
						
							| 
									
										
										
										
											2022-05-20 04:34:36 -04:00
										 |  |  | } |