libraries

package
v0.0.49 Latest Latest
Warning

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

Go to latest
Published: Jun 25, 2026 License: MIT Imports: 12 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func RegisterRoutesWithGroup

func RegisterRoutesWithGroup(g *echo.Group, db *bun.DB, authMiddleware *auth.Middleware, opts ...RegisterRoutesOptions)

RegisterRoutesWithGroup registers library routes on a pre-configured group.

Types

type CreateLibraryPayload

type CreateLibraryPayload struct {
	Name                     string   `json:"name" validate:"required,max=100"`
	OrganizeFileStructure    *bool    `json:"organize_file_structure,omitempty"`
	CoverAspectRatio         string   `` /* 140-byte string literal not displayed */
	DownloadFormatPreference *string  `json:"download_format_preference,omitempty" validate:"omitempty,oneof=original kepub ask" tstype:"DownloadFormat"`
	LibraryPaths             []string `json:"library_paths" validate:"required,min=1,max=50,dive"`
}

type LibraryResponse added in v0.0.47

type LibraryResponse struct {
	models.Library `tstype:",extends"`
}

LibraryResponse is the single-library API response. It embeds the Library model by value so tygo emits `extends Library`; the wire format is identical to returning the bare model.

type ListLibrariesOptions

type ListLibrariesOptions struct {
	Limit      *int
	Offset     *int
	LibraryIDs []int // If set, only return libraries with these IDs
	// contains filtered or unexported fields
}

type ListLibrariesQuery

type ListLibrariesQuery struct {
	Limit  int `query:"limit" json:"limit,omitempty" default:"10" validate:"min=1,max=100"`
	Offset int `query:"offset" json:"offset,omitempty" validate:"min=0"`
}

type ListLibrariesResponse added in v0.0.47

type ListLibrariesResponse struct {
	Items []*models.Library `json:"items" tstype:"Library[]"`
	Total int               `json:"total"`
}

ListLibrariesResponse is the list-endpoint envelope.

type RegisterRoutesOptions added in v0.0.20

type RegisterRoutesOptions struct {
	// OnLibraryChanged is called after a library is created, has its paths
	// updated, or is deleted. Used by the monitor to refresh filesystem watches.
	OnLibraryChanged func()
}

RegisterRoutesOptions configures optional behaviors for library routes.

type RetrieveLibraryOptions

type RetrieveLibraryOptions struct {
	ID *int
}

type Service

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

func NewService

func NewService(db *bun.DB) *Service

func (*Service) CreateLibrary

func (svc *Service) CreateLibrary(ctx context.Context, library *models.Library) error

func (*Service) DeleteLibrary added in v0.0.37

func (svc *Service) DeleteLibrary(ctx context.Context, id int) error

DeleteLibrary hard-deletes a library and all of its DB-resident content. Files on disk are not touched. The operation runs in a single transaction:

  1. Cancel any pending/in-progress jobs scoped to this library.
  2. Purge FTS rows (books_fts, series_fts, persons_fts, genres_fts, tags_fts) for this library. FTS purge must happen before the CASCADE so rows are still resolvable.
  3. Delete the library row; SQLite cascades the rest.

Returns errcodes.NotFound if the library does not exist.

func (*Service) ListLibraries

func (svc *Service) ListLibraries(ctx context.Context, opts ListLibrariesOptions) ([]*models.Library, error)

func (*Service) ListLibrariesWithTotal

func (svc *Service) ListLibrariesWithTotal(ctx context.Context, opts ListLibrariesOptions) ([]*models.Library, int, error)

func (*Service) RetrieveLibrary

func (svc *Service) RetrieveLibrary(ctx context.Context, opts RetrieveLibraryOptions) (*models.Library, error)

func (*Service) UpdateLibrary

func (svc *Service) UpdateLibrary(ctx context.Context, library *models.Library, opts UpdateLibraryOptions) error

type UpdateLibraryOptions

type UpdateLibraryOptions struct {
	Columns            []string
	UpdateLibraryPaths bool
}

type UpdateLibraryPayload

type UpdateLibraryPayload struct {
	Name                     *string  `json:"name,omitempty" validate:"omitempty,max=100"`
	OrganizeFileStructure    *bool    `json:"organize_file_structure,omitempty"`
	CoverAspectRatio         *string  `` /* 151-byte string literal not displayed */
	DownloadFormatPreference *string  `json:"download_format_preference,omitempty" validate:"omitempty,oneof=original kepub ask" tstype:"DownloadFormat"`
	LibraryPaths             []string `json:"library_paths,omitempty" validate:"omitempty,min=1,max=50,dive"`
}

Jump to

Keyboard shortcuts

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