Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #[macro_export]
- macro_rules! easy_update {
- ( $update_query:expr, $params:expr ) => {
- {
- let run = || -> Result<u32, DatabaseError> {
- let conn = get_db_connection()?;
- let mut cached_statement = conn.prepare_cached($update_query)
- .map_err(|err| {
- DatabaseError::ConnectionError(format!("error preparing statement for update: {} - {}", $update_query, err))
- })?;
- let update_result = cached_statement.execute($params);
- match update_result {
- Err(err) => {
- let msg : String = format!("error executing update: {} - {}", $update_query, err);
- error!("{}", msg);
- Err(DatabaseError::ConnectionError(msg))
- },
- Ok(0) => { debug!("update affected 0 rows"); Ok(0u32) },
- Ok(1) => { trace!("insert/update successful"); Ok(1u32) },
- Ok(n) => { trace!("insert/update affected {} rows", n); Ok(n as u32)}
- }
- };
- run()
- }
- };
- }
- #[macro_export]
- macro_rules! easy_query {
- ( $query:expr, $result_type:ty ) => {
- {
- easy_query!( $query, $result_type, $result_type )
- }
- };
- ( $query:expr, result_types => $result_type_fn_map:ty, $result_type:ty ) => {
- {
- easy_query!( $query, (), result_types => $result_type_fn_map, $result_type )
- }
- };
- ( $query:expr, $params:expr, $result_type:ty ) => {
- {
- easy_query!( $query, $params, result_types => $result_type, $result_type )
- }
- };
- ( $query:expr, $params:expr, result_types => $result_type_fn_map:ty, $result_type:ty ) => {
- {
- easy_query!( $query, $params, |row| {
- row.get(0)
- }, $result_type_fn_map, $result_type)
- }
- };
- ( $query:expr, $params:expr, $fn_map_row:expr, $result_type:ty ) => {
- {
- easy_query!( $query, $params, $fn_map_row, $result_type, $result_type)
- }
- };
- ( $query:expr, $params:expr, $fn_map_row:expr, $result_type_fn_map:ty, $result_type:ty ) => {
- {
- let run = || -> Result<$result_type, DatabaseError> {
- let conn = get_db_connection()?;
- let mut cached_statement = conn.prepare_cached($query)
- .map_err(|err| {
- DatabaseError::ConnectionError(format!("error preparing statement for query: {} - {}", $query, err))
- })?;
- let result_rows : Result<$result_type_fn_map, _>
- = cached_statement.query_map($params, $fn_map_row)
- .map_err(|err| {
- DatabaseError::ConnectionError(format!("error mapping query: {} - {}", $query, err))
- })?.collect();
- Ok(result_rows.map_err(|err| {
- DatabaseError::ConnectionError(format!("error converting result for query: {} - {}", $query, err))
- })?.into_iter().collect::<$result_type>())
- };
- run()
- }
- };
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement