...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 package instance
16
17 import (
18 "fmt"
19 "regexp"
20
21 "cloud.google.com/go/cloudsqlconn/errtype"
22 )
23
24 var (
25
26
27
28 connNameRegex = regexp.MustCompile("([^:]+(:[^:]+)?):([^:]+):([^:]+)")
29 )
30
31
32
33 type ConnName struct {
34 project string
35 region string
36 name string
37 }
38
39 func (c *ConnName) String() string {
40 return fmt.Sprintf("%s:%s:%s", c.project, c.region, c.name)
41 }
42
43
44 func (c *ConnName) Project() string {
45 return c.project
46 }
47
48
49 func (c *ConnName) Region() string {
50 return c.region
51 }
52
53
54 func (c *ConnName) Name() string {
55 return c.name
56 }
57
58
59 func ParseConnName(cn string) (ConnName, error) {
60 b := []byte(cn)
61 m := connNameRegex.FindSubmatch(b)
62 if m == nil {
63 err := errtype.NewConfigError(
64 "invalid instance connection name, expected PROJECT:REGION:INSTANCE",
65 cn,
66 )
67 return ConnName{}, err
68 }
69
70 c := ConnName{
71 project: string(m[1]),
72 region: string(m[3]),
73 name: string(m[4]),
74 }
75 return c, nil
76 }
77
View as plain text