Validate command

The validate command validates one or many SurrealQL (.surql) language files.

Command options

ArgumentsDescription
[PATTERNS] Glob pattern for the files to validate [default: "*/.surql"]

Example usage

To perform validation on a SurrealQL local file, in a terminal run the surreal validate command with the required argument.

Using the command on its own will validate all the .surql files in the current directory.

surreal validate
user1.surql: OK
user2.surql: OK
user3.surql: OK

You can perform validation on a single file, regardless of extension.

surreal validate user.surql
surreal validate user.txt

You can also perform validation on multiple files using a single glob pattern:

# equivalent to "surreal validate"
surreal validate **/*.surql

Finally, you can also perform validation on multiple files using multiple paths/patterns:

surreal validate index.surql schemas/*.surql queries/*.surql
surreal validate *.(txt|surql)

If any files are invalid, the command will abort at this point and return an error.

surreal validate
user1.surql: OK
user2.surql: KO
Parse error: Unexpected token `an identifier`, expected Eof
--> [1:15]
|
1 | CREATE person SE name = "Billy";
| ^^

Command help

To see the help information and usage instructions, in a terminal run the surreal validate --help command without any further arguments. This command gives general information on the arguments, inputs, and additional options for the validate command.

surreal validate --help

The output of the above command:

Validate SurrealQL query files

Usage: surreal validate [OPTIONS] [PATTERNS]...

Arguments:
[PATTERNS]... Glob pattern for the files to validate [default: **/*.surql]

Options:
-h, --help Print help

Logging:
-l, --log <LOG> The logging level for the command-line tool [env: SURREAL_LOG=] [default: info] [possible
values: none, full, error, warn, info, debug, trace]
--log-format <LOG_FORMAT> The format for terminal log output [env: SURREAL_LOG_FORMAT=] [default: text] [possible
values: text, json]
--log-socket <LOG_SOCKET> Send logs to the specified host:port [env: SURREAL_LOG_SOCKET=]
--log-file-level <LOG_FILE_LEVEL> Override the logging level for file output [env: SURREAL_LOG_FILE_LEVEL=] [possible values:
none, full, error, warn, info, debug, trace]
--log-otel-level <LOG_OTEL_LEVEL> Override the logging level for OpenTelemetry output [env: SURREAL_LOG_OTEL_LEVEL=] [possible
values: none, full, error, warn, info, debug, trace]
--log-socket-level <LOG_SOCKET_LEVEL> Override the logging level for unix socket output [env: SURREAL_LOG_SOCKET_LEVEL=] [possible
values: none, full, error, warn, info, debug, trace]
--log-socket-format <LOG_SOCKET_FORMAT> The format for socket output [env: SURREAL_LOG_SOCKET_FORMAT=] [default: text] [possible
values: text, json]
--log-file-enabled Whether to enable log file output [env: SURREAL_LOG_FILE_ENABLED=]
--log-file-path <LOG_FILE_PATH> The directory where log files will be stored [env: SURREAL_LOG_FILE_PATH=] [default: logs]
--log-file-name <LOG_FILE_NAME> The name of the log file [env: SURREAL_LOG_FILE_NAME=] [default: surrealdb.log]
--log-file-format <LOG_FILE_FORMAT> The format for log file output [env: SURREAL_LOG_FILE_FORMAT=] [default: text] [possible
values: text, json]
--log-file-rotation <LOG_FILE_ROTATION> The log file rotation interval [env: SURREAL_LOG_FILE_ROTATION=] [default: daily] [possible
values: daily, hourly, never]