# Potential Helper Syntax for Scylla-rs
<style>.markdown-body { max-width: 60%; }</style>
```rust=
pub struct TransactionsTable {
transaction_id: String,
idx: u16,
variant: String,
message_id: String,
version: u8,
data: Vec<u8>,
inclusion_state: Option<u8>,
milestone_index: Option<u32>,
}
let res: Option<TransactionsTable> =
TransactionsTable::select_all("my_keyspace") // select * from my_keyspace.transactions
.transaction_id(Operator::Equal, "129386sdgh481hsd262395asfs876") // where transaction_id = '129386sdgh481hsd262395asfs876'
.idx(Operator::GreaterThan, 0) // and idx > 0
.consistency(Consistency::One)
.page_size(100)
.build()
.get_local()
.await?;
let res: Option<???> =
TransactionsTable::select("my_keyspace", &["message_id", "inclusion_state", "milestone_index"])
.transaction_id(Operator::Equal, "129386sdgh481hsd262395asfs876")
.idx(Operator::GreaterThan, 0)
.group_by(&["version", "variant"])
.order_by(&["version", "variant"])
.consistency(Consistency::One)
.page_size(100)
.build()
.get_local()
.await?;
let res: Option<TransactionsTable> =
TransactionsTable::in_keyspace("my_keyspace")
.select_all() // select * from my_keyspace.transactions
.transaction_id_bind(Operator::Equal) // where transaction_id = ?
.idx_bind(Operator::GreaterThan) // and idx > ?
.consistency(Consistency::One)
.page_size(100)
.build()
.get_local()
.await?;
let res: Option<???> =
TransactionsTable::in_keyspace("my_keyspace")
.select(&[
// consts generated by Table derive?
TransactionsTable::MESSAGE_ID,
TransactionsTable::INCLUSION_STATE,
TransactionsTable::MILESTONE_INDEX,
]) // select message_id, inclusion_state, milestone_index from my_keyspace.transactions
.transaction_id(Operator::Equal, BindMarker::Anonymous) // where transaction_id = ?
.idx(Operator::GreaterThan, 0) // and idx > 0
.group_by(&[TransactionsTable::VERSION, TransactionsTable::VARIANT]) // group by version, variant
.order_by(&[TransactionsTable::VERSION, TransactionsTable::VARIANT]) // order by version, variant
.consistency(Consistency::One)
.page_size(100)
.build()
.get_local()
.await?;
let res: Option<(String, Option<u8>, Option<u32>)> =
TransactionsTable::in_keyspace("my_keyspace")
.select::<(
// types generated by Table derive?
TransactionsTableMessageId,
TransactionsTableInclusionState,
TransactionsTableMilestoneIndex,
)>() // select message_id, inclusion_state, milestone_index from my_keyspace.transactions
.transaction_id(Operator::Equal, BindMarker::Anonymous) // where transaction_id = ?
.idx(Operator::GreaterThan, 0) // and idx > 0
.group_by(&[TransactionsTable::VERSION, TransactionsTable::VARIANT]) // group by version, variant
.order_by(&[TransactionsTable::VERSION, TransactionsTable::VARIANT]) // order by version, variant
.consistency(Consistency::One)
.page_size(100)
.build()
.get_local()
.await?;
let res: Option<???> =
TransactionsTable::in_keyspace("my_keyspace")
.distinct()
.select_message_id()
.select_inclusion_state()
.select_milestone_index() // select distinct message_id, inclusion_state, milestone_index from my_keyspace.transactions
.where_transaction_id(Operator::Equal, "129386sdgh481hsd262395asfs876") // where transaction_id = '129386sdgh481hsd262395asfs876'
.where_idx(Operator::GreaterThan, 0) // and idx > 0
.group_by_version()
.group_by_variant() // group by version, variant
.order_by_version()
.order_by_variant() // order by version, variant
.consistency(Consistency::One)
.page_size(100)
.build()
.get_local()
.await?;
let res: Option<???> =
TransactionsTable::in_keyspace("my_keyspace")
.select(
// Type generated by the Table derive
TransactionsTableColumns
.message_id()
.inclusion_state()
.milestone_index(),
) // select message_id, inclusion_state, milestone_index from my_keyspace.transactions
.where_clause(
TransactionsTableColumns::transaction_id(Operator::Equal, "129386sdgh481hsd262395asfs876")
.and(TransactionsTableColumns::idx(Operator::GreaterThan, 0)),
) // where transaction_id = '129386sdgh481hsd262395asfs876' and idx > 0
.group_by(TransactionsTableColumns.version().variant())
.order_by(TransactionsTableColumns.version().variant())
.consistency(Consistency::One)
.page_size(100)
.build()
.get_local()
.await?;
// Since TransactionsTable is user defined, fns can be defined on it to simply
// return a SelectStatement(/Builder) which can be manually created or parsed from
// a string using parse_statement!()
let res: Option<MyPreDefinedReturnType> =
TransactionsTable::my_pre_defined_select() // Returns built SelectStatement
.consistency(Consistency::One)
.page_size(100)
.build()
.get_local()
.await?;
```