Antly is currently in beta evaluation mode. Join us in testing and provide feedback.

Ensuring that your data is valid before sending JQL queries is crucial for preventing errors and ensuring the integrity of your application. Proper data validation helps avoid issues such as invalid input, incorrect data types, and missing required fields, which can lead to failed queries or unintended results. The following guidelines will help you validate your data effectively before sending it in a JQL query.

1. Validate Required Fields

Purpose:

  • To ensure that all necessary fields are included in your query to prevent missing data errors.

Guideline:

  • Identify the required fields for each operation (e.g., create, update) and ensure they are present in your query. Missing required fields can lead to validation errors and failed operations.

Example:

  • For a create operation in a Customer module, ensure fields like name, email, and address are included:
{ "name": "John Doe", "email": "john.doe@example.com", "address": "123 Main St" }

2. Ensure Correct Data Types

Purpose:

  • To prevent data type mismatches that can cause validation errors and incorrect data processing.

Guideline:

  • Verify that the data types of the fields in your query match the expected types defined in the JQL schema. For example, ensure that integers, strings, dates, and boolean values are correctly formatted.

Example:

  • For a Customer module, ensure the age field is an integer and the isActive field is a boolean:
{ "age": 30, "isActive": true }

3. Use Valid Formats for Date and Time Fields

Purpose:

  • To avoid issues with date and time processing by ensuring that they are correctly formatted.

Guideline:

  • Always use the appropriate format for date and time fields as specified in the JQL documentation. Typically, dates should follow the ISO 8601 format (YYYY-MM-DD), and times should include both the time and time zone if required.

Example:

  • For a Transaction module, ensure the transactionDate field is formatted correctly:
{ "transactionDate": "2024-08-21T14:30:00Z" }

4. Validate Against Accepted Values

Purpose:

  • To ensure that fields with predefined sets of accepted values (e.g., enums or choices) contain only valid options.

Guideline:

  • Check that fields with restricted value sets (like status codes, types, or categories) contain valid and accepted values. This prevents issues where invalid values are submitted, leading to query rejection.

Example:

  • For a Customer status field, ensure the value is one of the accepted options:
{ "status": "active" // Accepted values might be "active", "inactive", "suspended" }

5. Verify Foreign Key References

Purpose:

  • To ensure that references to other records or related models are valid and exist in the database.

Guideline:

  • When including foreign keys or related objects in your query, verify that the referenced IDs exist and are correct. This is particularly important in create and update operations.

Example:

  • For an Order module, ensure the customerId references an existing customer:
{ "customerId": "12345" }

6. Use Proper Lengths and Limits

Purpose:

  • To prevent issues with fields that have specific length or size constraints, such as strings or lists.

Guideline:

  • Ensure that string fields do not exceed their maximum allowed length and that lists or arrays are within the allowed limits. This helps avoid errors during query processing.

Example:

  • For a Product module, ensure the productName does not exceed the allowed length:
{ "productName": "UltraWidget 3000" // Assuming the max length is 50 characters }

7. Sanitize Input Data

Purpose:

  • To prevent security vulnerabilities such as SQL injection or XSS by ensuring that input data is clean and safe.

Guideline:

  • Sanitize all input data to remove or escape any potentially harmful content, especially if the data is user-generated. This includes stripping out or encoding special characters, and ensuring data conforms to expected formats.

Example:

  • Before submitting a comment field, ensure it is sanitized:
{ "comment": "Great product! <script>alert('Hacked!');</script>" // Should be sanitized to prevent XSS }

8. Validate Before Transforming

Purpose:

  • To ensure that data transformations or computations in your query are performed on valid data.

Guideline:

  • Before applying transformations (like date formatting or value conversions), validate the original data to ensure it meets the required criteria. This helps avoid errors during transformation.

Example:

  • Before transforming a date field, ensure it is a valid date:
{ "created": { "__transform__": { "dateFormat": { "format": "%b %d, %Y" } } } }

9. Handle Nullable Fields Appropriately

Purpose:

  • To avoid errors related to fields that can be null, particularly when performing updates or complex queries.

Guideline:

  • Explicitly handle fields that can be null, especially in update operations or when retrieving data. Ensure your query logic accounts for the possibility of null values and handles them appropriately.

Example:

  • For an Employee module, handle nullable fields such as middleName:
{ "firstName": "Alice", "middleName": null, // This field can be null "lastName": "Smith" }