Compare commits
2 Commits
edc1ea081f
...
853f5eba26
| Author | SHA1 | Date | |
|---|---|---|---|
| 853f5eba26 | |||
| 6962885582 |
@ -1,9 +1,11 @@
|
||||
-lib tink_http
|
||||
-lib tink_web
|
||||
-lib tink_core
|
||||
#-lib tink_hxx
|
||||
-lib tink_json
|
||||
-lib tink_sql
|
||||
-lib hxnodejs
|
||||
# -D await_catch_none
|
||||
-cp src
|
||||
--main Server
|
||||
-js build/out.js
|
||||
|
||||
1187
api/package-lock.json
generated
1187
api/package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@ -10,6 +10,7 @@
|
||||
"license": "ISC",
|
||||
"dependencies": {
|
||||
"mysql": "^2.18.1",
|
||||
"sqlite": "^4.1.2",
|
||||
"sqlite3": "^5.0.11"
|
||||
}
|
||||
}
|
||||
|
||||
@ -10,6 +10,7 @@ import model.MUser;
|
||||
import controller.IDGen;
|
||||
import controller.User;
|
||||
|
||||
import db.Db.Database as Db;
|
||||
|
||||
|
||||
|
||||
@ -23,6 +24,7 @@ class Server {
|
||||
.recover(OutgoingResponse.reportError);
|
||||
});
|
||||
}
|
||||
public static var db:
|
||||
}
|
||||
|
||||
class Root {
|
||||
@ -63,10 +65,10 @@ class Root {
|
||||
public function user()
|
||||
return new User();
|
||||
|
||||
@:sub('/projects')
|
||||
@:produces('application/json')
|
||||
public function projects()
|
||||
return new Projects();
|
||||
// @:sub('/projects')
|
||||
// @:produces('application/json')
|
||||
// public function projects()
|
||||
// return new Projects();
|
||||
|
||||
@:get('/hello')
|
||||
@:produces('application/json')
|
||||
|
||||
@ -3,13 +3,19 @@ package controller;
|
||||
import haxe.Json;
|
||||
import Utils;
|
||||
import db.Db;
|
||||
import tink.sql.Fields;
|
||||
import model.MUser;
|
||||
import tink.core.*;
|
||||
|
||||
using Lambda;
|
||||
using tink.CoreApi;
|
||||
|
||||
|
||||
class User{
|
||||
|
||||
@await private static var database:Db = new Db_DrivebyCool('db.sqlite', driver);
|
||||
public function new() {}
|
||||
public static var driver = new tink.sql.drivers.Sqlite();
|
||||
@await public static var db = new Db('db.sqlite', driver);
|
||||
|
||||
|
||||
|
||||
@:get('/')
|
||||
@ -19,25 +25,88 @@ class User{
|
||||
return json;
|
||||
}
|
||||
|
||||
@:get('/registerDummyUser')
|
||||
@:produces('text/plain')
|
||||
public function registerdummyuser(){
|
||||
|
||||
// @await public function createUserTable():Promise<Bool>
|
||||
// {
|
||||
// // @await var status:Promise<Bool> =;
|
||||
// @await var op = db.MUser.create();
|
||||
// op.handle(function(outcome){
|
||||
// switch outcome {
|
||||
// case Success(data):
|
||||
// trace(data);
|
||||
// return data;
|
||||
// case Failure(e):
|
||||
// trace("failure: "+e);
|
||||
// return e.data;
|
||||
// }
|
||||
// });
|
||||
// return true;
|
||||
// }
|
||||
@await public function createUserTable():Promise<Bool>
|
||||
{
|
||||
// @await var status:Promise<Bool> =;
|
||||
@await var op = db.MUser.create();
|
||||
op.handle(function(outcome){
|
||||
switch outcome {
|
||||
case Success(data):
|
||||
trace(data);
|
||||
//return data;
|
||||
case Failure(e):
|
||||
trace("failure: "+e);
|
||||
//return e.data;
|
||||
}
|
||||
});
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@:get('/registerDummyUser')
|
||||
@:produces('application/json')
|
||||
public function registerdummyuser(){
|
||||
//@await var db = new Db('daba2', driver);
|
||||
db.MUser.create().next(function(){
|
||||
db.MUser.insertOne({
|
||||
// var failed:tink.core.Next<tink.sql.Id<model.MUser>> = null
|
||||
return createUserTable().next(function(_){
|
||||
return db.MUser.insertOne({
|
||||
id: cast null,
|
||||
name: 'Alice',
|
||||
email: 'alice@example.com',
|
||||
password: 'jew'
|
||||
}).next(function(){
|
||||
db.MUser.select({name: MUser.name, email: MUser.email}).where(MUser.email == 'alice@example.com').first().next(function(row) {
|
||||
trace(row.name);
|
||||
// return "$row";
|
||||
});
|
||||
});
|
||||
}).next(function(_){
|
||||
return db.MUser.select({id: MUser.id, name: MUser.name, email: MUser.email, password: MUser.password}).where(MUser.id == _).first().next(function(row) {
|
||||
return row;
|
||||
});
|
||||
});
|
||||
return "success";
|
||||
// @await var createTable = db.MUser.create().handle(function(outcome) {
|
||||
// @await var insert = db.MUser.insertOne({
|
||||
// id: cast null,
|
||||
// name: 'Alice',
|
||||
// email: 'alice@example.com',
|
||||
// password: 'jew'
|
||||
// }).next(function(_){
|
||||
// trace(_);
|
||||
// trace("wat");
|
||||
// return { name: "klaas" };
|
||||
// });
|
||||
// trace(@await result);
|
||||
// switch outcome {
|
||||
// case Success(data):
|
||||
// trace(data);
|
||||
// return data;
|
||||
// case Failure(e):
|
||||
// trace("failure: "+e);
|
||||
// return e.data;
|
||||
// }
|
||||
// return outcome;
|
||||
// });
|
||||
|
||||
// trace(@await result);
|
||||
// trace("kak");
|
||||
// trace(result.status);
|
||||
//return result;
|
||||
// return {name: "Kees"};
|
||||
//@await return result.next.;
|
||||
//@await return result;
|
||||
// @await var three = ;
|
||||
// trace(@await one);
|
||||
// trace(@await two);
|
||||
|
||||
@ -4,14 +4,26 @@ package db;
|
||||
//import tink.sql.Database;
|
||||
import tink.sql.Types;
|
||||
import model.MUser;
|
||||
import model.services.DrivebyCool;
|
||||
|
||||
// import db.Models.User;
|
||||
|
||||
|
||||
|
||||
typedef Db = tink.sql.Database<Def>;
|
||||
@:tables(MUser)
|
||||
interface Def extends tink.sql.DatabaseDefinition {
|
||||
@:tables(MUser)
|
||||
@:tables(MProject)
|
||||
// Post related Tables
|
||||
@:tables(MPost)
|
||||
@:tables(MTag)
|
||||
@:tables(MPostTag)
|
||||
interface DbDef_DrivebyCool extends tink.sql.DatabaseDefinition {
|
||||
//@:procedure var func:Int->{x:Int, point:tink.s2d.Point};
|
||||
//@:table('user') var UserAlias:User;
|
||||
@:table('user') var UserTbl:MUser;
|
||||
// @:table('project') var ProjectTbl:DrivebyCool.MProject;
|
||||
}
|
||||
|
||||
class Database extends tink.sql.Database<Def> {
|
||||
public function new(__name:String,driver:tink.sql.Driver){
|
||||
super(__name, driver);
|
||||
}
|
||||
public static function createTables():Void
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
@ -1,17 +1,60 @@
|
||||
package model.sites.drivebycool;
|
||||
package model.services;
|
||||
|
||||
import tink.sql.Types;
|
||||
import model.MSubscription;
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* Project related models
|
||||
*/
|
||||
|
||||
|
||||
// Defines a Project to be listed on the projects page
|
||||
typedef MProject = {
|
||||
@:autoIncrement @:primary public var id(default, null):Id<MProject>;
|
||||
// Properties
|
||||
public var name:VarChar<50>;
|
||||
public var owner:Id<MUser>;
|
||||
public var description:VarChar<1024>;
|
||||
}
|
||||
|
||||
// Defines a relationship between a Project and a User. The User will be added as a member of the project and can author blogposts
|
||||
typedef MMembership = {
|
||||
@:autoIncrement @:primary public var id(default, null):Id<MMembership>;
|
||||
// relationships
|
||||
public var project:Id<MProject>;
|
||||
public var user:Id<MUser>;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Defines a Post
|
||||
*/
|
||||
typedef MPost = {
|
||||
@:autoIncrement @:primary public var id(default, null):Id<MPost>;
|
||||
// Relationships
|
||||
public var project:Id<MProject>;
|
||||
public var owner:Id<MUser>;
|
||||
// Properties
|
||||
public var title:VarChar<1024>;
|
||||
public var description:Text;
|
||||
public var content:Text;
|
||||
}
|
||||
|
||||
//
|
||||
// Defines a tag that can be added to any post.
|
||||
//
|
||||
typedef MTag = {
|
||||
@:autoIncrement @:primary public var id(default, null):Id<MTag>;
|
||||
public var title:VarChar<32>;
|
||||
}
|
||||
|
||||
//
|
||||
// Defines a relationship between a tag and a post.
|
||||
//
|
||||
typedef MTaggedPost = {
|
||||
@:autoIncrement @:primary public var id(default, null):Id<MTaggedPost>;
|
||||
public var post:Id<MPost>;
|
||||
public var tag:Id<MTag>;
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user