• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

Permify / permify / 10528103096

23 Aug 2024 03:13PM UTC coverage: 66.726%. Remained the same
10528103096

Pull #1488

github

tolgaOzen
feat: update API requests and client-side calls with improved formatting
Pull Request #1488: feat: update API requests and client-side calls with improved formatting

6700 of 10041 relevant lines covered (66.73%)

113.51 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

0.0
/internal/storage/postgres/bundleReader.go
1
package postgres
2

3
import (
4
        "context"
5
        "errors"
6
        "log/slog"
7
        "strings"
8

9
        "github.com/jackc/pgx/v5"
10

11
        "github.com/Masterminds/squirrel"
12
        "github.com/golang/protobuf/jsonpb"
13
        "go.opentelemetry.io/otel/codes"
14

15
        "github.com/Permify/permify/internal/storage/postgres/utils"
16
        db "github.com/Permify/permify/pkg/database/postgres"
17
        base "github.com/Permify/permify/pkg/pb/base/v1"
18
)
19

20
type BundleReader struct {
21
        database  *db.Postgres
22
        txOptions pgx.TxOptions
23
}
24

25
func NewBundleReader(database *db.Postgres) *BundleReader {
×
26
        return &BundleReader{
×
27
                database:  database,
×
28
                txOptions: pgx.TxOptions{IsoLevel: pgx.ReadCommitted, AccessMode: pgx.ReadWrite},
×
29
        }
×
30
}
×
31

32
func (b *BundleReader) Read(ctx context.Context, tenantID, name string) (bundle *base.DataBundle, err error) {
×
33
        ctx, span := tracer.Start(ctx, "bundle-reader.read-bundle")
×
34
        defer span.End()
×
35

×
36
        slog.DebugContext(ctx, "reading bundle", slog.Any("tenant_id", tenantID), slog.Any("name", name))
×
37

×
38
        builder := b.database.Builder.Select("payload").From(BundlesTable).Where(squirrel.Eq{"name": name, "tenant_id": tenantID})
×
39

×
40
        var query string
×
41
        var args []interface{}
×
42

×
43
        query, args, err = builder.ToSql()
×
44
        if err != nil {
×
45
                return nil, utils.HandleError(ctx, span, err, base.ErrorCode_ERROR_CODE_SQL_BUILDER)
×
46
        }
×
47

48
        slog.DebugContext(ctx, "executing sql query", slog.Any("query", query), slog.Any("arguments", args))
×
49

×
50
        var row pgx.Row
×
51
        row = b.database.ReadPool.QueryRow(ctx, query, args...)
×
52

×
53
        var jsonData string
×
54
        err = row.Scan(&jsonData)
×
55
        if err != nil {
×
56
                if errors.Is(err, pgx.ErrNoRows) {
×
57
                        return nil, errors.New(base.ErrorCode_ERROR_CODE_BUNDLE_NOT_FOUND.String())
×
58
                }
×
59
                return nil, utils.HandleError(ctx, span, err, base.ErrorCode_ERROR_CODE_SCAN)
×
60
        }
61

62
        m := jsonpb.Unmarshaler{}
×
63
        bundle = &base.DataBundle{}
×
64
        err = m.Unmarshal(strings.NewReader(jsonData), bundle)
×
65
        if err != nil {
×
66
                span.RecordError(err)
×
67
                span.SetStatus(codes.Error, err.Error())
×
68

×
69
                slog.ErrorContext(ctx, "failed to convert the value to bundle", slog.Any("error", err))
×
70

×
71
                return nil, errors.New(base.ErrorCode_ERROR_CODE_INVALID_ARGUMENT.String())
×
72
        }
×
73

74
        return bundle, err
×
75
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc