From 0f7f97fe818f2c4bbadba12e96bdfd8c67909a62 Mon Sep 17 00:00:00 2001 From: shmyga Date: Mon, 10 Aug 2015 16:45:39 +0300 Subject: [PATCH] use orm --- gen.sh | 6 ++- project.xml | 1 - server.hxml | 1 + .../haxe/ru/m/core/connect/js/JsConnection.hx | 2 +- src/server/haxe/ru/m/tankz/server/Server.hx | 8 ++-- src/server/haxe/ru/m/tankz/server/db/Db.hx | 43 ++++++++----------- .../haxe/ru/m/tankz/server/session/Session.hx | 2 +- 7 files changed, 31 insertions(+), 32 deletions(-) diff --git a/gen.sh b/gen.sh index ad60a80..aa7f9e8 100755 --- a/gen.sh +++ b/gen.sh @@ -1,2 +1,6 @@ #!/bin/bash -haxelib run protohx generate protohx.json \ No newline at end of file +haxelib run protohx generate protohx.json +haxelib run orm mysql://shmyga:xkbp8jh9z2@localhost:3306/armageddon \ + -s src-gen/haxe \ + -c ru.m.tankz.db \ + -a ru.m.tankz.db \ No newline at end of file diff --git a/project.xml b/project.xml index 9f0d172..e406eb8 100755 --- a/project.xml +++ b/project.xml @@ -17,5 +17,4 @@ - \ No newline at end of file diff --git a/server.hxml b/server.hxml index b8822b9..7a1392c 100755 --- a/server.hxml +++ b/server.hxml @@ -1,5 +1,6 @@ -main ru.m.tankz.server.Server -lib protohx +-lib orm -lib haxework -cp src/common/haxe -cp src/server/haxe diff --git a/src/common/haxe/ru/m/core/connect/js/JsConnection.hx b/src/common/haxe/ru/m/core/connect/js/JsConnection.hx index 6772511..3ad0f64 100644 --- a/src/common/haxe/ru/m/core/connect/js/JsConnection.hx +++ b/src/common/haxe/ru/m/core/connect/js/JsConnection.hx @@ -29,7 +29,7 @@ class JsConnection extends BaseConnection { } private function buildSocket(host:String, port:Int):WebSocket { - return untyped __js__("self.socket = new WebSocket('ws://'+host+':'+port); "); + return untyped __js__("new WebSocket('ws://'+host+':'+port);"); } override public function connect():Void { diff --git a/src/server/haxe/ru/m/tankz/server/Server.hx b/src/server/haxe/ru/m/tankz/server/Server.hx index f17f337..6f9c2ad 100755 --- a/src/server/haxe/ru/m/tankz/server/Server.hx +++ b/src/server/haxe/ru/m/tankz/server/Server.hx @@ -16,22 +16,22 @@ class Server extends ThreadServer { super(); } - override function clientConnected(s:Socket):Session { + override public function clientConnected(s:Socket):Session { var session = new Session(s); L.d(TAG, "Client connected"); return session; } - override function clientDisconnected(session:Session) { + override public function clientDisconnected(session:Session) { L.d(TAG, "Client disconnected"); session.onDisconnected(); } - override function readClientMessage(session:Session, buf:Bytes, pos:Int, len:Int) { + override public function readClientMessage(session:Session, buf:Bytes, pos:Int, len:Int) { return {msg: buf.sub(pos, len), bytes: len}; } - override function clientMessage(session:Session, bytes:Bytes) { + override public function clientMessage(session:Session, bytes:Bytes) { session.pushData(bytes); } diff --git a/src/server/haxe/ru/m/tankz/server/db/Db.hx b/src/server/haxe/ru/m/tankz/server/db/Db.hx index e8708c5..591fdd4 100755 --- a/src/server/haxe/ru/m/tankz/server/db/Db.hx +++ b/src/server/haxe/ru/m/tankz/server/db/Db.hx @@ -1,9 +1,8 @@ package ru.m.tankz.server.db; +import ru.m.tankz.db.Orm; import ru.m.tankz.proto.Person; import ru.m.tankz.proto.Account; -import sys.db.Mysql; -import sys.db.Connection; typedef DbPerson = { @:optional var a_id:Int; @@ -13,37 +12,33 @@ typedef DbPerson = { class Db { - private var db:Connection; + private var db:orm.Db; + private var orm:Orm; public function new() { - db = Mysql.connect({ - host: "localhost", - port: 3306, - user: "shmyga", - pass: "xkbp8jh9z2", - socket: null, - database: "armageddon" - }); + db = new orm.Db("mysql://shmyga:xkbp8jh9z2@localhost:3306/armageddon"); + orm = new Orm(db); } public function getAccount(login:String, password:String):Null { - var rset = db.request("SELECT a.id AS a_id, p.id AS p_id, p.name AS p_name FROM account AS a LEFT OUTER JOIN person AS p ON(a.id=p.account_id) WHERE a.login='" + login + "' AND a.password='" + password + "'"); - if (!rset.hasNext()) return null; - var account = new Account().setLogin(login); - while (rset.hasNext()) { - var data:DbPerson = rset.next(); - account.setId(data.a_id); - if (data.p_name != null) { - account.addPersons(new Person().setId(data.p_id).setName(data.p_name)); + var account = null; + var accountModel = orm.account.getByLogin(login); + if (accountModel != null && accountModel.password == password) { + account = new Account().setLogin(accountModel.login); + var personsModels = orm.person.getByAccount_id(accountModel.id); + for (personModel in personsModels) { + account.addPersons(new Person().setId(personModel.id).setName(personModel.name)); } } return account; } - public function getPerson(account_id:Int, person_id:Int):Null { - var rset = db.request("SELECT id AS p_id, name AS p_name FROM person WHERE id=" + person_id + " AND account_id=" + account_id); - if (!rset.hasNext()) return null; - var data:DbPerson = rset.next(); - return new Person().setId(data.p_id).setName(data.p_name); + public function getPerson(person_id:Int):Null { + var person = null; + var personModel = orm.person.get(person_id); + if (personModel != null) { + person = new Person().setId(personModel.id).setName(personModel.name); + } + return person; } } \ No newline at end of file diff --git a/src/server/haxe/ru/m/tankz/server/session/Session.hx b/src/server/haxe/ru/m/tankz/server/session/Session.hx index 77783f0..359b4f3 100755 --- a/src/server/haxe/ru/m/tankz/server/session/Session.hx +++ b/src/server/haxe/ru/m/tankz/server/session/Session.hx @@ -151,7 +151,7 @@ class Session implements IConnectionHandler implements IPacketHandler { public function onPersonSelectRequest(packet:PersonSelectRequest):Void { var db = new Db(); - var person = db.getPerson(account.id, packet.personId); + var person = db.getPerson(packet.personId); if (person != null) { this.person = person; connection.send(new PersonSelectResponse().setPerson(person));