レベル上の記録型(LevelRecord)の定義
from 第一マイルストーンに対するデータベースインタフェース
レベル上の記録型(LevelRecord)の定義 
前提
エンティティ(実体; Entity)の定義
エンティティとは
タグとは
完備タグとは
レベル上の記録とは
以下の四つのエンティティの組(関係)であり、
カテゴリ
コピー能力
メディア投稿者
レベル
その上で以下の属性を持つもの
スコア: 実数
その他のタグ: 複数のユーザー定義エンティティ
メディア: 1個以上のURL
単に記録ということもある。
サーバーに保管される、まさしく走者が出した記録のことを指す。
レベル上のプレ記録とは
ユーザーがKSSRsサーバーに提出する記録データを指す。
ユーザーはゲームタイトル, メディア投稿者, タグのみを書いて提出できる。
モデレータによる審査を受けていない記録である。
コピー能力, レベル, スコアの情報が欠落している。
モデレータが入力する。
データ構造
DocumentInfo型に依存する。ただし、modifiedプロパティは今回は考えない。
code:ts
//記録
interface LevelRecord{
basic_info: LevelRecordBasis; // (*)
score: int;
score_type: ScoreType; // (*)
user_defined_entities: Tag[];
media: URL[];
doc_info: DocumentInfo;
}
//プレ記録
interface LevelPrerecord{
basic_info: Pick<LevelRecordBasis, "game_title" | "media_owner">
user_defined_entities: Tag[];
media: URL[];
doc_info: DocumentInfo;
}
(*) ただし、
RecordBasis型(記録の基礎情報型)は以下のように定義する。
code:ts
interface LevelRecordBasis {
game_title: CompleteTag;
ability: CompleteTag;
media_owner: Tag;
level: CompleteTag;
}
スコア種別型ScoreTypeは以下のように定義する。
longtime: 時間。1時間以上の長丁場を想定。ミリ秒は考えない。
milisecTime: 時間。ミリ秒単位で記録を図る。
points: 多ければ多いほど良い基準に使う。
loss: 損失。少ければ少ないほど良い基準に使う。
code:ts
type ScoreType = "longtime"|"milisecTime"|"points"|"loss";