object DatabaseConnection { this: LoginDevice =>
val Connection = ...
class LoginDevice {
val prep = Connection.prepareStatement("SELECT * FROM USER WHERE NAME = ?")
def login(username: String, password: String) = {
prep.setString(1, username)
val rs = prep.executeQuery
if (!rs.next)
throw User404
new User(rs.getString("Name"), ...)
}
}
}
object RequestHandler {
type Request = (String, String)
def handle(request: Request) = request._1 match {
case "Login" => {
val info = request._2.split(",")
DatabaseConnection.login(info(0), info(1)) // SYNTAX ERROR
}
case _ => throw new Exception("Request type is not valid.")
}
}
ここで、DatabaseConnection を、独自の準備済みステートメントなどを持つ「デバイス」に分割したいと考えています。ただし、それらはすべてこの 1 つのConnection
インスタンスを参照する必要があります。内部関数を外部から呼び出せるようにしたい。
これらの関数の名前を変更せずにこれを行う最善の方法は何ですか?
ところで、短いテキストは申し訳ありませんが、私の手は本当に無効になっています。