Last active
September 8, 2023 06:17
-
-
Save kwbtdisk/87020ef4ad6f5d73c4b29bbfe959f49d to your computer and use it in GitHub Desktop.
CORE Framework Javascript SDK: データを取得・検索する ($core.$models) 前編 https://youtu.be/-v4n8mLze70 & 後編 https://youtu.be/J6HZIReGkrE
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* データの取得の基本: await $core.$models.[modelName].find() | |
* - デフォルト 100件まで, 取得順のデフォルト: idの降順(DESC) | |
**/ | |
await $core.$models.selectOptionsMaster.find() | |
// IDで1件のみ取得(ID 10のものを取得): findById(10) | |
await $core.$models.selectOptionsMaster.findById(10) | |
// 取得件数制御, 5件のみ (デフォルト 100): find({ limit: 5 }) | |
await $core.$models.selectOptionsMaster.find({ limit: 5 }) | |
// sort 表示順制御 (昇順): find({limit: 5, sort: 'colName'}) | |
await $core.$models.selectOptionsMaster.find({limit: 5, sort: 'createdAt'}) // 作成日 昇順 | |
await $core.$models.selectOptionsMaster.find({limit: 5, sort: 'value'}) // 値 昇順 | |
await $core.$models.selectOptionsMaster.find({limit: 5, sort: '-createdAt'}) // 作成日 降順 | |
await $core.$models.selectOptionsMaster.find({limit: 5, sort: 'group,-createdAt'}) // グループ 昇順, 作成日 降順 | |
/** | |
* データの検索 型 | |
**/ | |
await $core.$models.[modelName].find({ | |
filter: { | |
[フィールド名]: { | |
[operator]: '値' | |
} | |
} | |
}) | |
// 検索の例: グループ名が "勘定科目" で一致するものを検索 | |
await $core.$models.selectOptionsMaster.find({filter: { group: { _eq: "勘定科目"}}}) | |
// 検索の例: グループ名に "勘定科目" が 含まれるものを検索 | |
await $core.$models.selectOptionsMaster.find({filter: { group: { _contain: "勘定科目"}}}) | |
/** | |
* 検索の "値" の Type定義 | |
**/ | |
export type FindValueBasicTypes = | |
| '$CURRENT_USER' // 現在のユーザID, 利用例: {filters: { editor: {_eq: '$CURRENT_USER' } }} | |
| '$NOW' // 現在時刻, 利用例: {filters: { publishedAt: {_gte: '$NOW' } }} | |
| string | |
| number | |
| boolean | |
/** | |
* 検索の "値" の Type定義 | |
**/ | |
export type FindValueBasicTypes = | |
// 現在のユーザID, 利用例: {filters: { editor: {_eq: '$CURRENT_USER' } }} | |
| '$CURRENT_USER' | |
// 現在時刻, 利用例: {filters: { publishedAt: {_gte: '$NOW' } }} | |
| '$NOW' | |
| string | |
| number | |
| boolean | |
// 作成者がログイン中のユーザである "選択肢マスタ" を取得 | |
await $core.$models.selectOptionsMaster.find({filter: {userCreated: {_eq: '$CURRENT_USER'}}}) | |
/** | |
* filter: {} の Type定義 | |
**/ | |
export type FindFilterOperations = { | |
// = (Equal) | |
// await $core.models.selectOptionsMaster.find({ filter: { group: { _eq: "勘定科目" } } }) | |
_eq?: FindValueBasicTypes | |
// <> (Not equal) | |
// .find({ filter: { group: { _neq: "勘定科目" } } }) | |
_neq?: FindValueBasicTypes | |
// LIKE "%something%" | |
// .find({ filter: { group: { _contains: "勘定科目" } } }) | |
_contains?: string | |
// NOT LIKE "%something%" | |
// .find({ filter: { group: { _ncontains: "勘定科目" } } }) | |
_ncontains?: string | |
// IN ('A', 'B', 'C') | |
// .find({ filter: { group: { _in: ["勘定科目", "経費種別"] } } }) | |
_in?: FindValueBasicTypes[] | |
// NOT IN ('A', 'B', 'C') | |
// .find({ filter: { group: { _nin: ["勘定科目", "経費種別"] } } }) | |
_nin?: FindValueBasicTypes[] | |
// 経費申請.日付(date)が 2021-10-01 〜 2021-10-31 (date型) | |
// await $core.$models.expenses.find({ filter: { date: { _between: ["2021-10-01", "2021-10-31"] } } }) | |
// 作成日が 2021-10-01 〜 2021-10-31 (datetime型) | |
// .find({ filter: { createdAt: { _between: ["2021-10-01 00:00:00", "2021-10-31 23:59:59"] } } }) | |
_between?: [FindValueBasicTypes, FindValueBasicTypes] | |
// 作成日が 2021-10-01 〜 2021-10-31 ではないもの (datetime型) | |
// .find({ filter: { createdAt: { _nbetween: ["2021-10-01 00:00:00", "2021-10-31 23:59:59"] } } }) | |
_nbetween?: [FindValueBasicTypes, FindValueBasicTypes] | |
// > 123 (Greater than なので gt) | |
// .find({ filter: { createdAt: { _gt: "2021-10-31 23:59:59" } } }) | |
_gt?: FindValueBasicTypes | |
// >= '2021-01-01' (Greater than equal なので gte) | |
// .find({ filter: { createdAt: { _gte: "2021-10-31 23:59:59" } } }) | |
_gte?: FindValueBasicTypes | |
// < '2021-01-01' (Less than なので lt) | |
// .find({ filter: { createdAt: { _lt: "2021-10-31 23:59:59" } } }) | |
_lt?: FindValueBasicTypes | |
// <= '2021-01-01' (Less than equal なので lte) | |
// .find({ filter: { createdAt: { _lte: "2021-10-31 23:59:59" } } }) | |
_lte?: FindValueBasicTypes | |
// IS NULL | |
_null?: true | |
// IS NOT NULL | |
_nnull?: true | |
// IS EMPTY | |
_empty?: true | |
// IS NOT EMPTY | |
_nempty?: true | |
_or?: { [columnName: string]: FindFilterOperations }[] // OR 条件でネスト可能 | |
_and?: { [columnName: string]: FindFilterOperations }[] // AND 条件でネスト可能 | |
} | |
/** | |
* OR条件の組み合わせ は 配列にする。 | |
* filter: { _or: [{...}, {...}] } | |
* 条件1: 作成日が10月以降のもの | |
* { createdAt: { _gte: "2021-10-01 00:00:00" } } | |
* または、条件2: group 名が 'taskStatus' のもの | |
* { group: {_eq: 'taskStatus'} } | |
* SQLで書くと: | |
* ```sql | |
* SELECT * FROM selectOptionsMaster | |
* WHERE | |
* `createdAt` >= "2021-10-01 00:00:00" | |
* OR | |
* `group` = 'taskStatus' | |
* ``` | |
*/ | |
await $core.$models.selectOptionsMaster.find({ | |
filter: { | |
_or: [ | |
{ createdAt: { _gte: "2021-10-01 00:00:00" } }, | |
{ group: {_eq: 'taskStatus'} }, | |
] | |
} | |
}) | |
/** | |
* OR条件とAND条件の組み合わせ: _or と _and を正しく利用する | |
* filter: { _or: [ { _and: [{...}, {...}]} , {...}] } | |
* 条件1: 作成日が10月以降のもので "勘定" をグループ名に含むもの | |
* { createdAt: { _gte: "2021-10-01 00:00:00" }, group: { _contains: "勘定"} } | |
* または、条件2: group 名が 'taskStatus' のもの | |
* { group: {_eq: 'taskStatus'} } | |
* SQLで書くと: | |
* ```sql | |
* SELECT * FROM selectOptionsMaster | |
* WHERE | |
* (`createdAt` >= "2021-10-01 00:00:00" AND `group` LIKE "%勘定%" ) | |
* OR | |
* (`group` = 'taskStatus') | |
* ``` | |
*/ | |
await $core.$models.selectOptionsMaster.find({ | |
filter: { | |
_or: [ | |
{ | |
_and: [ | |
{ createdAt: { _gte: "2021-10-01 00:00:00" } }, | |
{ group: { _contains: "勘定"} } | |
], | |
}, | |
{ group: {_eq: 'taskStatus'} }, | |
] | |
} | |
}) | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment