Skip to content

Latest commit

 

History

History
139 lines (103 loc) · 3.5 KB

README.md

File metadata and controls

139 lines (103 loc) · 3.5 KB

card-playroom-server

Docker Rust

Release Rust

How to get started

VSCode のRemote Container 拡張の使用を推奨します.
このプロジェクトをクローンし,VSCode のRemote Container 拡張を使用して開く.

git clone https://github.com/2d-rpg/card-playroom-server.git
code card-playroom-server

右下の通知欄でDockerコンテナ上でプロジェクトを開くか聞いてくるのでReopen in Container を選択するとDockerコンテナが作成され,Dockerコンテナ上のプロジェクトが開かれる
Dockerコンテナ上のプロジェクトを開いたら右下の通知欄でrust-analyzerに必要な言語サーバーをダウンロードするか聞いてくるのでDownload nowを選択する.

以下 Dockerコンテナ上で実行

.env.exampleファイルを.envにコピーする

cp .env.example .env

dieselのセットアップを行う.

diesel setup
diesel migration generate create_rooms

up.sqlに以下を追記.

CREATE TABLE rooms (
  id   SERIAL  PRIMARY KEY,
  name VARCHAR NOT NULL,
  players TEXT[] NOT NULL
);

CREATE TABLE cards (
  id      SERIAL PRIMARY KEY,
  face    VARCHAR NOT NULL,
  back    VARCHAR NOT NULL
);

CREATE TABLE decks (
  id      SERIAL PRIMARY KEY,
  name    VARCHAR NOT NULL
);

CREATE TABLE belongings (
  id      SERIAL PRIMARY KEY,
  deck_id INTEGER NOT NULL references decks(id),
  card_id INTEGER NOT NULL references cards(id),
  num     INTEGER NOT NULL
);

データベース起動

diesel migration run

サーバー起動

cargo run # local-container間の同期が早い場合
cargo run --target-dir /tmp/target # local-container間の同期が遅い場合

http://0.0.0.0:8080 にサーバーが建てられる. http://127.0.0.1:8080 にアクセス.

データ追加

  • createRoom(ルーム作成)
mutation {
  createRoom(name: "hoge", player: "fuga") {
    id, name, players
  }
}
  • enterRoom(ルーム参加)
mutation {
  enterRoom(player: "piyo", roomId: 1) {
    id, name, players
  }
}
  • removeRoom(ルーム削除)
mutation {
  removeRoom(roomId: 2) {
    id, name, players
  }
}

データ取得

query {
  rooms{id, name, players}
}

Hot reload

cargo runの代わりに以下のコマンドを実行するとファイル変更するたびに自動でコンパイルされる

cargo watch -x run

Reset database

up.sqlを変更した場合,以下のコマンドでデータベースの更新を行う.

diesel database reset

上記の変更後,schema.rsの変更が自動で行われ,以下のコマンドでデータベースのスキーマを確認できる.

diesel print-schema