cyfs_core/im/
friend_property.rs

1use crate::CoreObjectType;
2use cyfs_base::*;
3use serde::Serialize;
4
5#[derive(Clone, Default, ProtobufEmptyEncode, ProtobufEmptyDecode, Serialize)]
6pub struct FriendPropertyDescContent {}
7
8impl DescContent for FriendPropertyDescContent {
9    fn obj_type() -> u16 {
10        CoreObjectType::FriendProperty as u16
11    }
12
13    fn format(&self) -> u8 {
14        OBJECT_CONTENT_CODEC_FORMAT_PROTOBUF
15    }
16
17    fn debug_info() -> String {
18        String::from("FriendPropertyDescContent")
19    }
20
21    type OwnerType = Option<ObjectId>;
22    type AreaType = SubDescNone;
23    type AuthorType = Option<ObjectId>;
24    type PublicKeyType = SubDescNone;
25}
26
27type FriendPropertyType = NamedObjType<FriendPropertyDescContent, EmptyProtobufBodyContent>;
28type FriendPropertyBuilder = NamedObjectBuilder<FriendPropertyDescContent, EmptyProtobufBodyContent>;
29
30pub type FriendPropertyId = NamedObjectId<FriendPropertyType>;
31pub type FriendProperty = NamedObjectBase<FriendPropertyType>;
32
33//没有create time,靠签名更新事件来保持最新
34pub trait FriendPropertyObject {
35    fn create(owner: PeopleId) -> Self;
36}
37
38impl FriendPropertyObject for FriendProperty {
39    fn create(owner: PeopleId) -> Self {
40        FriendPropertyBuilder::new(
41            FriendPropertyDescContent {},
42            EmptyProtobufBodyContent {},
43        )
44            .owner(owner.into())
45            .no_create_time()
46            .build()
47    }
48}