Last active
July 26, 2022 08:11
-
-
Save kwbtdisk/cffe95a2003ba2905170ea61406fb4d6 to your computer and use it in GitHub Desktop.
CORE DBと接続するスクリプトの記述方法 (方針概要: DB接続して云々処理するService class を作成し、APIでもバッチでも読み出して実施する)
This file contains hidden or 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
import { SampleCalcService } from '../models/services/SampleCalcService' | |
const run = async () => { | |
console.log('run!') | |
const ins = new SampleCalcService() | |
await ins.run() | |
const s = 'sss' | |
return {status: 'ok'} | |
} | |
run().then((res) => { | |
console.log(res) | |
process.exit(0) | |
}).catch((res) => { | |
console.log(res) | |
process.exit(1) | |
}) |
This file contains hidden or 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
/** | |
- 方針概要: DB接続して云々処理するService class を作成し、APIでもバッチでも読み出して実施する | |
- 開発中は、コマンド叩いて実行、デバッグできるように構成したほうがやりやすい | |
- [x] debugger で呼び出して、intellij のブレークポイントでデバッグできるように | |
- デバッグ用スクリプト `script/debug.ts` に | |
- [x] Service class を作成 | |
- [x] DB接続を記述, CLIでデバッグできるように | |
- database接続の取得: | |
- Nodejs の ORM Knex https://knexjs.org/ の接続インスタンスが取得できる | |
*/ | |
import {Knex} from 'knex' | |
const database: Knex = require('directus/database/index').default() | |
const directusServices = require('directus/services/index') | |
const {getSchema} = require('directus/utils/get-schema') | |
export class SampleCalcService { | |
constructor() { | |
} | |
async run() { | |
const schema = await getSchema() | |
const modelName = 'selectOptionsMaster' | |
const demoCompanyItemService = new directusServices.ItemsService(modelName, { | |
accountability: null, | |
schema, | |
}) | |
const data = await demoCompanyItemService.readByQuery({ | |
filter: { | |
group: { | |
_eq: 'category' | |
} | |
} | |
}) | |
const sql = ` | |
SELECT * FROM selectOptionsMaster WHERE id >= 1 | |
` | |
const rawQueryResult = await demoCompanyItemService.knex.raw(sql) | |
const altResult = await database.raw(sql) | |
// const queryBuilder = database('selectOptionsMaster') | |
// queryBuilder.where('id', '>=', 1).andWhere // knex | |
console.log(data) | |
console.log(rawQueryResult) | |
console.log(altResult) | |
console.log('SampleCalcService.run') | |
await demoCompanyItemService.createOne({ | |
value: 'Added' | |
}) | |
await demoCompanyItemService.upsertOne({ | |
id: 1, | |
value: 'Addedddddd' | |
}) | |
// const savedRecordIds = await demoCompanyItemService.upsertMany([]) | |
// const savedRecords = await demoCompanyItemService.readMany(savedRecordIds) | |
// await demoCompanyItemService.deleteMany() | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment