70 lines
3.4 KiB
Go
70 lines
3.4 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)
|
|
FindActiveByUserID(ctx context.Context, userID int) (*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
|
|
GetBalanceStatistics(ctx context.Context, userID int) (averageCost float64, history []*model.WriteOffHistory, err error)
|
|
}
|