55 "database/sql"
66 "errors"
77
8+ "log/slog"
9+
810 "github.com/Masterminds/squirrel"
911 "go.opentelemetry.io/otel/codes"
1012
@@ -34,6 +36,8 @@ func (r *SchemaReader) ReadSchema(ctx context.Context, tenantID, version string)
3436 ctx , span := tracer .Start (ctx , "schema-reader.read-schema" )
3537 defer span .End ()
3638
39+ slog .Info ("Reading schema: " , slog .Any ("tenant_id" , tenantID ), slog .Any ("version" , version ))
40+
3741 builder := r .database .Builder .Select ("name, serialized_definition, version" ).From (SchemaDefinitionTable ).Where (squirrel.Eq {"version" : version , "tenant_id" : tenantID })
3842
3943 var query string
@@ -43,14 +47,22 @@ func (r *SchemaReader) ReadSchema(ctx context.Context, tenantID, version string)
4347 if err != nil {
4448 span .RecordError (err )
4549 span .SetStatus (codes .Error , err .Error ())
50+
51+ slog .Error ("Error in building SQL query: " , slog .Any ("error" , err ))
52+
4653 return nil , errors .New (base .ErrorCode_ERROR_CODE_SQL_BUILDER .String ())
4754 }
4855
56+ slog .Debug ("Executing SQL query: " , slog .Any ("query" , query ), slog .Any ("arguments" , args ))
57+
4958 var rows * sql.Rows
5059 rows , err = r .database .DB .QueryContext (ctx , query , args ... )
5160 if err != nil {
5261 span .RecordError (err )
5362 span .SetStatus (codes .Error , err .Error ())
63+
64+ slog .Error ("Error in executing query: " , slog .Any ("error" , err ))
65+
5466 return nil , errors .New (base .ErrorCode_ERROR_CODE_EXECUTION .String ())
5567 }
5668 defer rows .Close ()
@@ -62,23 +74,36 @@ func (r *SchemaReader) ReadSchema(ctx context.Context, tenantID, version string)
6274 if err != nil {
6375 span .RecordError (err )
6476 span .SetStatus (codes .Error , err .Error ())
77+
78+ slog .Error ("Error scanning rows: " , slog .Any ("error" , err ))
79+
6580 return nil , err
6681 }
6782 definitions = append (definitions , sd .Serialized ())
6883 }
6984 if err = rows .Err (); err != nil {
7085 span .RecordError (err )
7186 span .SetStatus (codes .Error , err .Error ())
87+
88+ slog .Error ("Error iterating over rows: " , slog .Any ("error" , err ))
89+
7290 return nil , err
7391 }
7492
93+ slog .Info ("Successfully retrieved" , slog .Any ("schema definitions" , len (definitions )))
94+
7595 sch , err = schema .NewSchemaFromStringDefinitions (false , definitions ... )
7696 if err != nil {
7797 span .RecordError (err )
7898 span .SetStatus (codes .Error , err .Error ())
99+
100+ slog .Error ("Failed while creating schema from definitions: " , slog .Any ("error" , err ))
101+
79102 return nil , err
80103 }
81104
105+ slog .Info ("Successfully created schema." )
106+
82107 return sch , err
83108}
84109
@@ -87,6 +112,8 @@ func (r *SchemaReader) ReadEntityDefinition(ctx context.Context, tenantID, name,
87112 ctx , span := tracer .Start (ctx , "schema-reader.read-entity-definition" )
88113 defer span .End ()
89114
115+ slog .Info ("Reading entity definition: " , slog .Any ("tenant_id" , tenantID ), slog .Any ("version" , version ))
116+
90117 builder := r .database .Builder .Select ("name, serialized_definition, version" ).Where (squirrel.Eq {"name" : name , "version" : version , "tenant_id" : tenantID }).From (SchemaDefinitionTable ).Limit (1 )
91118
92119 var query string
@@ -96,14 +123,22 @@ func (r *SchemaReader) ReadEntityDefinition(ctx context.Context, tenantID, name,
96123 if err != nil {
97124 span .RecordError (err )
98125 span .SetStatus (codes .Error , err .Error ())
126+
127+ slog .Error ("Error building SQL query: " , slog .Any ("error" , err ))
128+
99129 return nil , "" , errors .New (base .ErrorCode_ERROR_CODE_SQL_BUILDER .String ())
100130 }
101131
132+ slog .Debug ("Executing SQL query: " , slog .Any ("query" , query ), slog .Any ("arguments" , args ))
133+
102134 var def storage.SchemaDefinition
103135 row := r .database .DB .QueryRowContext (ctx , query , args ... )
104136 if err = row .Err (); err != nil {
105137 span .RecordError (err )
106138 span .SetStatus (codes .Error , err .Error ())
139+
140+ slog .Error ("Error executing query: " , slog .Any ("error" , err ))
141+
107142 return nil , "" , errors .New (base .ErrorCode_ERROR_CODE_EXECUTION .String ())
108143 }
109144
@@ -113,6 +148,9 @@ func (r *SchemaReader) ReadEntityDefinition(ctx context.Context, tenantID, name,
113148 if errors .Is (err , sql .ErrNoRows ) {
114149 return nil , "" , errors .New (base .ErrorCode_ERROR_CODE_SCHEMA_NOT_FOUND .String ())
115150 }
151+
152+ slog .Error ("Error scanning rows: " , slog .Any ("error" , err ))
153+
116154 return nil , "" , errors .New (base .ErrorCode_ERROR_CODE_SCAN .String ())
117155 }
118156
@@ -121,10 +159,16 @@ func (r *SchemaReader) ReadEntityDefinition(ctx context.Context, tenantID, name,
121159 if err != nil {
122160 span .RecordError (err )
123161 span .SetStatus (codes .Error , err .Error ())
162+
163+ slog .Error ("Failed while creating schema from definitions: " , slog .Any ("error" , err ))
164+
124165 return nil , "" , err
125166 }
126167
127168 definition , err = schema .GetEntityByName (sch , name )
169+
170+ slog .Info ("Successfully retrieved" , slog .Any ("schema definition" , definition ))
171+
128172 return definition , def .Version , err
129173}
130174
@@ -133,6 +177,8 @@ func (r *SchemaReader) ReadRuleDefinition(ctx context.Context, tenantID, name, v
133177 ctx , span := tracer .Start (ctx , "schema-reader.read-rule-definition" )
134178 defer span .End ()
135179
180+ slog .Info ("Reading rule definition: " , slog .Any ("tenant_id" , tenantID ), slog .Any ("name" , name ), slog .Any ("version" , version ))
181+
136182 builder := r .database .Builder .Select ("name, serialized_definition, version" ).Where (squirrel.Eq {"name" : name , "version" : version , "tenant_id" : tenantID }).From (SchemaDefinitionTable ).Limit (1 )
137183
138184 var query string
@@ -142,35 +188,59 @@ func (r *SchemaReader) ReadRuleDefinition(ctx context.Context, tenantID, name, v
142188 if err != nil {
143189 span .RecordError (err )
144190 span .SetStatus (codes .Error , err .Error ())
191+
192+ slog .Error ("Error building SQL query: " , slog .Any ("error" , err ))
193+
145194 return nil , "" , errors .New (base .ErrorCode_ERROR_CODE_SQL_BUILDER .String ())
146195 }
147196
197+ slog .Debug ("Executing SQL query: " , slog .Any ("query" , query ), slog .Any ("arguments" , args ))
198+
148199 var def storage.SchemaDefinition
149200 row := r .database .DB .QueryRowContext (ctx , query , args ... )
150201 if err = row .Err (); err != nil {
151202 span .RecordError (err )
152203 span .SetStatus (codes .Error , err .Error ())
204+
205+ slog .Error ("Error executing query: " , slog .Any ("error" , err ))
206+
153207 return nil , "" , errors .New (base .ErrorCode_ERROR_CODE_EXECUTION .String ())
154208 }
155209
156210 if err = row .Scan (& def .Name , & def .SerializedDefinition , & def .Version ); err != nil {
211+
212+ slog .Error ("Error scanning row: " , slog .Any ("error" , err ))
213+
157214 span .RecordError (err )
158215 span .SetStatus (codes .Error , err .Error ())
159216 if errors .Is (err , sql .ErrNoRows ) {
217+
218+ slog .Error ("Rule not found in the database" )
219+
160220 return nil , "" , errors .New (base .ErrorCode_ERROR_CODE_SCHEMA_NOT_FOUND .String ())
161221 }
222+
223+ slog .Error ("Error scanning row values: " , slog .Any ("error" , err ))
224+
162225 return nil , "" , errors .New (base .ErrorCode_ERROR_CODE_SCAN .String ())
163226 }
164227
228+ slog .Info ("Successfully retrieved rule definition for: " , slog .Any ("name" , name ))
229+
165230 var sch * base.SchemaDefinition
166231 sch , err = schema .NewSchemaFromStringDefinitions (false , def .Serialized ())
167232 if err != nil {
168233 span .RecordError (err )
169234 span .SetStatus (codes .Error , err .Error ())
235+
236+ slog .Error ("Error creating schema from definition: " , slog .Any ("error" , err ))
237+
170238 return nil , "" , err
171239 }
172240
173241 definition , err = schema .GetRuleByName (sch , name )
242+ slog .Info ("Successfully created rule definition" )
243+
174244 return definition , def .Version , err
175245}
176246
@@ -179,26 +249,45 @@ func (r *SchemaReader) HeadVersion(ctx context.Context, tenantID string) (versio
179249 ctx , span := tracer .Start (ctx , "schema-reader.head-version" )
180250 defer span .End ()
181251
252+ slog .Info ("Finding the latest version fo the schema for: " , slog .String ("tenant_id" , tenantID ))
253+
182254 var query string
183255 var args []interface {}
184256 query , args , err = r .database .Builder .
185257 Select ("version" ).From (SchemaDefinitionTable ).Where (squirrel.Eq {"tenant_id" : tenantID }).OrderBy ("version DESC" ).Limit (1 ).
186258 ToSql ()
187259 if err != nil {
260+
261+ slog .Error ("Failed to build SQL query: " , slog .Any ("error" , err ))
262+
188263 span .RecordError (err )
189264 span .SetStatus (codes .Error , err .Error ())
190265 return "" , errors .New (base .ErrorCode_ERROR_CODE_SQL_BUILDER .String ())
191266 }
267+
268+ slog .Debug ("Executing SQL query: " , slog .Any ("query" , query ), slog .Any ("arguments" , args ))
269+
192270 row := r .database .DB .QueryRowContext (ctx , query , args ... )
193271 err = row .Scan (& version )
194272 if err != nil {
273+
274+ slog .Error ("Error while scanning row: " , slog .Any ("error" , err ))
275+
195276 span .RecordError (err )
196277 span .SetStatus (codes .Error , err .Error ())
197278 if errors .Is (err , sql .ErrNoRows ) {
279+
280+ slog .Error ("Schema not found in the database." )
281+
198282 return "" , errors .New (base .ErrorCode_ERROR_CODE_SCHEMA_NOT_FOUND .String ())
199283 }
284+
285+ slog .Error ("Error while scanning row values: " , slog .Any ("error" , err ))
286+
200287 return "" , err
201288 }
202289
290+ slog .Info ("Successfully found the latest schema version: " , slog .Any ("version" , version ))
291+
203292 return version , nil
204293}
0 commit comments