syntax = "proto3";

package bilibili.app.resource.v1;

//
service Module {
    //
    rpc List(ListReq) returns (ListReply);
}

//
enum CompressType {
    Unzip    = 0; // unzip
    Original = 1; // 不操作
}

//
enum EnvType {
    Unknown = 0; //
    Release = 1; //
    Test    = 2; //
}

//
enum IncrementType {
    Total       = 0; // 全量包
    Incremental = 1; // 增量包
}

//
enum LevelType {
    Undefined = 0; //
    High      = 1; // 高 需立即下载
    Middle    = 2; // 中 可以延迟下载
    Low       = 3; // 低 仅在业务方使用到时由业务方手动进行下载
}

message ListReply {
    //
    string env = 1;
    //
    repeated PoolReply pools = 2;
    //
    int64 list_version = 3;
}

//
message ListReq {
    //
    string pool_name = 1;
    //
    string module_name = 2;
    //
    repeated VersionListReq version_list = 3;
    //
    EnvType env = 4;
    //
    int32 sys_ver = 5;
    //
    int32 scale = 6;
    //
    int32 arch = 7;
    //
    int64 list_version = 8;
}

//
message ModuleReply {
    //
    string name = 1;
    //
    int64 version = 2;
    //
    string url = 3;
    //
    string md5 = 4;
    //
    string total_md5 = 5;
    //
    IncrementType increment = 6;
    //
    bool is_wifi = 7;
    //
    LevelType level = 8;
    //
    string filename = 9;
    //
    string file_type = 10;
    //
    int64 file_size = 11;
    //
    CompressType compress = 12;
    //
    int64 publish_time = 13;
    // 上报使用
    int64 pool_id = 14;
    //
    int64 module_id = 15;
    //
    int64 version_id = 16;
    //
    int64 file_id = 17;
    //
    bool zip_check = 18;
}

message PoolReply {
    //
    string name = 1;
    //
    repeated ModuleReply modules = 2;
}

//
message VersionListReq {
    //
    string pool_name = 1;
    //
    repeated VersionReq versions = 2;
}

//
message VersionReq {
    //
    string module_name = 1;
    //
    int64 version = 2;
}
