server icon indicating copy to clipboard operation
server copied to clipboard

feat(pm & notification): pm related apis and a notification counting api

Open Sociosarbis opened this issue 2 years ago • 8 comments

  1. /pms/list(GET):
    1. ?folder=inbox(收件箱)
    2. ?folder=outbox (已发送) example response
    {
      "data": [
        {
          "created_at": "0001-01-01T00:00:00Z",
          "related_message": {
            "created_at": "0001-01-01T00:00:00Z",
            "title": "",
            "content": "",
            "id": 1,
            "new": false
          },
          "sender": {
            "avatar": {
              "large": "",
              "medium": "",
              "small": ""
            },
            "sign": "",
            "url": "",
            "username": "",
            "nickname": "",
            "id": 1,
            "user_group": 1
          },
          "receiver": {
            "avatar": {
              "large": "",
              "medium": "",
              "small": ""
            },
            "sign": "",
            "url": "",
            "username": "",
            "nickname": "",
            "id": 2,
            "user_group": 1
          },
          "title": "",
          "content": "",
          "id": 2,
          "new": false
        }
      ]
    }
    
  2. /pms/related-msgs/:id(GET)

example response

[
  {
    "created_at": "0001-01-01T00:00:00Z",
    "sender": {
      "avatar": {
        "large": "",
        "medium": "",
        "small": ""
      },
      "sign": "",
      "url": "",
      "username": "",
      "nickname": "",
      "id": 1,
      "user_group": 1
    },
    "receiver": {
      "avatar": {
        "large": "",
        "medium": "",
        "small": ""
      },
      "sign": "",
      "url": "",
      "username": "",
      "nickname": "",
      "id": 2,
      "user_group": 1
    },
    "title": "",
    "content": "",
    "id": 1,
    "new": false
  }
]
  1. /pms/counts(GET)

example response

{
  "unread": 0,
  "inbox": 0,
  "outbox": 0
}
  1. /pms/contacts/recent(GET)(最新的15个收件人)

example response

[
  {
    "avatar": {
      "large": "",
      "medium": "",
      "small": ""
    },
    "sign": "",
    "url": "",
    "username": "",
    "nickname": "",
    "id": 1,
    "user_group": 1
  }
]
  1. /pms/read(PATCH)(标记已读) example request body
{
  "id": 1
}

成功返回204

  1. /pms(POST) example request body
{
  "title": "",
  "content": "",
  "related_id": 1, // or empty
  "receiver_ids": [1],
  "sender_id": 1
}

example response

[
  {
    "created_at": "0001-01-01T00:00:00Z",
    "sender": {
      "avatar": {
        "large": "",
        "medium": "",
        "small": ""
      },
      "sign": "",
      "url": "",
      "username": "",
      "nickname": "",
      "id": 1,
      "user_group": 1
    },
    "receiver": {
      "avatar": {
        "large": "",
        "medium": "",
        "small": ""
      },
      "sign": "",
      "url": "",
      "username": "",
      "nickname": "",
      "id": 2,
      "user_group": 1
    },
    "title": "",
    "content": "",
    "id": 1,
    "new": false
  }
]
  1. /pms(DELETE) example request body
{
  "id": 1
}

成功返回204

  1. /notifications/count(GET) example response
0

Sociosarbis avatar Oct 02 '22 06:10 Sociosarbis

Deploy Preview for bangumi-org-server ready!

Name Link
Latest commit c8608114609902b2e5b0a0bcd43fb96a7f33d64a
Latest deploy log https://app.netlify.com/sites/bangumi-org-server/deploys/635564842cf0c90008fdda99
Deploy Preview https://deploy-preview-225--bangumi-org-server.netlify.app
Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify site settings.

netlify[bot] avatar Oct 02 '22 06:10 netlify[bot]

Codecov Report

Base: 51.31% // Head: 52.03% // Increases project coverage by +0.71% :tada:

Coverage data is based on head (582944a) compared to base (6854154). Patch coverage: 59.27% of modified lines in pull request are covered.

:exclamation: Current head 582944a differs from pull request most recent head dfc41d1. Consider uploading reports for the commit dfc41d1 to get more accurate results

Additional details and impacted files
@@            Coverage Diff             @@
##           master     #225      +/-   ##
==========================================
+ Coverage   51.31%   52.03%   +0.71%     
==========================================
  Files         205      219      +14     
  Lines        8225     8960     +735     
==========================================
+ Hits         4221     4662     +441     
- Misses       3521     3740     +219     
- Partials      483      558      +75     
Impacted Files Coverage Δ
internal/web/handler/pm/list_recent_contact.go 26.66% <26.66%> (ø)
internal/pkg/generic/slice/slice.go 86.90% <28.57%> (-5.31%) :arrow_down:
internal/web/handler/pm/mark_read.go 31.25% <31.25%> (ø)
internal/notification/mysql_repository.go 33.33% <33.33%> (ø)
internal/web/handler/pm/list_related.go 33.33% <33.33%> (ø)
internal/ctrl/create_private_message.go 34.00% <34.00%> (ø)
internal/web/handler/pm/create.go 40.54% <40.54%> (ø)
internal/user/mysql_repository.go 63.95% <41.17%> (-14.90%) :arrow_down:
internal/web/req/query_parse.go 43.58% <45.00%> (+0.29%) :arrow_up:
internal/web/handler/pm/list.go 46.93% <46.93%> (ø)
... and 14 more

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

:umbrella: View full report at Codecov.
:loudspeaker: Do you have feedback about the report comment? Let us know in this issue.

codecov[bot] avatar Oct 02 '22 06:10 codecov[bot]

请求的URL感觉有点混搭?感觉获取和删除的消息用同一个path的不同方法就行了

trim21 avatar Oct 02 '22 10:10 trim21

请求的URL感觉有点混搭?感觉获取和删除的消息用同一个path的不同方法就行了

混搭是指api里带上了method吗,例如createdelete。没有/pms/:id(DELETE)因为delete是一个批量删除的方法,可以穿多个id。获取消息是指/pms/list/:id?这个是获取主消息下的所有消息,不是获取单条消息,所以如果用/pms/:id好像不是很好。

可以改成? /pms/list?folder=inbox => /pms/list/:folder /pms/list/:id => /pms/related-msgs/:id /pms/delete => /pms(DELETE) /pms/create => /pms(POST)

Sociosarbis avatar Oct 02 '22 14:10 Sociosarbis

感觉有点难搞,要不就都用RPC风格的URL吧。主要是感觉一开始提议的URL有RPC风格的有rest风格的不太统一,你觉得呢。

trim21 avatar Oct 08 '22 11:10 trim21

感觉有点难搞,要不就都用RPC风格的URL吧。主要是感觉一开始提议的URL有RPC风格的有rest风格的不太统一,你觉得呢。

刚查了下,RPC风格是用动词作为URL?例如get-listget-related-msgs,然后方法一般只用GETPOST。这样的话,个人觉得URL有点累赘,而且也跟其他api的风格不一致。

按我上一个comment那样改,应该是符合rest风格的吧?我偏向尽量都用rest的🤔,命名觉得有问题还可以再改改

Sociosarbis avatar Oct 08 '22 15:10 Sociosarbis

ok

trim21 avatar Oct 08 '22 21:10 trim21

ok

改了几个url的命名

Sociosarbis avatar Oct 09 '22 15:10 Sociosarbis

还是draft吗?还没完成吗?🤔

trim21 avatar Oct 20 '22 22:10 trim21

还是draft吗?还没完成吗?🤔

其实是完成了,不过感觉还有挺多地方要改,所以看看还有没有修改建议。那我先转正式PR

Sociosarbis avatar Oct 22 '22 15:10 Sociosarbis

👀能解决一下冲突吗

trim21 avatar Nov 16 '22 08:11 trim21

/ping

trim21 avatar Dec 07 '22 10:12 trim21

👀 看起来ok,能写一下openapi吗

trim21 avatar Dec 10 '22 01:12 trim21

👀 看起来ok,能写一下openapi吗

好,我现在写下

Sociosarbis avatar Dec 10 '22 07:12 Sociosarbis

方便拆成pm和通知两个PR吗?现在有通知的权限,pm的暂时还没做,也还没有权限

trim21 avatar Dec 14 '22 16:12 trim21

啊,没事了。才发现这个通知只有一个 count api。

trim21 avatar Dec 14 '22 16:12 trim21