Files
smart-search-back/internal/repository/interfaces.go
vallyenfail d959dcca96 add service
2026-01-17 17:39:33 +03:00

55 lines
2.2 KiB
Go

package repository
import (
"context"
"github.com/google/uuid"
"smart-search-back/internal/model"
)
type UserRepository interface {
FindByEmailHash(ctx context.Context, emailHash string) (*model.User, error)
FindByID(ctx context.Context, userID int) (*model.User, error)
Create(ctx context.Context, user *model.User) error
UpdateBalance(ctx context.Context, userID int, delta float64) error
GetBalance(ctx context.Context, userID int) (float64, error)
IncrementInvitesIssued(ctx context.Context, userID int) error
CheckInviteLimit(ctx context.Context, userID int) (bool, error)
}
type SessionRepository interface {
Create(ctx context.Context, session *model.Session) error
FindByRefreshToken(ctx context.Context, token string) (*model.Session, error)
UpdateAccessToken(ctx context.Context, refreshToken, newAccessToken string) error
Revoke(ctx context.Context, refreshToken string) error
DeleteExpired(ctx context.Context) (int, error)
}
type InviteRepository interface {
Create(ctx context.Context, invite *model.InviteCode) error
FindByCode(ctx context.Context, code int64) (*model.InviteCode, error)
IncrementUsedCount(ctx context.Context, code int64) error
DeactivateExpired(ctx context.Context) (int, error)
GetUserInvites(ctx context.Context, userID int) ([]*model.InviteCode, error)
}
type RequestRepository interface {
Create(ctx context.Context, req *model.Request) error
UpdateWithTZ(ctx context.Context, id uuid.UUID, tz string, generated bool) error
UpdateFinalTZ(ctx context.Context, id uuid.UUID, finalTZ string) error
GetByUserID(ctx context.Context, userID int) ([]*model.Request, error)
GetByID(ctx context.Context, id uuid.UUID) (*model.Request, error)
GetDetailByID(ctx context.Context, id uuid.UUID) (*model.RequestDetail, error)
GetUserStatistics(ctx context.Context, userID int) (requestsCount, suppliersCount, createdTZ int, err error)
}
type SupplierRepository interface {
BulkInsert(ctx context.Context, requestID uuid.UUID, suppliers []*model.Supplier) error
GetByRequestID(ctx context.Context, requestID uuid.UUID) ([]*model.Supplier, error)
DeleteByRequestID(ctx context.Context, requestID uuid.UUID) error
}
type TokenUsageRepository interface {
Create(ctx context.Context, usage *model.TokenUsage) error
}