diff --git a/src/actions/api.ts b/src/actions/api.ts index c4d6a95..25e2ab3 100644 --- a/src/actions/api.ts +++ b/src/actions/api.ts @@ -44,7 +44,7 @@ export abstract class ApiResponseHandler { try { const response = await this.axiosInstance.post(url, data); // console.log("SUCCESS:", response.data); - console.log("post", url, response.status); + console.log("post", url, response.status, data); // console.log("Response Headers: ", response.headers); return response.data; } catch (error) { diff --git a/src/actions/asset.ts b/src/actions/asset.ts index 16b3d39..1d099df 100644 --- a/src/actions/asset.ts +++ b/src/actions/asset.ts @@ -102,37 +102,6 @@ export interface AssetModel { } export class Asset extends ApiResponseHandler { - private formatDate(date: Date): string { - const year = date.getFullYear(); - const month = date.getMonth() + 1; // getMonth() は0から始まるため、+1する - const day = date.getDate(); - - return `${year}/${month}/${day}`; - } - - public async addAsset( - accountString: string, - assetSubclassId: AssetSubclass, - assetName: string, - assetValue: number, - assetEntryValue?: number, - assetEntryAt?: Date - ) { - const postData = { - "user_asset_det[id]": "", - "user_asset_det[sub_account_id_hash]": accountString.split("@")[1], - "user_asset_det[asset_subclass_id]": assetSubclassId, - "user_asset_det[name]": assetName, - "user_asset_det[value]": assetValue, - "user_asset_det[entried_price]": - assetEntryValue !== undefined ? assetEntryValue : "", - "user_asset_det[entried_at]": assetEntryAt - ? this.formatDate(assetEntryAt) - : "", - }; - return this.post("/bs/portfolio/new", postData); - } - public async getAssets(accountString: string): Promise { const url = `/accounts/show_manual/${accountString.split("@")[0]}`; @@ -189,6 +158,28 @@ export class Asset extends ApiResponseHandler { }); } + public async addAsset( + accountString: string, + assetSubclassId: AssetSubclass, + assetName: string, + assetValue: number, + assetEntryValue?: number, + assetEntryAt?: string + ) { + const postData = { + "user_asset_det[id]": "", + "user_asset_det[sub_account_id_hash]": accountString.split("@")[1], + "user_asset_det[asset_subclass_id]": assetSubclassId, + "user_asset_det[name]": assetName, + "user_asset_det[value]": assetValue, + "user_asset_det[entried_price]": + assetEntryValue !== undefined ? assetEntryValue : "", + "user_asset_det[entried_at]": + assetEntryAt !== undefined ? assetEntryAt : "", + }; + return this.post("/bs/portfolio/new", postData); + } + public async deleteAsset( accountString: string, assetId: string @@ -209,7 +200,7 @@ export class Asset extends ApiResponseHandler { assetName: string, assetValue: number, assetEntryValue?: number, - assetEntryAt?: Date + assetEntryAt?: string ): Promise { const postData = { _method: "put", @@ -220,9 +211,8 @@ export class Asset extends ApiResponseHandler { "user_asset_det[value]": assetValue, "user_asset_det[entried_price]": assetEntryValue !== undefined ? assetEntryValue : "", - "user_asset_det[entried_at]": assetEntryAt - ? this.formatDate(assetEntryAt) - : "", + "user_asset_det[entried_at]": + assetEntryAt !== undefined ? assetEntryAt : "", }; return this.post("/bs/portfolio/edit", postData); } diff --git a/src/main.ts b/src/main.ts index 67dcb4a..d57f896 100644 --- a/src/main.ts +++ b/src/main.ts @@ -92,14 +92,17 @@ async function main() { async (req: Request, res: Response) => { try { const { accountString } = req.params; - const { assetSubclassId, name, value } = req.body; + const { assetSubclassId, name, value, entriedPrice, entriedAt } = + req.body; const _assetSubclassId = AssetSubclass[assetSubclassId as keyof typeof AssetSubclass]; await assetController.addAsset( accountString, _assetSubclassId, name, - value + value, + entriedPrice, + entriedAt ); res.status(201).send(); } catch (error) { @@ -131,7 +134,8 @@ async function main() { async (req: Request, res: Response) => { try { const { accountString, assetId } = req.params; - const { assetSubclassId, name, value } = req.body; + const { assetSubclassId, name, value, entriedPrice, entriedAt } = + req.body; const _assetSubclassId = AssetSubclass[assetSubclassId as keyof typeof AssetSubclass]; await assetController.updateAsset( @@ -139,7 +143,9 @@ async function main() { assetId, _assetSubclassId, name, - value + value, + entriedPrice, + entriedAt ); res.status(204).send(); } catch (error) { diff --git a/src/openapi.yaml b/src/openapi.yaml index dedd20c..4780dfa 100644 --- a/src/openapi.yaml +++ b/src/openapi.yaml @@ -124,7 +124,9 @@ paths: schema: type: string requestBody: - description: assetSubclassIdは変更することができず、変更前と同じにする必要があります。 + description: | + * `assetSubclassId`は変更できません。必ず同じ値を指定する必要があります。 + * `entriedPrice`, `entriedAt`は指定がなければ値が初期化されます。 required: true content: application/json: @@ -158,19 +160,18 @@ components: description: 資産名 example: "USD/JPY" value: - type: number - format: float + type: integer description: 資産価値 example: 100 entriedPrice: - type: number - format: float + type: integer description: システム登録時の価格 example: 90 nullable: true entriedAt: type: string description: システム登録日 + pattern: '^\d{4}/\d{2}/\d{2}$' example: "2022/01/01" nullable: true AssetSubclass: