Skip to content

Conversation

southball
Copy link
Contributor

@southball southball commented Jul 5, 2020

Fixes #550. Ref. #653.

  • UI とネットワークリクエストは使えると思います。
  • また使えません。
  • ここは skip_serializing があるので、ContestUpdatePageis_public が知らなくて使えなさそうです。
    #[serde(skip_serializing)]
    pub(crate) is_public: bool,

image

  • is_public を設定しても、コンテストは見えるようです。(Incognito に見える)これは私の実装の問題かもしれませんが…

image
image

プレビュー

image

@southball
Copy link
Contributor Author

southball commented Jul 5, 2020

バックエンドのコード読んだら全く問題なさそうですけど…
https://github.com/kenkoooo/AtCoderProblems/blob/master/atcoder-problems-backend/src/sql/internal/virtual_contest_manager.rs

@kenkoooo
Copy link
Owner

kenkoooo commented Jul 5, 2020

skip_serialize を外すついでにもう一回バックエンドをデプロイし直してみます。

@southball
Copy link
Contributor Author

ありがとうございます。そうしたら is_public がちゃんと設定しているかがわかりますね。

@southball
Copy link
Contributor Author

southball commented Jul 5, 2020

待って… get_single_contestVirtualContestconstruct_virtual_contest などは全部 is_public がわからなそう?
例えば、get_single_contest から戻す値は is_public という field がなさそう?

ここのロジックがちょっと複雑ので、間違ったかもしれませんが…

@kenkoooo
Copy link
Owner

kenkoooo commented Jul 5, 2020

ContestUpdatePageis_public を見れないのはなんとかしたくて、front-end と back-end を同時に書き換えたいですね。
今は VirtualContestManager::get_single_contestResult<VirtualContest> を返しますが Result<(VirtualContestInfo, items, participants)> みたいなのを返すようにしたいです。

@southball
Copy link
Contributor Author

southball commented Jul 5, 2020

そうすれば、この PR の機能は全部書き換えるあともう一度作ったほうがいい?(VirtualContestVirtualContestInfo の移行ですね)

今はどこか VirtualContestInfo が戻すところを探してみて、is_public を確かめてみます。(Recent contests のはずです)

@kenkoooo
Copy link
Owner

kenkoooo commented Jul 5, 2020

全部一気にやらずに、必要なところだけ VirtualContest → VirtualContestInfo すれば良いと思います。

@kenkoooo
Copy link
Owner

kenkoooo commented Jul 5, 2020

skip_serialize を外すついでにもう一回バックエンドをデプロイし直してみます。

しました

@southball
Copy link
Contributor Author

ありがとうございました。

image

is_publictrue ですが、どうして…

@southball
Copy link
Contributor Author

southball commented Jul 5, 2020

POST data (http://localhost:3000/internal-api/contest/update):

{
   "id":"ddd21450-d07a-43ab-accc-9cd49d9be20e",
   "title":"Test Private Contest !",
   "memo":"Private contest!",
   "start_epoch_second":33150824700,
   "duration_second":3600,
   "mode":null,
   "is_public":false
}

これは正しいですか?server::virtual_contest::update_contest と同じそうです。

@southball
Copy link
Contributor Author

私がデバッグできるものはここまでだと思います... すみません。

@kenkoooo
Copy link
Owner

kenkoooo commented Jul 5, 2020

ddd21450-d07a-43ab-accc-9cd49d9be20e はちゃんと is_public=false になってました

@southball
Copy link
Contributor Author

southball commented Jul 6, 2020

大丈夫になりました(どうして?)

では、必要な部分で VirtualContest → VirtualContestInfo しますか?

@southball
Copy link
Contributor Author

今は ContestUpdatePageShowContestget_single_contest を使っているので、この後 get_single_contest は何を戻せばいいんですか。

例えば、VirtualContestInfo を戻すと、problemsparticipants がなくなります。ContestUpdatePageShowContest もこの二つの情報が必要そうです。

新しい、VirtualContest のように problemsparticipants のあるクラスを作りますか(多分これではない?)、それとも新しい HTTP endpoint を作ってそこから problemsparticipants を取りますか。

@kenkoooo
Copy link
Owner

kenkoooo commented Jul 6, 2020

{ info, participants, problems } を返せば良いと思います

@southball
Copy link
Contributor Author

southball commented Jul 6, 2020

image

@southball
Copy link
Contributor Author

Backend の Tests 直すことを忘れてしまいました…

@southball
Copy link
Contributor Author

機能を実装して、テストを直しました。

Rust 書く経験が少ないです。レビューお願いします。

@southball southball marked this pull request as ready for review July 7, 2020 12:35
@kenkoooo
Copy link
Owner

kenkoooo commented Jul 8, 2020

よさそう。後ほどマージします。

@kenkoooo kenkoooo merged commit 7051bf3 into kenkoooo:master Jul 8, 2020
@southball southball deleted the feat-contest branch July 12, 2020 10:18
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.

非公開でコンテストを作成できる機能はあったでしょうか
2 participants