多くの開発者はSQLをうまく書けるわけではないから、DBを簡単に操作するインタフェースを Table Data Gateway で用意する。
# ex.
# Items
# id integer primary key
# name varchar(255)
# description text
class ItemGateway
def initialize(driver)
@driver = driver
end
def find(id)
result = @driver.execute("SELECT ... FROM ... ", id)
{
id: result[0],
name: result[1],
description: result[2],
}
end
def insert(name, description)
@driver.execute("INSERT INTO ...", [name, description])
end
def update(id, name, description)
@driver.execute("UPDATE ...", [id, name, description])
end
end
値を返す場合の型が問題。一つの値だったり複数の列だったりする。
- map . シンプルで良いがコンパイル時の検査が働かないためスペルミスなどでバグになりそう
- Data Transfer Object (401p)
- Record Set (508p)
- Domain Model を使っている場合には適した domain object を使って返すのものよい