This commit is contained in:
2015-08-10 16:45:39 +03:00
parent 43c5be9455
commit 0f7f97fe81
7 changed files with 31 additions and 32 deletions

6
gen.sh
View File

@@ -1,2 +1,6 @@
#!/bin/bash #!/bin/bash
haxelib run protohx generate protohx.json 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

View File

@@ -17,5 +17,4 @@
<haxeflag name="-dce" value="no"/> <haxeflag name="-dce" value="no"/>
<haxeflag name="-debug"/> <haxeflag name="-debug"/>
<haxeflag name="--macro" value="Meta.set('0.0.0')"/> <haxeflag name="--macro" value="Meta.set('0.0.0')"/>
<haxeflag name="--macro" value="include('ru.m.tankz')"/>
</project> </project>

View File

@@ -1,5 +1,6 @@
-main ru.m.tankz.server.Server -main ru.m.tankz.server.Server
-lib protohx -lib protohx
-lib orm
-lib haxework -lib haxework
-cp src/common/haxe -cp src/common/haxe
-cp src/server/haxe -cp src/server/haxe

View File

@@ -29,7 +29,7 @@ class JsConnection extends BaseConnection {
} }
private function buildSocket(host:String, port:Int):WebSocket { 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 { override public function connect():Void {

View File

@@ -16,22 +16,22 @@ class Server extends ThreadServer<Session, Bytes> {
super(); super();
} }
override function clientConnected(s:Socket):Session { override public function clientConnected(s:Socket):Session {
var session = new Session(s); var session = new Session(s);
L.d(TAG, "Client connected"); L.d(TAG, "Client connected");
return session; return session;
} }
override function clientDisconnected(session:Session) { override public function clientDisconnected(session:Session) {
L.d(TAG, "Client disconnected"); L.d(TAG, "Client disconnected");
session.onDisconnected(); 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}; 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); session.pushData(bytes);
} }

View File

@@ -1,9 +1,8 @@
package ru.m.tankz.server.db; package ru.m.tankz.server.db;
import ru.m.tankz.db.Orm;
import ru.m.tankz.proto.Person; import ru.m.tankz.proto.Person;
import ru.m.tankz.proto.Account; import ru.m.tankz.proto.Account;
import sys.db.Mysql;
import sys.db.Connection;
typedef DbPerson = { typedef DbPerson = {
@:optional var a_id:Int; @:optional var a_id:Int;
@@ -13,37 +12,33 @@ typedef DbPerson = {
class Db { class Db {
private var db:Connection; private var db:orm.Db;
private var orm:Orm;
public function new() { public function new() {
db = Mysql.connect({ db = new orm.Db("mysql://shmyga:xkbp8jh9z2@localhost:3306/armageddon");
host: "localhost", orm = new Orm(db);
port: 3306,
user: "shmyga",
pass: "xkbp8jh9z2",
socket: null,
database: "armageddon"
});
} }
public function getAccount(login:String, password:String):Null<Account> { public function getAccount(login:String, password:String):Null<Account> {
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 + "'"); var account = null;
if (!rset.hasNext()) return null; var accountModel = orm.account.getByLogin(login);
var account = new Account().setLogin(login); if (accountModel != null && accountModel.password == password) {
while (rset.hasNext()) { account = new Account().setLogin(accountModel.login);
var data:DbPerson = rset.next(); var personsModels = orm.person.getByAccount_id(accountModel.id);
account.setId(data.a_id); for (personModel in personsModels) {
if (data.p_name != null) { account.addPersons(new Person().setId(personModel.id).setName(personModel.name));
account.addPersons(new Person().setId(data.p_id).setName(data.p_name));
} }
} }
return account; return account;
} }
public function getPerson(account_id:Int, person_id:Int):Null<Person> { public function getPerson(person_id:Int):Null<Person> {
var rset = db.request("SELECT id AS p_id, name AS p_name FROM person WHERE id=" + person_id + " AND account_id=" + account_id); var person = null;
if (!rset.hasNext()) return null; var personModel = orm.person.get(person_id);
var data:DbPerson = rset.next(); if (personModel != null) {
return new Person().setId(data.p_id).setName(data.p_name); person = new Person().setId(personModel.id).setName(personModel.name);
}
return person;
} }
} }

View File

@@ -151,7 +151,7 @@ class Session implements IConnectionHandler implements IPacketHandler {
public function onPersonSelectRequest(packet:PersonSelectRequest):Void { public function onPersonSelectRequest(packet:PersonSelectRequest):Void {
var db = new Db(); var db = new Db();
var person = db.getPerson(account.id, packet.personId); var person = db.getPerson(packet.personId);
if (person != null) { if (person != null) {
this.person = person; this.person = person;
connection.send(new PersonSelectResponse().setPerson(person)); connection.send(new PersonSelectResponse().setPerson(person));