MCPcopy Index your code
hub / github.com/CovenantSQL/CovenantSQL / NewService

Function NewService

sqlchain/observer/service.go:116–172  ·  view source on GitHub ↗

NewService creates new observer service and load previous subscription from the meta database.

()

Source from the content-addressed store, hash-verified

114
115// NewService creates new observer service and load previous subscription from the meta database.
116func NewService() (service *Service, err error) {
117 // open observer database
118 dbFile := filepath.Join(conf.GConf.WorkingRoot, dbFileName)
119
120 db, err := xs.NewSqlite(dbFile)
121 if err != nil {
122 return
123 }
124
125 defer func() {
126 if err != nil {
127 _ = db.Close()
128 }
129 }()
130
131 for _, q := range initTableSQL {
132 if _, err = db.Writer().Exec(q); err != nil {
133 err = errors.Wrap(err, "init table failed")
134 return
135 }
136 }
137
138 // init service
139 service = &Service{
140 db: db,
141 caller: rpc.NewCallerWithPool(mux.GetSessionPoolInstance()),
142 }
143
144 // load previous subscriptions
145 rows, err := db.Writer().Query(getAllSubscriptionsSQL)
146 if err != nil {
147 err = errors.Wrap(err, "query previous subscriptions failed")
148 return
149 }
150
151 defer func() {
152 _ = rows.Close()
153 }()
154
155 for rows.Next() {
156 var (
157 rawDBID string
158 count int32
159 )
160
161 if err = rows.Scan(&rawDBID, &count); err != nil {
162 err = errors.Wrap(err, "scan subscriptions failed")
163 return
164 }
165
166 dbID := proto.DatabaseID(rawDBID)
167
168 service.subscription.Store(dbID, newSubscribeWorker(dbID, count, service))
169 }
170
171 return
172}
173

Callers 1

startServiceFunction · 0.70

Calls 10

NewCallerWithPoolFunction · 0.92
GetSessionPoolInstanceFunction · 0.92
DatabaseIDTypeAlias · 0.92
newSubscribeWorkerFunction · 0.85
CloseMethod · 0.65
ExecMethod · 0.65
WriterMethod · 0.65
QueryMethod · 0.65
NextMethod · 0.45
ScanMethod · 0.45

Tested by

no test coverage detected