monorepo/cloud/maplepress-backend/internal/domain/page/interface.go

44 lines
1.5 KiB
Go

// File Path: monorepo/cloud/maplepress-backend/internal/domain/page/interface.go
package page
import (
"context"
"github.com/gocql/gocql"
)
// Repository defines the interface for page data operations
type Repository interface {
// Create inserts a new page
Create(ctx context.Context, page *Page) error
// Update updates an existing page
Update(ctx context.Context, page *Page) error
// Upsert creates or updates a page
Upsert(ctx context.Context, page *Page) error
// GetByID retrieves a page by site_id and page_id
GetByID(ctx context.Context, siteID gocql.UUID, pageID string) (*Page, error)
// GetBySiteID retrieves all pages for a site
GetBySiteID(ctx context.Context, siteID gocql.UUID) ([]*Page, error)
// GetBySiteIDPaginated retrieves pages for a site with pagination
GetBySiteIDPaginated(ctx context.Context, siteID gocql.UUID, limit int, pageState []byte) ([]*Page, []byte, error)
// Delete deletes a page
Delete(ctx context.Context, siteID gocql.UUID, pageID string) error
// DeleteBySiteID deletes all pages for a site
DeleteBySiteID(ctx context.Context, siteID gocql.UUID) error
// DeleteMultiple deletes multiple pages by their IDs
DeleteMultiple(ctx context.Context, siteID gocql.UUID, pageIDs []string) error
// CountBySiteID counts pages for a site
CountBySiteID(ctx context.Context, siteID gocql.UUID) (int64, error)
// Exists checks if a page exists
Exists(ctx context.Context, siteID gocql.UUID, pageID string) (bool, error)
}