Skip to content

Commit

Permalink
Merge pull request #691 from NUTFes/fix/Kubosaka/690-fix-expenses
Browse files Browse the repository at this point in the history
[fix]expensesのテーブル名変更
  • Loading branch information
Kubosaka authored Mar 4, 2024
2 parents da0ad94 + 3627860 commit 7d9a788
Show file tree
Hide file tree
Showing 3 changed files with 135 additions and 27 deletions.
18 changes: 9 additions & 9 deletions api/externals/repository/expense_repository.go
Original file line number Diff line number Diff line change
Expand Up @@ -31,19 +31,19 @@ func NewExpenseRepository(c db.Client, ac abstract.Crud) ExpenseRepository {
}

func (er *expenseRepository) All(c context.Context) (*sql.Rows, error) {
query := "SELECT * FROM expense"
query := "SELECT * FROM expenses"
return er.crud.Read(c, query)
}

func (er *expenseRepository) Find(c context.Context, id string) (*sql.Row, error) {
query := "SELECT * FROM expense WHERE id = " + id
query := "SELECT * FROM expenses WHERE id = " + id
return er.crud.ReadByID(c, query)
}

func (er *expenseRepository) Create(c context.Context, name string, yearID string) error {
query := `
INSERT INTO
expense (expense_name,yearID)
expenses (expense_name,yearID)
VALUES
('` + name + "'," + yearID + ")"
return er.crud.UpdateDB(c, query)
Expand All @@ -52,20 +52,20 @@ func (er *expenseRepository) Create(c context.Context, name string, yearID strin
func (er *expenseRepository) Update(c context.Context, id string, name string, yearID string) error {
query := `
UPDATE
expense
expenses
SET expense_name = '` + name +
"', yearID = " + yearID +
" WHERE id = " + id
return er.crud.UpdateDB(c, query)
}

func (er *expenseRepository) Destroy(c context.Context, id string) error {
query := "DELETE FROM expense WHERE id = " + id
query := "DELETE FROM expenses WHERE id = " + id
return er.crud.UpdateDB(c, query)
}

func (er *expenseRepository) FindLatestRecord(c context.Context) (*sql.Row, error) {
query := `SELECT * FROM expense ORDER BY id DESC LIMIT 1`
query := `SELECT * FROM expenses ORDER BY id DESC LIMIT 1`
return er.crud.ReadByID(c, query)
}

Expand Down Expand Up @@ -114,13 +114,13 @@ func (er *expenseRepository) AllByPeriod(c context.Context, year string) (*sql.R
SELECT
*
FROM
expense
expenses
INNER JOIN
years
ON
expense.yearID = years.id
expenses.yearID = years.id
WHERE
years.year = ` + year +
" ORDER BY expense.id;"
" ORDER BY expenses.id;"
return er.crud.Read(c, query)
}
36 changes: 18 additions & 18 deletions mysql/db/expense.sql → mysql/db/expenses.sql
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
use finansu_db;

CREATE TABLE expense (
CREATE TABLE expenses (
id int(10) unsigned not null auto_increment,
expense_name varchar(255) not null,
totalPrice int(10) default 0,
Expand All @@ -10,16 +10,16 @@ CREATE TABLE expense (
PRIMARY KEY (id)
);

INSERT into expense (expense_name,yearID) values ("企画局",2);
INSERT into expense (expense_name,yearID) values ("総務局",2);
INSERT into expense (expense_name,yearID) values ("情報局",2);
INSERT into expense (expense_name,yearID) values ("制作局",2);
INSERT into expense (expense_name,yearID) values ("渉外局",2);
INSERT into expense (expense_name,yearID) values ("財務局",2);
INSERT into expense (expense_name,yearID) values ("本部運営費",2);
INSERT into expense (expense_name,yearID) values ("備品整備費",2);
INSERT into expense (expense_name,yearID) values ("備品整備準備費",2);
INSERT into expense (expense_name,yearID) values ("翌年度繰越金",2);
INSERT into expenses (expense_name,yearID) values ("企画局",2);
INSERT into expenses (expense_name,yearID) values ("総務局",2);
INSERT into expenses (expense_name,yearID) values ("情報局",2);
INSERT into expenses (expense_name,yearID) values ("制作局",2);
INSERT into expenses (expense_name,yearID) values ("渉外局",2);
INSERT into expenses (expense_name,yearID) values ("財務局",2);
INSERT into expenses (expense_name,yearID) values ("本部運営費",2);
INSERT into expenses (expense_name,yearID) values ("備品整備費",2);
INSERT into expenses (expense_name,yearID) values ("備品整備準備費",2);
INSERT into expenses (expense_name,yearID) values ("翌年度繰越金",2);


-- 終端文字の変更
Expand Down Expand Up @@ -102,23 +102,23 @@ GROUP BY

-- tmp2のデータをexpeneseに入れる
UPDATE
expense
expenses
INNER JOIN
tmp2
ON
expense.id = tmp2.id
expenses.id = tmp2.id
SET
expense.totalPrice = tmp2.totalPrice;
expenses.totalPrice = tmp2.totalPrice;

-- tmp2のidがNULLのexpenseのtotalPriceを0にする
-- tmp2のidがNULLのexpensesのtotalPriceを0にする
UPDATE
expense
expenses
LEFT JOIN
tmp2
ON
expense.id = tmp2.id
expenses.id = tmp2.id
SET
expense.totalPrice = 0
expenses.totalPrice = 0
WHERE
tmp2.id IS NULL;

Expand Down
108 changes: 108 additions & 0 deletions mysql/feature/add_procedure.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,108 @@
-- 終端文字の変更
DELIMITER //
-- ストアドプロシージャ作成
CREATE PROCEDURE updateExpense()
BEGIN

-- 1 テンポラリテーブル作成tmp,tmp
CREATE TEMPORARY TABLE tmp (
id int(10) NOT NULL,
totalPrice int(10),
purchase_reports_id int(10),
addition int(10),
discount int(10),
expense_id int(10),
finance_check boolean,
PRIMARY KEY (`id`)
);

CREATE TEMPORARY TABLE tmp2 (
id int(10) NOT NULL,
totalPrice int(10) NOT NULL,
PRIMARY KEY (`id`)
);

-- 2 mpにpurchase_itemsのfinansu_checkがtrueのものをpurchase_orderごとに和を入れる
INSERT INTO
tmp(id,totalPrice)
SELECT
pi.purchase_order_id,
SUM(pi.price * pi.quantity)
FROM
purchase_items pi
WHERE
pi.finance_check IS true
GROUP BY
pi.purchase_order_id;

-- 3 tmpにpurhchase_reportsのデータを入れる
UPDATE
tmp
INNER JOIN
purchase_reports pr
ON
tmp.id = pr.purchase_order_id
SET
tmp.purchase_reports_id = pr.id,
tmp.addition = pr.addition,
tmp.discount = pr.discount,
tmp.finance_check = pr.finance_check;

-- tmpにpurchaser_ordersのexpense_idを入れる
UPDATE
tmp
INNER JOIN
purchase_orders po
ON
tmp.id = po.id
SET
tmp.expense_id = po.expense_id
WHERE
po.finance_check IS true;

-- expense_idがNULLのレコードを削除する
DELETE FROM tmp WHERE expense_id IS NULL;

-- tmpのデータをexpense_idごとにまとめて総和を求める、データをtmp2に入れる
INSERT INTO
tmp2(id, totalPrice)
SELECT
tmp.expense_id,
SUM(tmp.totalPrice + tmp.addition - tmp.discount)
FROM
tmp
WHERE
tmp.finance_check IS true
GROUP BY
tmp.expense_id;

-- tmp2のデータをexpeneseに入れる
UPDATE
expenses
INNER JOIN
tmp2
ON
expenses.id = tmp2.id
SET
expenses.totalPrice = tmp2.totalPrice;

-- tmp2のidがNULLのexpensesのtotalPriceを0にする
UPDATE
expenses
LEFT JOIN
tmp2
ON
expenses.id = tmp2.id
SET
expenses.totalPrice = 0
WHERE
tmp2.id IS NULL;

-- テンポラリテーブル削除
DROP TEMPORARY TABLE tmp,tmp2;

END;
//

-- 終端文字戻す
DELIMITER ;

0 comments on commit 7d9a788

Please sign in to comment.