ReadRuleDefinition - Reads rule config from the repository.
(ctx context.Context, tenantID, name, version string)
| 155 | |
| 156 | // ReadRuleDefinition - Reads rule config from the repository. |
| 157 | func (r *SchemaReader) ReadRuleDefinition(ctx context.Context, tenantID, name, version string) (definition *base.RuleDefinition, v string, err error) { |
| 158 | ctx, span := internal.Tracer.Start(ctx, "schema-reader.read-rule-definition") |
| 159 | defer span.End() // close span |
| 160 | slog.DebugContext(ctx, "reading rule definition", slog.Any("tenant_id", tenantID), slog.Any("name", name), slog.Any("version", version)) |
| 161 | builder := r.database.Builder.Select("name, serialized_definition, version").Where(squirrel.Eq{"name": name, "version": version, "tenant_id": tenantID}).From(SchemaDefinitionTable).Limit(1) |
| 162 | |
| 163 | var query string |
| 164 | var args []interface{} |
| 165 | |
| 166 | query, args, err = builder.ToSql() |
| 167 | if err != nil { |
| 168 | return nil, "", utils.HandleError(ctx, span, err, base.ErrorCode_ERROR_CODE_SQL_BUILDER) |
| 169 | } |
| 170 | |
| 171 | slog.DebugContext(ctx, "executing sql query", slog.Any("query", query), slog.Any("arguments", args)) |
| 172 | var def storage.SchemaDefinition |
| 173 | row := r.database.ReadPool.QueryRow(ctx, query, args...) // Execute query |
| 174 | if err = row.Scan(&def.Name, &def.SerializedDefinition, &def.Version); err != nil { |
| 175 | if errors.Is(err, pgx.ErrNoRows) { |
| 176 | return nil, "", utils.HandleError(ctx, span, err, base.ErrorCode_ERROR_CODE_SCHEMA_NOT_FOUND) |
| 177 | } |
| 178 | return nil, "", utils.HandleError(ctx, span, err, base.ErrorCode_ERROR_CODE_SCAN) |
| 179 | } |
| 180 | |
| 181 | slog.DebugContext(ctx, "successfully retrieved rule definition for", slog.Any("name", name)) |
| 182 | var sch *base.SchemaDefinition |
| 183 | sch, err = schema.NewSchemaFromStringDefinitions(false, def.Serialized()) |
| 184 | if err != nil { |
| 185 | return nil, "", utils.HandleError(ctx, span, err, base.ErrorCode_ERROR_CODE_INTERNAL) |
| 186 | } |
| 187 | |
| 188 | definition, err = schema.GetRuleByName(sch, name) |
| 189 | slog.DebugContext(ctx, "successfully created rule definition") |
| 190 | return definition, def.Version, err // Return result |
| 191 | } |
| 192 | |
| 193 | // HeadVersion - Finds the latest version of the schema. |
| 194 | func (r *SchemaReader) HeadVersion(ctx context.Context, tenantID string) (version string, err error) { |
nothing calls this directly
no test coverage detected