OMDSCloud/dictation_function/src/functions/timerTriggerExample.ts
oura.a 86d17d6729 Merged PR 552: dictation_serverからソースコードを複製
## 概要
[Task2977: dictation_serverからソースコードを複製](https://paruru.nds-tyo.co.jp:8443/tfs/ReciproCollection/fa4924a4-d079-4fab-9fb5-a9a11eb205f0/_workitems/edit/2977)

新たに構築したdictation_functionで以下のことをできるようにしました。
・RDBへの接続
・sendgridでのメール送信
・jestでのテスト実行
※とりあえず動くことを目標としているため、DB接続のパラメータやsendgridのAPIキーなどがベタ打ちになっています。機能実装時には外出ししたファイルから読み込めるようにします。

## レビューポイント
・フォルダ構成は適切か
・RDB、sendgrid、jestに関するもので不足しているものがないか
・今後機能開発を始めるにあたり、他に必要なものがないか

## UIの変更
なし

## 動作確認状況
ローカルでjestによるテストを実施し、以下を確認
・RDBからデータが取得できる
・メールが送信され、設定したアドレスで受信できる

## 補足
なし
2023-11-08 00:46:26 +00:00

71 lines
2.0 KiB
TypeScript

import { app, InvocationContext, Timer } from "@azure/functions";
import { DataSource } from "typeorm";
import { User } from "../entity/user.entity";
import { SendGridService } from "../sendgrid/sendgrid.service";
import * as dotenv from "dotenv";
// タイマートリガー処理のサンプルです
// TODO:開発が進んだら削除すること
export async function timerTriggerExample(
myTimer: Timer,
context: InvocationContext
): Promise<void> {
context.log("Timer function processed request.");
dotenv.config({ path: ".env" });
const datasource = new DataSource({
type: "mysql",
host: process.env.DB_HOST,
port: Number(process.env.DB_PORT),
username: process.env.DB_USERNAME,
password: process.env.DB_PASSWORD,
database: process.env.DB_NAME,
entities: [User],
});
try {
await datasource.initialize();
const userRepository = datasource.getRepository(User); // Userエンティティに対応するリポジトリを取得
// ユーザーを検索
const users = await userRepository.find();
console.log(users);
} catch (e) {
console.error(e);
} finally {
await datasource.destroy();
}
}
// test実行確認用サンプル
// TODO:開発が進んだら削除すること
export async function testExample(datasource: DataSource): Promise<User[]> {
let users: User[];
const userRepository = datasource.getRepository(User); // Userエンティティに対応するリポジトリを取得
// ユーザーを検索
users = await userRepository.find();
return users;
}
// test実行確認用サンプル
// TODO:開発が進んだら削除すること
export async function testSendgridExample(): Promise<string> {
const sendgrid = new SendGridService();
// メールを送信
await sendgrid.sendMail(
"oura.a89@gmail.com",
process.env.MAIL_FROM,
"testMail",
"test!",
"html"
);
return "sucsess";
}
app.timer("timerTriggerExample", {
schedule: "0 */1 * * * *",
handler: timerTriggerExample,
});