Querying
Performing mutations
While queries fetch and transform data, mutations allow you to make changes - like updating records, triggering actions, or writing data to destinations.
Declaring mutable operations
Operations that perform changes are marked with the write modifier in service definitions:
service FlightsService {
// Operation that makes changes
write operation bookFlight(BookingRequest):BookingConfirmation
// Regular query operation
operation getFlights():Flight[]
}Invoking mutations
While queries use the find or stream keywords, mutations use the call directive:
find { Passengers[] }
call FlightsService::sendFlightManifestWrite protection
Operations marked with `write` are excluded from being called during regular queries (i.e., in `find` or `stream` blocks). They can only be invoked using `call`.
Type conversion in mutations
TaxiQL automatically handles type conversion between your source data and the mutation operation’s input requirements:
// Source data model
model Movie {
id: FilmId
title: Title
}
// Target model for database
model Film {
@Id
filmId: FilmId
title: Title
reviewScore: ReviewScore // Additional field not in source
}
service FilmDatabase {
write operation saveFilm(Film):Film
}
// TaxiQL will automatically discover missing data
find { Movie[] }
call FilmDatabase::saveFilmExplicit projections
You can control the transformation of data before mutation using projections:
find { Film[] } as {
id: FilmId
title: Title = upperCase(Title) // Transform data before saving
rating: ReviewScore
}
call FilmDatabase::saveFilmSingle vs batch mutations
The input type of your mutation operation determines whether data is processed individually or in batches:
service FilmService {
// Processes one film at a time
write operation saveSingle(Film):Film
// Processes films in batches
write operation saveBatch(Film[]):Film[]
}Batch processing
Using array types in mutation operations signals that the operation expects to handle multiple records in a single call. This can be more efficient for bulk operations.