Browse Source

first primitive note opening implemented

master
Christian Müller 10 years ago
parent
commit
0ec17aee08
  1. 15
      server.js
  2. 34
      src/migrate.js
  3. 33
      src/storage.js

15
server.js

@ -1,19 +1,20 @@ @@ -1,19 +1,20 @@
var express = require('express');
var page = require('./src/page');
var storage = require('./src/storage');
var app = express();
app.use(express.static(__dirname + '/resources/public'));
app.get('/:year/:month/:day/:title', function (req, res) {
var params = req.params;
var id = params.year + "/" + params.month + "/" + params.day + "/" + params.title;
res.send("opening note " + id);
app.get('/new', function (req, res) {
res.send("opening new note mask")
});
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 () {
console.log('NoteHub server listening on port %s', server.address().port);

34
src/migrate.js

@ -13,7 +13,7 @@ var sequelize = new Sequelize('database', null, null, { @@ -13,7 +13,7 @@ var sequelize = new Sequelize('database', null, null, {
});
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,
published: { type: Sequelize.DATE, defaultValue: Sequelize.NOW },
edited: { type: Sequelize.DATE, allowNull: true, defaultValue: null },
@ -22,14 +22,14 @@ var Note = sequelize.define('Note', { @@ -22,14 +22,14 @@ var Note = sequelize.define('Note', {
views: Sequelize.INTEGER,
});
var Shortcut = sequelize.define('Shortcut', {
var Link = sequelize.define('Link', {
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
});
Note.hasMany(Shortcut);
Shortcut.belongsTo(Note);
Note.hasMany(Link);
Link.belongsTo(Note);
sequelize.sync().then(function () {
client.hgetall("note", function (err, notes) {
@ -48,7 +48,6 @@ sequelize.sync().then(function () { @@ -48,7 +48,6 @@ sequelize.sync().then(function () {
client.smembers(id + ":urls", function (err, links) {
Note.create({
id: id,
text: notes[id],
published: published[id] && new Date(published[id] * 1000) || new Date(),
publisher: publisher[id].indexOf("NPY") == -1 && publisher[id] || "NoteHub",
@ -57,8 +56,8 @@ sequelize.sync().then(function () { @@ -57,8 +56,8 @@ sequelize.sync().then(function () {
views: views[id],
}).then(note => {
links.forEach(shortcutId => {
client.hget("short-url", shortcutId, function (err, result) {
links.forEach(LinkId => {
client.hget("short-url", LinkId, function (err, result) {
result = result.replace(/:([\w_-]+)\s/g, '"$1":');
@ -69,23 +68,28 @@ sequelize.sync().then(function () { @@ -69,23 +68,28 @@ sequelize.sync().then(function () {
delete obj.day;
delete obj.year;
delete obj.month;
} catch (e) {
return console.log("PARSE ERROR FOR", result)
}
Shortcut.create({
id: shortcutId,
Link.create({
id: LinkId,
params: Object.keys(obj).length == 0 ? null : JSON.stringify(obj)
}).then(shortcut => {
}).then(link => {
shortcut.setNote(note);
note.addShortcut(shortcut);
link.setNote(note);
note.addLink(link);
})
});
});
});
Link.create({ id: id }).then(link => {
link.setNote(note);
note.addLink(link);
});
});
})
});
});

33
src/storage.js

@ -0,0 +1,33 @@ @@ -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);
});
Loading…
Cancel
Save