mysqlbinlog 0.1.5

mysqlbinlog-rs is for parsing MySQL binlog file (row format)
Documentation

use rowevents::value_type::ValueType;

pub const UNKNOWN_EVENT: i8 = 0;
pub const START_EVENT_V3: i8 = 1;
pub const QUERY_EVENT: i8 = 2;
pub const STOP_EVENT: i8 = 3;
pub const ROTATE_EVENT: i8 = 4;
pub const INTVAR_EVENT: i8 = 5;
pub const LOAD_EVENT: i8 = 6;
pub const SLAVE_EVENT: i8 = 7;
pub const CREATE_FILE_EVENT: i8 = 8;
pub const APPEND_BLOCK_EVENT: i8 = 9;
pub const EXEC_LOAD_EVENT: i8 = 10;
pub const DELETE_FILE_EVENT: i8 = 11;
pub const NEW_LOAD_EVENT: i8 = 12;
pub const RAND_EVENT: i8 = 13;
pub const USER_VAR_EVENT: i8 = 14;
pub const FORMAT_DESCRIPTION_EVENT: i8 = 15;
pub const XID_EVENT: i8 = 16;
pub const BEGIN_LOAD_QUERY_EVENT: i8 = 17;
pub const EXECUTE_LOAD_QUERY_EVENT: i8 = 18;
pub const TABLE_MAP_EVENT: i8  = 19;
pub const PRE_GA_WRITE_ROWS_EVENT: i8  = 20;
pub const PRE_GA_UPDATE_ROWS_EVENT: i8  = 21;
pub const PRE_GA_DELETE_ROWS_EVENT: i8  = 22;

// From MySQL 5.1.18 events
pub const WRITE_ROWS_EVENT: i8    = 23;
pub const UPDATE_ROWS_EVENT: i8    = 24;
pub const DELETE_ROWS_EVENT: i8    = 25;
// # ----------------------------------
pub const INCIDENT_EVENT: i8   = 26;
pub const HEARTBEAT_LOG_EVENT: i8   = 27;

// From MySQL 5.6.2 events 
pub const WRITE_ROWS_EVENT2: i8 = 30;
pub const UPDATE_ROWS_EVENT2: i8 = 31;
pub const DELETE_ROWS_EVENT2: i8 = 32;

#[derive(Debug)]
pub struct FormatDescriptorEvent {

}

#[derive(Debug)]
pub struct XidEvent {
    xid: i64
}

#[derive(Debug)]
pub struct TableMapEvent {
    pub db_name: String,
    pub table_name: String
}

#[derive(Debug)]
pub struct DeleteEvent {
    pub entry: Vec<Vec<ValueType>>
}

#[derive(Debug)]
pub struct InsertEvent {
    pub entry: Vec<Vec<ValueType>>
}

#[derive(Debug)]
pub struct UpdateEvent {
    pub entry1: Vec<Vec<ValueType>>,
    pub entry2: Vec<Vec<ValueType>>
}

#[derive(Debug)]
pub struct RotateEvent {
}

//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
// Implements
impl FormatDescriptorEvent {
    pub fn new() -> FormatDescriptorEvent {
        FormatDescriptorEvent{}
    }
}

impl XidEvent {
    pub fn new(xid: i64) -> XidEvent {
        XidEvent{ xid: xid }
    }  
}

impl TableMapEvent {
    pub fn new(db_name: String, table_name: String) -> TableMapEvent {
        TableMapEvent{ db_name: db_name, table_name: table_name }
    }
}

impl InsertEvent {
    pub fn new(entry: Vec<Vec<ValueType>>) -> InsertEvent {
        InsertEvent{entry: entry}
    } 
}

impl UpdateEvent {
    pub fn new(entry1: Vec<Vec<ValueType>>, entry2: Vec<Vec<ValueType>>) -> UpdateEvent {
        UpdateEvent{entry1: entry1, entry2: entry2}
    }
}

impl DeleteEvent {
    pub fn new(entry: Vec<Vec<ValueType>>) -> DeleteEvent {
        DeleteEvent{entry: entry}
    }   
}

impl RotateEvent {
    pub fn new() -> RotateEvent {
        RotateEvent{}
    }
}

#[derive(Debug)]
pub enum Event {
    Unknown,
    FormatDescriptor(FormatDescriptorEvent),
    Xid(XidEvent),
    Rotate(RotateEvent),
    TableMap(TableMapEvent),
    Delete(DeleteEvent),
    Insert(InsertEvent),
    Update(UpdateEvent),
}