Files
smart-search-back/internal/repository/interfaces.go
vallyenfail b56b833680
All checks were successful
Deploy Smart Search Backend Test / deploy (push) Successful in 1m36s
add service
2026-01-19 16:42:51 +03:00

68 lines
3.2 KiB
Go

package repository
import (
"context"
"git.techease.ru/Smart-search/smart-search-back/internal/model"
"github.com/google/uuid"
"github.com/jackc/pgx/v5"
)
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
CreateTx(ctx context.Context, tx pgx.Tx, user *model.User) error
UpdateBalance(ctx context.Context, userID int, delta float64) error
UpdateBalanceTx(ctx context.Context, tx pgx.Tx, userID int, delta float64) error
GetBalance(ctx context.Context, userID int) (float64, error)
IncrementInvitesIssued(ctx context.Context, userID int) error
IncrementInvitesIssuedTx(ctx context.Context, tx pgx.Tx, userID int) error
CheckInviteLimit(ctx context.Context, userID int) (bool, error)
CheckInviteLimitTx(ctx context.Context, tx pgx.Tx, 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
RevokeByAccessToken(ctx context.Context, accessToken string) error
IsAccessTokenValid(ctx context.Context, accessToken string) (bool, error)
DeleteExpired(ctx context.Context) (int, error)
}
type InviteRepository interface {
Create(ctx context.Context, invite *model.InviteCode) error
CreateTx(ctx context.Context, tx pgx.Tx, invite *model.InviteCode) error
FindByCode(ctx context.Context, code int64) (*model.InviteCode, error)
FindActiveByCode(ctx context.Context, code int64) (*model.InviteCode, error)
DecrementCanBeUsedCountTx(ctx context.Context, tx pgx.Tx, 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
UpdateWithTZTx(ctx context.Context, tx pgx.Tx, 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)
CheckOwnership(ctx context.Context, requestID uuid.UUID, userID int) (bool, error)
}
type SupplierRepository interface {
BulkInsert(ctx context.Context, requestID uuid.UUID, suppliers []*model.Supplier) error
BulkInsertTx(ctx context.Context, tx pgx.Tx, 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
CreateTx(ctx context.Context, tx pgx.Tx, usage *model.TokenUsage) error
}