SuzukiTakamasa / Casaparo

0 stars 0 forks source link

確定済みの家計簿をUIを変更する(明細を見れるようにする) #34

Open SuzukiTakamasa opened 3 months ago

SuzukiTakamasa commented 3 months ago
SuzukiTakamasa commented 3 months ago

①constants.tsのHouseholdMonthlySummaryにdetail(string)フィールド追加 ②models.rsのHouseholdMonthlySummaryにdetail(String)フィールド追加 ③schema_completed_households.sqlを以下に修正 DROP TABLE IF EXISTS completed_households; CREATE TABLE completed_households ( id INTEGER PRIMARY KEY AUTOINCREMENT, year INTEGER NOT NULL, month INTEGER NOT NULL, billing_amount INTEGER NOT NULL, total_amount INTEGER NOT NULL, detail TEXT NOT NULL ); detailは、現状取得しているhouseholdsのオブジェクトをstringifyしたものを送信するようにする

SuzukiTakamasa commented 3 months ago

以下Claude 3.5の回答

.get_async("/completed_household/monthly_summary/:year", |req, ctx| async move {
            let year = ctx.param("year").unwrap();
            let db_str = match get_db_env(&req) {
                Ok(val) => val,
                Err(e) => return Response::error(e.to_string(), 400)
            };

            let d1 = ctx.env.d1(db_str.as_str())?;
            let statement = d1.prepare("SELECT month, detail, billing_amount, total_amount FROM completed_households WHERE year = ?1");
            let query = statement.bind(&[year.into()])?;
            let result = match query.all().await {
                Ok(res) => res,
                Err(e) => {
                    console_log!("{:?}", e);
                    return Response::error("Error querying database", 500)
                }
            };

            let monthly_summary: Result<Vec<HouseholdMonthlySummary>, worker::Error> = result.results::<(u8, String, u32, u32)>()?
                .into_iter()
                .map(|(month, detail_json, billing_amount, total_amount)| {
                    let detail: Vec<Detail> = serde_json::from_str(&detail_json).map_err(|e| {
                        console_log!("Error parsing detail JSON: {:?}", e);
                        worker::Error::RustError(format!("Failed to parse detail JSON for month {}", month))
                    })?;

                    Ok(HouseholdMonthlySummary {
                        month,
                        detail,
                        billing_amount,
                        total_amount,
                    })
                })
                .collect();

            match monthly_summary {
                Ok(data) => Response::from_json(&data),
                Err(e) => {
                    console_log!("{:?}", e);
                    Response::error("Error parsing results", 500)
                }
            }
        })
SuzukiTakamasa commented 2 weeks ago

明細が表示されるように対応済み 残対応としては