added votes

This commit is contained in:
notnull 2019-02-13 08:08:41 -08:00
parent 10091f28ff
commit 8db4e1ef54
2 changed files with 41 additions and 4 deletions

View File

@ -1,6 +1,30 @@
const db = require('./db');
const db = require('./db')
const {Article, Vote, User} = require('./models');
// sigh
// I am using Sequelize as an ORM for the database.
// It has its own syntax for defining the relations
// in the database. Something like the following:
Article.belongsTo(User)
User.hasMany(Article)
// register models
require('./models');
Article.hasMany(Vote)
Vote.belongsTo(Article)
module.exports = db;
Vote.belongsTo(User)
User.hasMany(Vote)
// the questions are:
// 1. how to store votes in the database? as a count on the article? this would be less accurate but ok for the beginning <- I am not a fan of this approach
// 2. what votes do we count? (anon, per ip address, cookies?) to build relations between votes we need a concept of users based identification <- yep!
// 3. also downvotes? <- so I think to start we shoudl copy what HN does agreed :)
// TODO figure out how HN implements votes (I think non-registered voters can't vote for example)
// re: users: I can implement some hacky user auth to start with... or maybe that's something we delegate to rw (totally_not_fb)
// hn voting
// regiistration required
// min karma required for downvoting (comments only?)
// so we could start writing tickets at this point ... ? makes sense
// view content: https://irc.anarchyplanet.org/git/notnull/hacker-news-cli/issues/4
// post content: https://irc.anarchyplanet.org/git/notnull/hacker-news-cli/issues/3
// votes: https://irc.anarchyplanet.org/git/notnull/hacker-news-cli/issues/5
module.exports = db

13
db/models/votes.js Normal file
View File

@ -0,0 +1,13 @@
const Sequelize = require('sequelize');
const db = require('../db');
// votes should be up or down, could either do 'up/'down' or 1/-1
const Vote = db.define('votes', {
valence: {
type: Sequelize.ENUM,
allowNull: false
}
});
module.exports = Vote;