first primitive note opening implemented
This commit is contained in:
@@ -1,19 +1,20 @@
|
|||||||
var express = require('express');
|
var express = require('express');
|
||||||
var page = require('./src/page');
|
var page = require('./src/page');
|
||||||
|
var storage = require('./src/storage');
|
||||||
var app = express();
|
var app = express();
|
||||||
|
|
||||||
app.use(express.static(__dirname + '/resources/public'));
|
app.use(express.static(__dirname + '/resources/public'));
|
||||||
|
|
||||||
app.get('/:year/:month/:day/:title', function (req, res) {
|
app.get('/new', function (req, res) {
|
||||||
var params = req.params;
|
res.send("opening new note mask")
|
||||||
var id = params.year + "/" + params.month + "/" + params.day + "/" + params.title;
|
|
||||||
res.send("opening note " + id);
|
|
||||||
});
|
});
|
||||||
|
|
||||||
app.get('/:link', function (req, res) {
|
app.get(/(.*)\??.*/, function (req, res) {
|
||||||
|
var link = req.params["0"].slice(1);
|
||||||
|
storage.getNote(link).then(note => {
|
||||||
|
res.send("opening note " + note.text)
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
var server = app.listen(3000, function () {
|
var server = app.listen(3000, function () {
|
||||||
console.log('NoteHub server listening on port %s', server.address().port);
|
console.log('NoteHub server listening on port %s', server.address().port);
|
||||||
|
|||||||
+19
-15
@@ -13,7 +13,7 @@ var sequelize = new Sequelize('database', null, null, {
|
|||||||
});
|
});
|
||||||
|
|
||||||
var Note = sequelize.define('Note', {
|
var Note = sequelize.define('Note', {
|
||||||
id: { type: Sequelize.STRING, unique: true, primaryKey: true },
|
id: { type: Sequelize.INTEGER, autoIncrement: true, unique: true, primaryKey: true },
|
||||||
text: Sequelize.TEXT,
|
text: Sequelize.TEXT,
|
||||||
published: { type: Sequelize.DATE, defaultValue: Sequelize.NOW },
|
published: { type: Sequelize.DATE, defaultValue: Sequelize.NOW },
|
||||||
edited: { type: Sequelize.DATE, allowNull: true, defaultValue: null },
|
edited: { type: Sequelize.DATE, allowNull: true, defaultValue: null },
|
||||||
@@ -22,14 +22,14 @@ var Note = sequelize.define('Note', {
|
|||||||
views: Sequelize.INTEGER,
|
views: Sequelize.INTEGER,
|
||||||
});
|
});
|
||||||
|
|
||||||
var Shortcut = sequelize.define('Shortcut', {
|
var Link = sequelize.define('Link', {
|
||||||
id: { type: Sequelize.STRING, unique: true, primaryKey: true },
|
id: { type: Sequelize.STRING, unique: true, primaryKey: true },
|
||||||
lastResolution: { type: Sequelize.DATE, allowNull: true, defaultValue: null },
|
lastUsage: { type: Sequelize.DATE, allowNull: true, defaultValue: null },
|
||||||
params: Sequelize.STRING
|
params: Sequelize.STRING
|
||||||
});
|
});
|
||||||
|
|
||||||
Note.hasMany(Shortcut);
|
Note.hasMany(Link);
|
||||||
Shortcut.belongsTo(Note);
|
Link.belongsTo(Note);
|
||||||
|
|
||||||
sequelize.sync().then(function () {
|
sequelize.sync().then(function () {
|
||||||
client.hgetall("note", function (err, notes) {
|
client.hgetall("note", function (err, notes) {
|
||||||
@@ -48,7 +48,6 @@ sequelize.sync().then(function () {
|
|||||||
client.smembers(id + ":urls", function (err, links) {
|
client.smembers(id + ":urls", function (err, links) {
|
||||||
|
|
||||||
Note.create({
|
Note.create({
|
||||||
id: id,
|
|
||||||
text: notes[id],
|
text: notes[id],
|
||||||
published: published[id] && new Date(published[id] * 1000) || new Date(),
|
published: published[id] && new Date(published[id] * 1000) || new Date(),
|
||||||
publisher: publisher[id].indexOf("NPY") == -1 && publisher[id] || "NoteHub",
|
publisher: publisher[id].indexOf("NPY") == -1 && publisher[id] || "NoteHub",
|
||||||
@@ -57,8 +56,8 @@ sequelize.sync().then(function () {
|
|||||||
views: views[id],
|
views: views[id],
|
||||||
}).then(note => {
|
}).then(note => {
|
||||||
|
|
||||||
links.forEach(shortcutId => {
|
links.forEach(LinkId => {
|
||||||
client.hget("short-url", shortcutId, function (err, result) {
|
client.hget("short-url", LinkId, function (err, result) {
|
||||||
|
|
||||||
result = result.replace(/:([\w_-]+)\s/g, '"$1":');
|
result = result.replace(/:([\w_-]+)\s/g, '"$1":');
|
||||||
|
|
||||||
@@ -69,23 +68,28 @@ sequelize.sync().then(function () {
|
|||||||
delete obj.day;
|
delete obj.day;
|
||||||
delete obj.year;
|
delete obj.year;
|
||||||
delete obj.month;
|
delete obj.month;
|
||||||
|
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
return console.log("PARSE ERROR FOR", result)
|
return console.log("PARSE ERROR FOR", result)
|
||||||
}
|
}
|
||||||
|
|
||||||
Shortcut.create({
|
Link.create({
|
||||||
id: shortcutId,
|
id: LinkId,
|
||||||
params: Object.keys(obj).length == 0 ? null : JSON.stringify(obj)
|
params: Object.keys(obj).length == 0 ? null : JSON.stringify(obj)
|
||||||
}).then(shortcut => {
|
}).then(link => {
|
||||||
|
|
||||||
shortcut.setNote(note);
|
link.setNote(note);
|
||||||
note.addShortcut(shortcut);
|
note.addLink(link);
|
||||||
|
|
||||||
})
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
Link.create({ id: id }).then(link => {
|
||||||
|
link.setNote(note);
|
||||||
|
note.addLink(link);
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
||||||
})
|
})
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -0,0 +1,33 @@
|
|||||||
|
var Sequelize = require('sequelize');
|
||||||
|
var sequelize = new Sequelize('database', null, null, {
|
||||||
|
dialect: 'sqlite',
|
||||||
|
pool: {
|
||||||
|
max: 5,
|
||||||
|
min: 0,
|
||||||
|
idle: 10000
|
||||||
|
},
|
||||||
|
storage: 'database.sqlite'
|
||||||
|
});
|
||||||
|
|
||||||
|
var Note = sequelize.define('Note', {
|
||||||
|
id: { type: Sequelize.INTEGER, autoIncrement: true, unique: true, primaryKey: true },
|
||||||
|
text: Sequelize.TEXT,
|
||||||
|
published: { type: Sequelize.DATE, defaultValue: Sequelize.NOW },
|
||||||
|
edited: { type: Sequelize.DATE, allowNull: true, defaultValue: null },
|
||||||
|
publisher: Sequelize.STRING(32),
|
||||||
|
password: Sequelize.STRING(16),
|
||||||
|
views: Sequelize.INTEGER,
|
||||||
|
});
|
||||||
|
|
||||||
|
var Link = sequelize.define('Link', {
|
||||||
|
id: { type: Sequelize.STRING, unique: true, primaryKey: true },
|
||||||
|
lastUsage: { type: Sequelize.DATE, allowNull: true, defaultValue: null },
|
||||||
|
params: Sequelize.STRING
|
||||||
|
});
|
||||||
|
|
||||||
|
Note.hasMany(Link);
|
||||||
|
Link.belongsTo(Note);
|
||||||
|
|
||||||
|
module.exports.getNote = linkId => Link.findById(linkId).then(link => {
|
||||||
|
return Note.findById(link.NoteId);
|
||||||
|
});
|
||||||
Reference in New Issue
Block a user