Skip to content

Instantly share code, notes, and snippets.

@kwbtdisk
Last active July 26, 2022 08:11
Show Gist options
  • Save kwbtdisk/cffe95a2003ba2905170ea61406fb4d6 to your computer and use it in GitHub Desktop.
Save kwbtdisk/cffe95a2003ba2905170ea61406fb4d6 to your computer and use it in GitHub Desktop.
CORE DBと接続するスクリプトの記述方法 (方針概要: DB接続して云々処理するService class を作成し、APIでもバッチでも読み出して実施する)
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)
})
/**
- 方針概要: 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