repo

package
v1.3.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 10, 2025 License: AGPL-3.0 Imports: 10 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var ErrInvalidEventType = fmt.Errorf("not a valid EventType, try [%s]", strings.Join(_EventTypeNames, ", "))

Functions

func EventTypeNames

func EventTypeNames() []string

EventTypeNames returns a list of possible string values of EventType.

Types

type APIKey

type APIKey interface {
	CreateApiKey(ctx context.Context, apikey *entity.ApiKey) (*objectuuid.ObjectUUID, error)
	GetApiKeyByKey(ctx context.Context, key string) (*entity.ApiKey, error)
	IncreaseApiKeyUsed(ctx context.Context, key string) error
	AddApiKeyQuota(ctx context.Context, key string, quota int) error
	DeleteApiKey(ctx context.Context, key string) error
}

type Admin

type Admin interface {
	GetAdminByTelegramID(ctx context.Context, tgid int64) (*entity.Admin, error)
	CreateAdmin(ctx context.Context, admin *entity.Admin) (*objectuuid.ObjectUUID, error)
	DeleteAdminByTelegramID(ctx context.Context, tgid int64) error
	ListAdmins(ctx context.Context) ([]entity.Admin, error)
	UpdateAdminPermissions(ctx context.Context, id objectuuid.ObjectUUID, permissions []shared.Permission) error
}

type Artist

type Artist interface {
	GetArtistByID(ctx context.Context, id objectuuid.ObjectUUID) (*entity.Artist, error)
	GetArtistByUID(ctx context.Context, uid string, sourceType shared.SourceType) (*entity.Artist, error)
	UpdateArtist(ctx context.Context, patch *entity.Artist) error
	CreateArtist(ctx context.Context, artist *entity.Artist) (*objectuuid.ObjectUUID, error)
}

type Artwork

type Artwork interface {
	GetArtworkByID(ctx context.Context, id objectuuid.ObjectUUID) (*entity.Artwork, error)
	GetArtworkByURL(ctx context.Context, url string) (*entity.Artwork, error)
	CreateArtwork(ctx context.Context, artwork *entity.Artwork) (*objectuuid.ObjectUUID, error)
	UpdateArtworkByMap(ctx context.Context, id objectuuid.ObjectUUID, patch map[string]any) error
	UpdateArtworkTags(ctx context.Context, id objectuuid.ObjectUUID, tags []*entity.Tag) error
	UpdateArtworkPictures(ctx context.Context, id objectuuid.ObjectUUID, pictures []*entity.Picture) error
	ReorderArtworkPicturesByID(ctx context.Context, id objectuuid.ObjectUUID) error
	DeleteArtworkByID(ctx context.Context, id objectuuid.ObjectUUID) error
	QueryArtworks(ctx context.Context, que query.ArtworksDB) ([]*entity.Artwork, error)
	GetArtworksByIDs(ctx context.Context, ids []objectuuid.ObjectUUID) ([]*entity.Artwork, error)
	CountArtworks(ctx context.Context, r18 shared.R18Type) (int64, error)
}

type ArtworkWithEvent

type ArtworkWithEvent struct {
	// contains filtered or unexported fields
}

func NewArtworkWithEvent

func NewArtworkWithEvent(inner Artwork, eventBus EventBus[*dto.ArtworkEventItem]) *ArtworkWithEvent

func (*ArtworkWithEvent) CountArtworks

func (a *ArtworkWithEvent) CountArtworks(ctx context.Context, r18 shared.R18Type) (int64, error)

CountArtworks implements Artwork.

func (*ArtworkWithEvent) CreateArtwork

func (a *ArtworkWithEvent) CreateArtwork(ctx context.Context, artwork *entity.Artwork) (*objectuuid.ObjectUUID, error)

CreateArtwork implements Artwork.

func (*ArtworkWithEvent) DeleteArtworkByID

func (a *ArtworkWithEvent) DeleteArtworkByID(ctx context.Context, id objectuuid.ObjectUUID) error

DeleteArtworkByID implements Artwork.

func (*ArtworkWithEvent) GetArtworkByID

func (a *ArtworkWithEvent) GetArtworkByID(ctx context.Context, id objectuuid.ObjectUUID) (*entity.Artwork, error)

GetArtworkByID implements Artwork.

func (*ArtworkWithEvent) GetArtworkByURL

func (a *ArtworkWithEvent) GetArtworkByURL(ctx context.Context, url string) (*entity.Artwork, error)

GetArtworkByURL implements Artwork.

func (*ArtworkWithEvent) GetArtworksByIDs

func (a *ArtworkWithEvent) GetArtworksByIDs(ctx context.Context, ids []objectuuid.ObjectUUID) ([]*entity.Artwork, error)

GetArtworksByIDs implements Artwork.

func (*ArtworkWithEvent) QueryArtworks

func (a *ArtworkWithEvent) QueryArtworks(ctx context.Context, que query.ArtworksDB) ([]*entity.Artwork, error)

QueryArtworks implements Artwork.

func (*ArtworkWithEvent) ReorderArtworkPicturesByID

func (a *ArtworkWithEvent) ReorderArtworkPicturesByID(ctx context.Context, id objectuuid.ObjectUUID) error

ReorderArtworkPicturesByID implements Artwork.

func (*ArtworkWithEvent) UpdateArtworkByMap

func (a *ArtworkWithEvent) UpdateArtworkByMap(ctx context.Context, id objectuuid.ObjectUUID, patch map[string]any) error

UpdateArtworkByMap implements Artwork.

func (*ArtworkWithEvent) UpdateArtworkPictures

func (a *ArtworkWithEvent) UpdateArtworkPictures(ctx context.Context, id objectuuid.ObjectUUID, pictures []*entity.Picture) error

UpdateArtworkPictures implements Artwork.

func (*ArtworkWithEvent) UpdateArtworkTags

func (a *ArtworkWithEvent) UpdateArtworkTags(ctx context.Context, id objectuuid.ObjectUUID, tags []*entity.Tag) error

UpdateArtworkTags implements Artwork.

type ArtworkWithRecorder

type ArtworkWithRecorder struct {
	// contains filtered or unexported fields
}

using in transaction, record events but not publish immediately

func (*ArtworkWithRecorder) CountArtworks

func (a *ArtworkWithRecorder) CountArtworks(ctx context.Context, r18 shared.R18Type) (int64, error)

CountArtworks implements Artwork.

func (*ArtworkWithRecorder) CreateArtwork

func (a *ArtworkWithRecorder) CreateArtwork(ctx context.Context, artwork *entity.Artwork) (*objectuuid.ObjectUUID, error)

func (*ArtworkWithRecorder) DeleteArtworkByID

func (a *ArtworkWithRecorder) DeleteArtworkByID(ctx context.Context, id objectuuid.ObjectUUID) error

func (*ArtworkWithRecorder) GetArtworkByID

func (*ArtworkWithRecorder) GetArtworkByURL

func (a *ArtworkWithRecorder) GetArtworkByURL(ctx context.Context, url string) (*entity.Artwork, error)

func (*ArtworkWithRecorder) GetArtworksByIDs

func (a *ArtworkWithRecorder) GetArtworksByIDs(ctx context.Context, ids []objectuuid.ObjectUUID) ([]*entity.Artwork, error)

func (*ArtworkWithRecorder) QueryArtworks

func (a *ArtworkWithRecorder) QueryArtworks(ctx context.Context, que query.ArtworksDB) ([]*entity.Artwork, error)

func (*ArtworkWithRecorder) ReorderArtworkPicturesByID

func (a *ArtworkWithRecorder) ReorderArtworkPicturesByID(ctx context.Context, id objectuuid.ObjectUUID) error

func (*ArtworkWithRecorder) UpdateArtworkByMap

func (a *ArtworkWithRecorder) UpdateArtworkByMap(ctx context.Context, id objectuuid.ObjectUUID, patch map[string]any) error

func (*ArtworkWithRecorder) UpdateArtworkPictures

func (a *ArtworkWithRecorder) UpdateArtworkPictures(ctx context.Context, id objectuuid.ObjectUUID, pictures []*entity.Picture) error

func (*ArtworkWithRecorder) UpdateArtworkTags

func (a *ArtworkWithRecorder) UpdateArtworkTags(ctx context.Context, id objectuuid.ObjectUUID, tags []*entity.Tag) error

type CachedArtwork

type CachedArtwork interface {
	CreateCachedArtwork(ctx context.Context, cachedArt *entity.CachedArtwork) (*entity.CachedArtwork, error)
	ResetPostingCachedArtworkStatus(ctx context.Context) error
	DeleteCachedArtworkByID(ctx context.Context, id objectuuid.ObjectUUID) error
	GetCachedArtworkByURL(ctx context.Context, url string) (*entity.CachedArtwork, error)
	SaveCachedArtwork(ctx context.Context, artwork *entity.CachedArtwork) (*entity.CachedArtwork, error)
}

type DeletedRecord

type DeletedRecord interface {
	CheckDeletedByURL(ctx context.Context, url string) bool
	CreateDeletedRecord(ctx context.Context, record *entity.DeletedRecord) error
	// 删除不存在的记录不应返回错误.
	DeleteDeletedByURL(ctx context.Context, url string) error
	GetDeletedByURL(ctx context.Context, url string) (*entity.DeletedRecord, error)
}

type EventBus

type EventBus[P any] interface {
	Publish(eventType EventType, payload P)
	Subscribe(eventType EventType, handler func(payload P), filter func(payload P) bool) (unsubscribe func())
}

type EventType

type EventType string // topic of the event

EventType

ENUM( artwork_create artwork_update artwork_delete )

const (
	// EventTypeArtworkCreate is a EventType of type artwork_create.
	EventTypeArtworkCreate EventType = "artwork_create"
	// EventTypeArtworkUpdate is a EventType of type artwork_update.
	EventTypeArtworkUpdate EventType = "artwork_update"
	// EventTypeArtworkDelete is a EventType of type artwork_delete.
	EventTypeArtworkDelete EventType = "artwork_delete"
)

func EventTypeValues

func EventTypeValues() []EventType

EventTypeValues returns a list of the values for EventType

func ParseEventType

func ParseEventType(name string) (EventType, error)

ParseEventType attempts to convert a string to a EventType.

func (EventType) IsValid

func (x EventType) IsValid() bool

IsValid provides a quick way to determine if the typed value is part of the allowed enumerated values

func (EventType) String

func (x EventType) String() string

String implements the Stringer interface.

type Picture

type Picture interface {
	GetPictureByID(ctx context.Context, id objectuuid.ObjectUUID) (*entity.Picture, error)
	DeletePictureByID(ctx context.Context, id objectuuid.ObjectUUID) error
	UpdatePictureTelegramInfoByID(ctx context.Context, id objectuuid.ObjectUUID, tgInfo *shared.TelegramInfo) (*entity.Picture, error)
	QueryPicturesByPhash(ctx context.Context, que query.PicturesPhash) ([]*entity.Picture, error)
	RandomPictures(ctx context.Context, limit int) ([]*entity.Picture, error)
	SavePicture(ctx context.Context, pic *entity.Picture) error
}

type Repositories

type Repositories interface {
	Admin() Admin
	APIKey() APIKey
	Artist() Artist
	Artwork() Artwork
	Tag() Tag
	Picture() Picture
	Ugoira() Ugoira
	DeletedRecord() DeletedRecord
	CachedArtwork() CachedArtwork
	Transactional
}

type Tag

type Tag interface {
	GetTagByName(ctx context.Context, name string) (*entity.Tag, error)
	GetTagByNameWithAlias(ctx context.Context, name string) (*entity.Tag, error)
	GetAliasTagByName(ctx context.Context, name string) (*entity.TagAlias, error)
	GetTagByID(ctx context.Context, id objectuuid.ObjectUUID) (*entity.Tag, error)
	CreateTag(ctx context.Context, tag *entity.Tag) (*entity.Tag, error)
	RandomTags(ctx context.Context, limit int) ([]*entity.Tag, error)
	// MigrateTagAlias 将 aliasTagID 迁移到 targetTagID,并返回受影响的 artwork ID 列表
	MigrateTagAlias(ctx context.Context, aliasTagID, targetTagID objectuuid.ObjectUUID) ([]objectuuid.ObjectUUID, error)
	UpdateTagAlias(ctx context.Context, id objectuuid.ObjectUUID, alias []*entity.TagAlias) error
}

type Transactional

type Transactional interface {
	Transaction(ctx context.Context, fn func(repos Repositories) error) error
}

type Ugoira

type Ugoira interface {
	UpdateUgoiraTelegramInfoByID(ctx context.Context, id objectuuid.ObjectUUID, tgInfo *shared.TelegramInfo) (*entity.UgoiraMeta, error)
}

type WithArtworkEventImpl

type WithArtworkEventImpl struct {
	Tx          Transactional
	AdminRepo   Admin
	ApiKeyRepo  APIKey
	ArtistRepo  Artist
	ArtworkRepo Artwork
	TagRepo     Tag
	PictureRepo Picture
	UgoiraRepo  Ugoira
	DeletedRepo DeletedRecord
	CachedRepo  CachedArtwork

	ArtworkBus EventBus[*dto.ArtworkEventItem]
}

func NewWithArtworkEventImpl

func NewWithArtworkEventImpl(tx Transactional,
	admin Admin,
	apiKey APIKey,
	artist Artist,
	artwork Artwork,
	tag Tag,
	picture Picture,
	ugoira Ugoira,
	deleted DeletedRecord,
	cached CachedArtwork,
	bus EventBus[*dto.ArtworkEventItem]) *WithArtworkEventImpl

func (*WithArtworkEventImpl) APIKey

func (r *WithArtworkEventImpl) APIKey() APIKey

APIKey implements Repositories.

func (*WithArtworkEventImpl) Admin

func (r *WithArtworkEventImpl) Admin() Admin

Admin implements Repositories.

func (*WithArtworkEventImpl) Artist

func (r *WithArtworkEventImpl) Artist() Artist

Artist implements Repositories.

func (*WithArtworkEventImpl) Artwork

func (r *WithArtworkEventImpl) Artwork() Artwork

Artwork implements Repositories.

func (*WithArtworkEventImpl) CachedArtwork

func (r *WithArtworkEventImpl) CachedArtwork() CachedArtwork

CachedArtwork implements Repositories.

func (*WithArtworkEventImpl) DeletedRecord

func (r *WithArtworkEventImpl) DeletedRecord() DeletedRecord

DeletedRecord implements Repositories.

func (*WithArtworkEventImpl) Picture

func (r *WithArtworkEventImpl) Picture() Picture

Picture implements Repositories.

func (*WithArtworkEventImpl) Tag

func (r *WithArtworkEventImpl) Tag() Tag

Tag implements Repositories.

func (*WithArtworkEventImpl) Transaction

func (r *WithArtworkEventImpl) Transaction(ctx context.Context, fn func(repos Repositories) error) error

func (*WithArtworkEventImpl) Ugoira

func (r *WithArtworkEventImpl) Ugoira() Ugoira

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL