-
Notifications
You must be signed in to change notification settings - Fork 0
メモ(仕様)
藻 edited this page Feb 10, 2020
·
2 revisions
ノートへの手書きのメモを転記したものです。
YAML ファイル1個で記述される。
フォルダ1つあたり、0〜1個、配置される。
descendants
- タグ(tags)
- モード(override, merge)
[動画,]
descendants:
mode: override # それまでの tags を上書き
tags: [動画]
まず⋯⋯YAML の表現へ⋯⋯。
そして⋯⋯抽象的な表現へ⋯⋯。(動的なバリデーション。)
desc:
mode: override
受けついだ属性を消す。
tags: []
(デフォルト値)
-
mode: override
を指定して、ある属性に値が指定されなかったときは、その属性の所定のデフォルト値が設定される。
desc:
mode: merge
変化しない。
interface MetadataBundle {
descendants: AttachedMetadata;
directory: AttachedMetadata;
items: Map<String, AttachedMetadata>;
}
interface AttachedMetadata {
/**
* 省略されたら merge なので、Optional である必要はない。
*/
mode: Mode;
/**
* mode: override 時: 設定しないことで、デフォルト値
* merge 時: 設定しないことで、親の値を引きつぐ
*/
tags: Option<List<String>>;
}
YamlDesr
case class MetadataBundle(
mode: Mode,
tags: Option[Seq[String]],
)
desr
object(
"mode" -> option(string())
.then {
case Some(value) ->
Mode.parse(...).orThrow(...)
- マニフェスト解決
- リポジトリ設定取得
- リポジトリ更新
インデックス
属性
- アイテム
リポジトリID パス 名前(?)
Components (MongoDB)
id
name "S01_C02.psd"
parent_id: (UUID)
repository_id: "mock-matex"
path: "doga/S01/../C02.psd"
blob_id: "〜". (UUID)
_constructor: LeafElement
CompositeElement のとき、 blob_id なし。
それ以外は変わらない。
items: [
{
"file": {
"id": ...,
"parentId": ...,
"name": ...,
"path": ...,
},
thumbnail: {
"id": ...,
"width": ...,
"height": ...,
},
},
...
]
- コンポーネントの特性に応じて、それが持つ属性集合が定まる。
Thumbnail 特性 ←現在は対応しない
Repository:
children: Component[]
components (elements)
- repository_id
- path: /foo/bar/baz.jpg
- kind: "leaf" | "composite" ⋯ file | directory
ルートディレクトリをディレクトリとして表現しない。
◆ ep01 ⋯⋯①
└📂 動画 ⋯⋯②
└📄 1.wav ⋯⋯③
①
② path: /動画 parent_id: null
③ path: /動画/1.wav parent_id: /動画