public async Task <ActionResult <CollectionInfo> > AddOrEditCollection(int postId, [FromQuery] int privacy)
        {
            // 收藏存在则修改,否则添加
            var userId = User.FindFirst(ClaimTypes.NameIdentifier)?.Value;

            if (!int.TryParse(userId, out int uid))
            {
                return(BadRequest(new { error = "Unknow user ID." }));
            }
            var col = await _repo.GetCollection(uid, postId);

            if (col == null)
            {
                try
                {
                    return(CollectionInfo.FromCollection(await _repo.SaveCollection(uid, postId, privacy)));
                }
                catch
                {
                    return(NotFound());
                }
            }
            else
            {
                return(CollectionInfo.FromCollection(await _repo.UpdateCollection(uid, postId, privacy)));
            }
        }
        public async Task <ActionResult <CollectionInfo> > DeleteCollection(int postId)
        {
            var userId = User.FindFirst(ClaimTypes.NameIdentifier)?.Value;

            if (!int.TryParse(userId, out int uid))
            {
                return(BadRequest(new { error = "Unknow user ID." }));
            }
            return(CollectionInfo.FromCollection(await _repo.DeleteCollection(uid, postId)));
        }
        public async Task <ActionResult <CollectionInfo> > GetCollectionStatus(int postId)
        {
            var userId = User.FindFirst(ClaimTypes.NameIdentifier)?.Value;

            if (!int.TryParse(userId, out int uid))
            {
                return(BadRequest(new { error = "Unknow user ID." }));
            }
            var col = await _repo.GetCollection(uid, postId);

            if (col == null)
            {
                return(NotFound());
            }

            return(CollectionInfo.FromCollection(col));
        }