#chat #backup #full-text

gchdb

提供存储由不同聊天软件提取的聊天记录的记录抽象,并提供了全文搜索功能

11个版本

0.2.8 2022年5月28日
0.2.7 2022年5月28日
0.2.6 2021年3月13日
0.2.2 2021年2月27日
0.1.0 2020年5月21日

#1003数据库接口

每月41次下载

自定义许可证

35KB
941

GCHDB,即通用聊天历史数据库

此crate提供聊天记录抽象,用于存储从不同聊天软件提取的聊天记录,并集成中文全文索引。

使用方法

fn main() -> ChatRecordResult<()> {
    // create an records database
    let mut recoder = SqliteChatRecorder::new("record.db")?;
    // create record, you can extract some record from other im's database
    let record = Record {
        chat_type: "testaasdavxz".into(),
        owner_id: "asdasdasdaaaa".into(),
        group_id: "asdasdasd".into(),
        sender: "人民日报".into(),
        content:
            "张华考上了北京大学;李萍进了中等技术学校;我在百货公司当售货员:我们都有光明的前途"
                .into(),
        timestamp: chrono::Local::now().naive_utc().timestamp_millis(),
        ..Default::default()
    };
    // insert to database
    assert_eq!(recoder.insert_or_update_record(&record)?, true);
    // index the contents of the record
    recoder.refresh_index()?;
    // query record by sql
    println!(
        "{:?}",
        recoder.get_record(Query {
            chat_type: Some("testaasdavxz".into()),
            sender: Some("%日报".into()),
            ..Default::default()
        })?
    );
    // query record by indexer
    println!(
        "{:?}",
        recoder.get_record(Query {
            keyword: Some("技术学校".into()),
            ..Default::default()
        })?
    );
    // remove record in database
    assert_eq!(recoder.remove_record(record)?, true);
    Ok(())
}

贡献

欢迎提交拉取请求 :)

许可证

AGPL3.0

依赖关系

~54MB
~779K SLoC