34 lines
1.6 KiB
Go
34 lines
1.6 KiB
Go
package service
|
|
|
|
import (
|
|
"context"
|
|
|
|
infraerrors "github.com/Wei-Shaw/sub2api/internal/pkg/errors"
|
|
"github.com/Wei-Shaw/sub2api/internal/pkg/pagination"
|
|
)
|
|
|
|
var (
|
|
ErrProxyNotFound = infraerrors.NotFound("PROXY_NOT_FOUND", "proxy not found")
|
|
ErrProxyInUse = infraerrors.Conflict("PROXY_IN_USE", "proxy is in use by accounts")
|
|
)
|
|
|
|
// ProxyRepository defines the shared proxy persistence contract used across
|
|
// admin management and OAuth-related services.
|
|
type ProxyRepository interface {
|
|
Create(ctx context.Context, proxy *Proxy) error
|
|
GetByID(ctx context.Context, id int64) (*Proxy, error)
|
|
ListByIDs(ctx context.Context, ids []int64) ([]Proxy, error)
|
|
Update(ctx context.Context, proxy *Proxy) error
|
|
Delete(ctx context.Context, id int64) error
|
|
|
|
List(ctx context.Context, params pagination.PaginationParams) ([]Proxy, *pagination.PaginationResult, error)
|
|
ListWithFilters(ctx context.Context, params pagination.PaginationParams, protocol, status, search string) ([]Proxy, *pagination.PaginationResult, error)
|
|
ListWithFiltersAndAccountCount(ctx context.Context, params pagination.PaginationParams, protocol, status, search string) ([]ProxyWithAccountCount, *pagination.PaginationResult, error)
|
|
ListActive(ctx context.Context) ([]Proxy, error)
|
|
ListActiveWithAccountCount(ctx context.Context) ([]ProxyWithAccountCount, error)
|
|
|
|
ExistsByHostPortAuth(ctx context.Context, host string, port int, username, password string) (bool, error)
|
|
CountAccountsByProxyID(ctx context.Context, proxyID int64) (int64, error)
|
|
ListAccountSummariesByProxyID(ctx context.Context, proxyID int64) ([]ProxyAccountSummary, error)
|
|
}
|