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

pace / bricks / 13717956986

06 Mar 2025 02:30PM UTC coverage: 51.823% (-4.8%) from 56.612%
13717956986

push

github

web-flow
Merge pull request #406 from pace/gomod-update

This updates all dependencies to the latest version, excluding

github.com/bsm/redislock
github.com/dave/jennifer

as newer versions lead to unwanted behavior.

54 of 82 new or added lines in 9 files covered. (65.85%)

453 existing lines in 15 files now uncovered.

4889 of 9434 relevant lines covered (51.82%)

20.93 hits per line

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

0.0
/backend/couchdb/db.go
1
// Copyright © 2021 by PACE Telematics GmbH. All rights reserved.
2

3
package couchdb
4

5
import (
6
        "net/http"
7

8
        "github.com/caarlos0/env/v11"
9
        kivik "github.com/go-kivik/kivik/v4"
10
        "github.com/go-kivik/kivik/v4/couchdb"
11

12
        "github.com/pace/bricks/http/transport"
13
        "github.com/pace/bricks/maintenance/health/servicehealthcheck"
14
)
15

16
func DefaultDatabase() (*kivik.DB, error) {
×
17
        return Database("")
×
18
}
×
19

20
func Database(name string) (*kivik.DB, error) {
×
21
        cfg, err := ParseConfig()
×
22
        if err != nil {
×
23
                return nil, err
×
24
        }
×
25
        // Primary client+db
NEW
26
        _, db, err := clientAndDB(name, cfg)
×
27
        if err != nil {
×
28
                return nil, err
×
29
        }
×
30

31
        // Secondary (healthcheck) client+db
NEW
32
        healthCheckClient, healthCheckDB, err := clientAndDB(name, cfg)
×
33
        if err != nil {
×
34
                return nil, err
×
35
        }
×
36

37
        if !cfg.DisableHealthCheck {
×
38
                servicehealthcheck.RegisterHealthCheck("couchdb("+name+")", &HealthCheck{
×
39
                        Name:   name,
×
40
                        Client: healthCheckClient,
×
41
                        DB:     healthCheckDB,
×
42
                        Config: cfg,
×
43
                })
×
44
        }
×
45

46
        return db, nil
×
47
}
48

NEW
49
func clientAndDB(dbName string, cfg *Config) (*kivik.Client, *kivik.DB, error) {
×
50
        client, err := Client(cfg)
×
51
        if err != nil {
×
52
                return nil, nil, err
×
53
        }
×
54

55
        // use default db
56
        if dbName == "" {
×
57
                dbName = cfg.Database
×
58
        }
×
59

NEW
60
        db := client.DB(dbName)
×
61
        if db.Err() != nil {
×
62
                return nil, nil, db.Err()
×
63
        }
×
64
        return client, db, err
×
65
}
66

67
func Client(cfg *Config) (*kivik.Client, error) {
×
68
        rts := []transport.ChainableRoundTripper{
×
69
                &AuthTransport{
×
70
                        Username: cfg.User,
×
71
                        Password: cfg.Password,
×
72
                },
×
73
                transport.NewDumpRoundTripperEnv(),
×
74
        }
×
75
        if !cfg.DisableRequestLogging {
×
76
                rts = append(rts, &transport.LoggingRoundTripper{})
×
77
        }
×
78

NEW
79
        client, err := kivik.New("couch", cfg.URL, couchdb.OptionHTTPClient(&http.Client{Transport: transport.Chain(rts...)}))
×
80
        if err != nil {
×
81
                return nil, err
×
82
        }
×
83

84
        return client, nil
×
85
}
86

87
func ParseConfig() (*Config, error) {
×
88
        var cfg Config
×
89
        err := env.Parse(&cfg)
×
90
        if err != nil {
×
91
                return nil, err
×
92
        }
×
93
        return &cfg, nil
×
94
}
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