|
1 | 1 | // Package main implements a plugin that checks that: |
2 | 2 | // - entity-related messages (e.g: Cluster) define a known set of common fields |
3 | | -// for the Qdrant Cloud API. |
| 3 | +// for the Qdrant Cloud API. Default values: id, name, account_id, created_at |
4 | 4 | // - Request messages (e.g: ListClusters) define a known set of common fields |
5 | | -// for the Qdrant Cloud API. |
| 5 | +// for the Qdrant Cloud API. Default values: account_id |
6 | 6 | // |
7 | 7 | // To use this plugin: |
8 | 8 | // |
|
48 | 48 | requiredRequestFieldsRuleSpec = &check.RuleSpec{ |
49 | 49 | ID: requiredRequestFieldsRuleID, |
50 | 50 | Default: true, |
51 | | - Purpose: `Checks that all request methods (e.g: ListClutersRequest) define a known set of fields for the Qdrant Cloud API.`, |
| 51 | + Purpose: `Checks that all request methods (e.g: ListClustersRequest) define a known set of fields for the Qdrant Cloud API.`, |
52 | 52 | Type: check.RuleTypeLint, |
53 | 53 | Handler: checkutil.NewMessageRuleHandler(checkRequestFields, checkutil.WithoutImports()), |
54 | 54 | } |
|
64 | 64 | }, |
65 | 65 | } |
66 | 66 |
|
67 | | - crudMethodPrefixes = []string{"List", "Get", "Delete", "Update", "Create"} |
68 | | - defaultRequiredFields = []string{"id", "name", "account_id", "created_at"} |
69 | | - defaultRequiredRequestFields = []string{"account_id"} |
| 67 | + crudMethodPrefixes = []string{"List", "Get", "Delete", "Update", "Create"} |
| 68 | + crudMethodWithoutFullEntityPrefixes = []string{"List", "Get", "Delete"} |
| 69 | + defaultRequiredFields = []string{"id", "name", "account_id", "created_at"} |
| 70 | + defaultRequiredRequestFields = []string{"account_id"} |
70 | 71 | ) |
71 | 72 |
|
72 | 73 | func main() { |
@@ -102,10 +103,12 @@ func checkRequestFields(ctx context.Context, responseWriter check.ResponseWriter |
102 | 103 | return nil |
103 | 104 | } |
104 | 105 | var requiredFields []string |
105 | | - if strings.HasPrefix(msgName, "List") || strings.HasPrefix(msgName, "Get") || strings.HasPrefix(msgName, "Delete") { |
106 | | - requiredFields = defaultRequiredRequestFields |
107 | | - } else { |
108 | | - return nil |
| 106 | + // For Create/Update methods it would be useful to check for the |
| 107 | + // `{entity}_id` field. We could add it later as an improvement. |
| 108 | + for _, prefix := range crudMethodWithoutFullEntityPrefixes { |
| 109 | + if strings.HasPrefix(msgName, prefix) { |
| 110 | + requiredFields = defaultRequiredRequestFields |
| 111 | + } |
109 | 112 | } |
110 | 113 | missingFields := findMissingFields(messageDescriptor, requiredFields) |
111 | 114 | if len(missingFields) > 0 { |
|
0 commit comments