Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(service/search): from/toの複数指定を可能に #2558

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

ras0q
Copy link
Member

@ras0q ras0q commented Dec 21, 2024

related to #2526

  • ?to={userID}&to={userID2}&to={groupID}のような指定ができるようになる
    • これはechoのパースの方式に従った書き方だが、実際はORなのにANDのように見えてしまうことを懸念している
    • ?to={userID},{userID2},{groupID}を実装するなら一旦生文字列で受け取って自前でスライスする必要がある
  • フロントエンド側ではto:meto:@RasをuserIDとuserが所属するgroupIDsのORに変換することでグループメンションも受け取れる
    • 毎回グループメンションが必要かは議論の余地がありそうだが、そっちはフロントエンド側に任せます
  • 指定が1つの場合は従来通りの検索結果が返るのでAPIの形式自体に破壊的変更はない
    • OpenAPIから生成したAPI Clientの型がuuidから[]uuidに修正する必要は出てくるかも
API Response
await (await fetch("/api/v3/messages?to=0193e6e1-e122-73e5-9ab8-73fc58c532c8&to=0193e82c-369e-70f0-a516-805ae8b32bb9&to=0193e82c-4ce0-70f0-bb2a-f8c46abd0934&to=0193e82c-6103-70f0-ac48-a14b7818d311")).json();

{
    "totalHits": 4,
    "hits": [
        {
            "id": "0193e82c-9baf-70f0-ae41-79014de010a8",
            "userId": "0193e6e1-e122-73e5-9ab8-73fc58c532c8",
            "channelId": "0193e6e1-e177-73e5-a6fd-53f5e498f897",
            "content": "!{\"type\":\"group\",\"raw\":\"@traq4\",\"id\":\"0193e82c-6103-70f0-ac48-a14b7818d311\"} グループメンション",
            "createdAt": "2024-12-21T07:44:17.839708Z",
            "updatedAt": "2024-12-21T07:44:17.839708Z",
            "pinned": false,
            "stamps": [],
            "threadId": null
        },
        {
            "id": "0193e82c-8f9b-70f0-8613-73144963643a",
            "userId": "0193e6e1-e122-73e5-9ab8-73fc58c532c8",
            "channelId": "0193e6e1-e177-73e5-a6fd-53f5e498f897",
            "content": "!{\"type\":\"group\",\"raw\":\"@traq3\",\"id\":\"0193e82c-4ce0-70f0-bb2a-f8c46abd0934\"} グループメンション",
            "createdAt": "2024-12-21T07:44:14.748326Z",
            "updatedAt": "2024-12-21T07:44:14.748326Z",
            "pinned": false,
            "stamps": [],
            "threadId": null
        },
        {
            "id": "0193e82c-7ec7-70f0-a481-866a5e33a6d6",
            "userId": "0193e6e1-e122-73e5-9ab8-73fc58c532c8",
            "channelId": "0193e6e1-e177-73e5-a6fd-53f5e498f897",
            "content": "!{\"type\":\"group\",\"raw\":\"@traq2\",\"id\":\"0193e82c-369e-70f0-a516-805ae8b32bb9\"} グループメンション",
            "createdAt": "2024-12-21T07:44:10.43953Z",
            "updatedAt": "2024-12-21T07:44:10.43953Z",
            "pinned": false,
            "stamps": [],
            "threadId": null
        },
        {
            "id": "0193e82c-0a61-70f0-9719-698c4ce78325",
            "userId": "0193e6e1-e122-73e5-9ab8-73fc58c532c8",
            "channelId": "0193e6e1-e177-73e5-a6fd-53f5e498f897",
            "content": "!{\"type\":\"user\",\"raw\":\"@traq\",\"id\":\"0193e6e1-e122-73e5-9ab8-73fc58c532c8\"}",
            "createdAt": "2024-12-21T07:43:40.642202Z",
            "updatedAt": "2024-12-21T07:43:40.642202Z",
            "pinned": false,
            "stamps": [],
            "threadId": null
        }
    ]
}

related to #2526

- `?to={userID}&to={userID2}&to={groupID}`のような指定ができるようになる
    - これはechoのパースの方式に従った書き方だが、実際はORなのにANDのように見えてしまうことを懸念している
    - `?to={userID},{userID2},{groupID}`を実装するなら一旦生文字列で受け取って自前でスライスする必要がある
- フロントエンド側では`to:me`や`to:@Ras`をuserIDとuserが所属するgroupIDsのORに変換することでグループメンションも受け取れる
    - 毎回グループメンションが必要かは議論の余地がありそうだが、そっちはフロントエンド側に任せます
- 指定が1つの場合は従来通りの検索結果が返るのでAPIの形式自体に破壊的変更はない
    - OpenAPIから生成したAPI Clientの型がuuidから[]uuidに修正する必要は出てくるかも
@ras0q ras0q requested a review from pikachu0310 December 21, 2024 08:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant