## 概要 [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からデータが取得できる ・メールが送信され、設定したアドレスで受信できる ## 補足 なし
71 lines
2.0 KiB
TypeScript
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,
|
|
});
|