;
; グループセレクタ定義ファイル for CatShanty2
;


; タブ名
; -- tabs で囲まれた中へ「改行」区切りで定義します。
; 【注意】
; 同じ名前のタブを定義しないでください。
; 最大 16 個まで定義できます。（ 17 個以上の定義は正常に行えません）
; ここで定義したタブと以降に定義するクエリの「数」と「順」を必ず一致させてください。

-- tabs
メーカー
ジャンル
R指定
機種
メディア
評価
クリエイター
発売年
-- tabs


; グループセレクタ抽出クエリ
; -- queries で囲まれた中へ「セミコロン＋改行」区切りで定義します。
; このクエリでグループセレクタに候補が抽出されます。単一列が抽出されるようにしてください。
; コメントを記述したい場合は SQLite3 の文法を用いてください。
; list_view のカラム名は CatShanty2 メインメニューのヘルプ → DBカラム名一覧 で確認できます。

-- queries
SELECT DISTINCT maker FROM list_view ORDER BY maker;
SELECT DISTINCT genre_name FROM list_view ORDER BY genre_name;
SELECT value FROM json_each('["あり","なし"]'); -- adult 無条件で全パターン向けUI候補;
SELECT DISTINCT machine_name FROM list_view ORDER BY machine_name;
SELECT DISTINCT media_name FROM list_view ORDER BY media_name;

/* 評価 */
SELECT value FROM json_each(
    '["☆☆☆☆☆","★☆☆☆☆","★★☆☆☆","★★★☆☆","★★★★☆","★★★★★"]'
  ); -- 無条件で全パターン向けUI候補;

/* クリエイター */
WITH RECURSIVE split(fld, remain) AS (
  SELECT '', creator||';' FROM list_view
  UNION ALL SELECT
    substr(remain, 0, instr(remain, ';')) AS fld,
    substr(remain, instr(remain, ';')+1) AS remain
  FROM split WHERE remain != ''
  ) SELECT DISTINCT substr(fld, instr(fld, ']')+1) as fld
    FROM split ORDER BY fld; -- ';'で分割し、'[〜]'を除去したものを候補;

/* 発売年 */
SELECT DISTINCT CASE
  WHEN ifnull(sale_year, '') THEN substr(sale_year,1,4)||' 年' ELSE '' END
  FROM list_view ORDER BY sale_year; -- 年号部分に' 年'を付加したものを候補;
-- queries


; アイテムリスト抽出クエリ
; -- operators で囲まれた中へ「セミコロン＋改行」区切りで定義します。
; グループセレクタの候補をクリックした際に、アイテムリストへ抽出するクエリとなります。
; "@click-string" はクリックした候補（文字列）に置換されます。
; コメントを記述したい場合は SQLite3 の文法を用いてください。
; list_view のカラム名は CatShanty2 メインメニューのヘルプ → DBカラム名一覧 で確認できます。

-- operators
SELECT * FROM list_view WHERE maker = '@click-string';
SELECT * FROM list_view WHERE genre_name = '@click-string';
SELECT * FROM list_view WHERE adult = (CASE '@click-string' WHEN 'あり' THEN 1 ELSE 0 END);
SELECT * FROM list_view WHERE machine_name = '@click-string';
SELECT * FROM list_view WHERE media_name = '@click-string';
SELECT * FROM list_view WHERE rating = length(rtrim('@click-string', '☆')) * 10;

/* クリエイター */
SELECT * FROM list_view WHERE CASE '@click-string'
  WHEN '' THEN creator ISNULL OR creator LIKE '[%]`;' ESCAPE '`'
  ELSE creator LIKE '%@click-string%;' END; -- 正確な判定は REGEX か REGEXP で行うが吉;

/* 発売年 */
SELECT * FROM list_view WHERE (
  CASE '@click-string' WHEN '' THEN NOT ifnull(sale_year, '')
  ELSE sale_year LIKE substr('@click-string',1,4) || '%' END);
-- operators
