improve upsert perfomance

This commit is contained in:
2024-08-13 23:39:44 +03:00
parent 30e5968e03
commit 25762cbae8
8 changed files with 127 additions and 83 deletions

View File

@ -31,7 +31,7 @@ type repository struct {
func (r *repository) StatsRepository() statsRepository {
return statsRepository{
db: r.db,
q: queries.New(r.db),
}
}
@ -41,7 +41,7 @@ func (r *repository) Close() error {
}
type statsRepository struct {
db *pgxpool.Pool
q *queries.Queries
}
type deviceStatsDB struct {
@ -67,7 +67,7 @@ func (s deviceStatsDB) asDomain() entities.DeviceStatistics {
}
func (r statsRepository) Upsert(ctx context.Context, stats entities.DeviceStatistics) error {
err := queries.New(r.db).UpsertDeviceMetrics(ctx, queries.UpsertDeviceMetricsParams{
err := r.q.UpsertDeviceMetrics(ctx, queries.UpsertDeviceMetricsParams{
DeviceID: string(stats.ID),
IncTraffic: int32(stats.IncomingTrafficBytes),
OutTraffic: int32(stats.OutgoingTrafficBytes),
@ -83,7 +83,7 @@ func (r statsRepository) Upsert(ctx context.Context, stats entities.DeviceStatis
}
func (r statsRepository) List(ctx context.Context) (out []entities.DeviceStatistics, err error) {
stats, err := queries.New(r.db).ListDeviceStats(ctx)
stats, err := r.q.ListDeviceStats(ctx)
if err != nil {
return nil, fmt.Errorf("listing device stats: %w", err)
}