chore: update list memo relations

This commit is contained in:
Steven
2023-10-01 21:35:17 +08:00
parent be046cae8e
commit fd395e5661
2 changed files with 22 additions and 18 deletions

View File

@ -102,13 +102,11 @@ func (d *Driver) ListMemos(ctx context.Context, find *store.FindMemo) ([]*store.
GROUP_CONCAT(resource.id) AS resource_id_list, GROUP_CONCAT(resource.id) AS resource_id_list,
( (
SELECT SELECT
GROUP_CONCAT(related_memo_id,':',type) GROUP_CONCAT(memo_id,':',related_memo_id,':',type)
FROM FROM
memo_relation memo_relation
WHERE WHERE
memo_relation.memo_id = memo.id memo_relation.memo_id = memo.id OR memo_relation.related_memo_id = memo.id
GROUP BY
memo_relation.memo_id
) AS relation_list ) AS relation_list
FROM FROM
memo memo
@ -169,21 +167,25 @@ func (d *Driver) ListMemos(ctx context.Context, find *store.FindMemo) ([]*store.
relatedMemoTypeList := strings.Split(memoRelationList.String, ",") relatedMemoTypeList := strings.Split(memoRelationList.String, ",")
for _, relatedMemoType := range relatedMemoTypeList { for _, relatedMemoType := range relatedMemoTypeList {
relatedMemoTypeList := strings.Split(relatedMemoType, ":") relatedMemoTypeList := strings.Split(relatedMemoType, ":")
if len(relatedMemoTypeList) != 2 { if len(relatedMemoTypeList) != 3 {
return nil, errors.Errorf("invalid relation format") return nil, errors.Errorf("invalid relation format")
} }
relatedMemoID, err := util.ConvertStringToInt32(relatedMemoTypeList[0]) memoID, err := util.ConvertStringToInt32(relatedMemoTypeList[0])
if err != nil { if err != nil {
return nil, err return nil, err
} }
relationType := store.MemoRelationType(relatedMemoTypeList[1]) relatedMemoID, err := util.ConvertStringToInt32(relatedMemoTypeList[1])
if err != nil {
return nil, err
}
relationType := store.MemoRelationType(relatedMemoTypeList[2])
memo.RelationList = append(memo.RelationList, &store.MemoRelation{ memo.RelationList = append(memo.RelationList, &store.MemoRelation{
MemoID: memo.ID, MemoID: memoID,
RelatedMemoID: relatedMemoID, RelatedMemoID: relatedMemoID,
Type: relationType, Type: relationType,
}) })
// Set the first parent ID if relation type is comment. // Set the first parent ID if relation type is comment.
if memo.ParentID == nil && relationType == store.MemoRelationComment { if memo.ParentID == nil && memoID == memo.ID && relationType == store.MemoRelationComment {
memo.ParentID = &relatedMemoID memo.ParentID = &relatedMemoID
} }
} }

View File

@ -102,13 +102,11 @@ func (d *Driver) ListMemos(ctx context.Context, find *store.FindMemo) ([]*store.
GROUP_CONCAT(resource.id) AS resource_id_list, GROUP_CONCAT(resource.id) AS resource_id_list,
( (
SELECT SELECT
GROUP_CONCAT(related_memo_id || ':' || type) GROUP_CONCAT(memo_id || ':' || related_memo_id || ':' || type)
FROM FROM
memo_relation memo_relation
WHERE WHERE
memo_relation.memo_id = memo.id memo_relation.memo_id = memo.id OR memo_relation.related_memo_id = memo.id
GROUP BY
memo_relation.memo_id
) AS relation_list ) AS relation_list
FROM FROM
memo memo
@ -169,21 +167,25 @@ func (d *Driver) ListMemos(ctx context.Context, find *store.FindMemo) ([]*store.
relatedMemoTypeList := strings.Split(memoRelationList.String, ",") relatedMemoTypeList := strings.Split(memoRelationList.String, ",")
for _, relatedMemoType := range relatedMemoTypeList { for _, relatedMemoType := range relatedMemoTypeList {
relatedMemoTypeList := strings.Split(relatedMemoType, ":") relatedMemoTypeList := strings.Split(relatedMemoType, ":")
if len(relatedMemoTypeList) != 2 { if len(relatedMemoTypeList) != 3 {
return nil, errors.New("invalid relation format") return nil, errors.New("invalid relation format")
} }
relatedMemoID, err := util.ConvertStringToInt32(relatedMemoTypeList[0]) memoID, err := util.ConvertStringToInt32(relatedMemoTypeList[0])
if err != nil { if err != nil {
return nil, err return nil, err
} }
relationType := store.MemoRelationType(relatedMemoTypeList[1]) relatedMemoID, err := util.ConvertStringToInt32(relatedMemoTypeList[1])
if err != nil {
return nil, err
}
relationType := store.MemoRelationType(relatedMemoTypeList[2])
memo.RelationList = append(memo.RelationList, &store.MemoRelation{ memo.RelationList = append(memo.RelationList, &store.MemoRelation{
MemoID: memo.ID, MemoID: memoID,
RelatedMemoID: relatedMemoID, RelatedMemoID: relatedMemoID,
Type: relationType, Type: relationType,
}) })
// Set the first parent ID if relation type is comment. // Set the first parent ID if relation type is comment.
if memo.ParentID == nil && relationType == store.MemoRelationComment { if memo.ParentID == nil && memoID == memo.ID && relationType == store.MemoRelationComment {
memo.ParentID = &relatedMemoID memo.ParentID = &relatedMemoID
} }
} }