Nothing should be left that use sqlite, removing old files. Breaking change, may create bugs
This commit is contained in:
parent
e57fbee48f
commit
72da399755
4 changed files with 1 additions and 316 deletions
2
app.js
2
app.js
|
@ -19,8 +19,6 @@ Post = require('./post.js');
|
||||||
User = require('./user.js');
|
User = require('./user.js');
|
||||||
Category = require('./category.js');
|
Category = require('./category.js');
|
||||||
Static = require('./static.js');
|
Static = require('./static.js');
|
||||||
var database = require('./db.js');
|
|
||||||
var genPhotos = require('./genPhotos.js');
|
|
||||||
|
|
||||||
// Get config variables
|
// Get config variables
|
||||||
var config = require('./config.js').config;
|
var config = require('./config.js').config;
|
||||||
|
|
175
db.js
175
db.js
|
@ -1,175 +0,0 @@
|
||||||
var sqlite = require('sqlite3').verbose();
|
|
||||||
var async = require('async');
|
|
||||||
|
|
||||||
var config = require('./config.js').config;
|
|
||||||
|
|
||||||
var db = new sqlite.Database(config.dbPath);
|
|
||||||
|
|
||||||
// Function to get a count of current galleries
|
|
||||||
// Returns count of galleries
|
|
||||||
exports.countGalleries = function(cb) {
|
|
||||||
db.get('SELECT count(id) as count FROM galleries;', function(err, count) {
|
|
||||||
cb(count.count);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
// Function to get a count of current photos
|
|
||||||
// Returns count of tags
|
|
||||||
exports.countPhotos = function(cb) {
|
|
||||||
db.get('SELECT count(id) as count FROM photos;', function(err, count) {
|
|
||||||
cb(count.count);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
// Function to tag a photo with a list of tag names
|
|
||||||
// Inputs: Photo ID, List of Tag names
|
|
||||||
// Does not return.
|
|
||||||
exports.tagPhoto = function (photoId, tags) {
|
|
||||||
|
|
||||||
console.log('Deleting old tags');
|
|
||||||
db.run('DELETE FROM photoTags WHERE photoId = '+photoId+';',
|
|
||||||
function(err) {
|
|
||||||
console.log('Old tags deleted');
|
|
||||||
for (var i = 0, size = tags.length; i < size; i++) {
|
|
||||||
getOrCreateTag(tags[i], function(row) {
|
|
||||||
db.run('INSERT INTO photoTags (photoId, tagId) \
|
|
||||||
VALUES ('+photoId+', '+row.id+');',
|
|
||||||
function(err) {
|
|
||||||
if (err) {
|
|
||||||
console.log(err);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
console.log('Photo '+photoId+' tagged as '+row.name);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// Function to get tag ids associated with a particular photo id
|
|
||||||
// Inputs: Photo ID
|
|
||||||
// Returns: Records associated with tags of that photo id
|
|
||||||
var getPhotoTags = function (photoId, cb) {
|
|
||||||
db.all('SELECT tagId FROM photoTags WHERE photoId = '+photoId+';',
|
|
||||||
function(err, rows) {
|
|
||||||
if (err) {
|
|
||||||
console.log(err);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
var tagList = [];
|
|
||||||
for (row in rows) {
|
|
||||||
tagList.push(rows[row].tagId);
|
|
||||||
}
|
|
||||||
tagList = tagList.join(', ');
|
|
||||||
console.log('Tag ids for photo '+photoId+': '+tagList);
|
|
||||||
db.all('SELECT * FROM tags WHERE id IN ('+tagList+');',
|
|
||||||
function(err, rows) {
|
|
||||||
if (err) {
|
|
||||||
console.log(err);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
cb(rows);
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
exports.getPhotoTags = getPhotoTags;
|
|
||||||
|
|
||||||
|
|
||||||
// Function that returns all the photo tags as a space separated string.
|
|
||||||
// Inputs: Photo ID, callback function.
|
|
||||||
// Returns: callback of string with all tags separated by spaces.
|
|
||||||
var getPhotoTagsAsString = function(photoId, cb) {
|
|
||||||
getPhotoTags(photoId, function(tags) {
|
|
||||||
var str = false;
|
|
||||||
for (tag in tags) {
|
|
||||||
if (!str) {
|
|
||||||
str = tags[tag].name;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
str = str + ' ' + tags[tag].name;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
console.log("Tags for photo "+photoId+": "+str);
|
|
||||||
cb(str);
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
exports.getPhotoTagsAsString = getPhotoTagsAsString;
|
|
||||||
|
|
||||||
// Function to get a photo record by the id of the photo
|
|
||||||
// Returns the photo record
|
|
||||||
exports.getPhotoById = function(id, cb) {
|
|
||||||
db.get('SELECT * FROM photos WHERE id = ?', id, function(err, row) {
|
|
||||||
if (err) console.log(err);
|
|
||||||
cb(row);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
// Function to create a new photo
|
|
||||||
// Returns the photo id
|
|
||||||
exports.createPhoto = function(title, slug, markdown, extension, mimetype, photoDate, updatedDate,
|
|
||||||
createDate, path, cb) {
|
|
||||||
console.log('Creating new photo: '+slug);
|
|
||||||
db.run('INSERT INTO photos (\
|
|
||||||
title, \
|
|
||||||
slug, \
|
|
||||||
description, \
|
|
||||||
path, \
|
|
||||||
extension, \
|
|
||||||
mimetype, \
|
|
||||||
photoDate, \
|
|
||||||
createDate, \
|
|
||||||
updatedDate, \
|
|
||||||
lastGenerateDate, \
|
|
||||||
lastUpload) \
|
|
||||||
VALUES (\
|
|
||||||
"'+title+'", \
|
|
||||||
"'+slug+'", \
|
|
||||||
"'+markdown+'", \
|
|
||||||
"'+path+'", \
|
|
||||||
"'+extension+'", \
|
|
||||||
"'+mimetype+'", \
|
|
||||||
"'+photoDate+'", \
|
|
||||||
"'+createDate+'", \
|
|
||||||
"'+updatedDate+'", \
|
|
||||||
(strftime("%s","1900-01-01 00:00")*1000), \
|
|
||||||
(strftime("%s","1900-01-01 00:00")*1000));',
|
|
||||||
function(err, row) {
|
|
||||||
if (!err) {
|
|
||||||
console.log('Photo '+slug+' created.');
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
console.log('Error: '+err);
|
|
||||||
}
|
|
||||||
db.get('SELECT * FROM photos WHERE title = "'+title+'" AND createDate = '+createDate+';', function(err, row){
|
|
||||||
if (err) console.log(err);
|
|
||||||
cb(err, row);
|
|
||||||
})
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
// Function to update an existing post record
|
|
||||||
// Returns the post object
|
|
||||||
exports.updatePhoto = function(id, title, slug, markdown, photoDate, cb) {
|
|
||||||
console.log("updatePost called.");
|
|
||||||
db.run('UPDATE photos SET \
|
|
||||||
title = "'+title+'", \
|
|
||||||
slug = "'+slug+'", \
|
|
||||||
description = "'+markdown+'", \
|
|
||||||
photoDate = '+helper.dateToEpoch(photoDate)+', \
|
|
||||||
updatedDate = '+helper.dateToEpoch(new Date())+' \
|
|
||||||
WHERE id = '+id+';',
|
|
||||||
function(err) {
|
|
||||||
console.log('updatePhoto UPDATE result: '+err);
|
|
||||||
db.get('SELECT * FROM photos WHERE id = '+id+';', function(err, row) {
|
|
||||||
console.log('updatePhoto SELECT result: ' + err);
|
|
||||||
cb(row);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
|
@ -25,7 +25,6 @@
|
||||||
"passport": "^0.3.0",
|
"passport": "^0.3.0",
|
||||||
"passport-local": "^1.0.0",
|
"passport-local": "^1.0.0",
|
||||||
"redis": "^2.4.2",
|
"redis": "^2.4.2",
|
||||||
"serve-favicon": "^2.3.0",
|
"serve-favicon": "^2.3.0"
|
||||||
"sqlite3": "^3.1.0"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
137
schema.sql
137
schema.sql
|
@ -1,137 +0,0 @@
|
||||||
-- SQL Schema for Crunch
|
|
||||||
|
|
||||||
-- Note all dates must be in epoch seconds to allow for sqlite comparison
|
|
||||||
|
|
||||||
-- User table
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS "users";
|
|
||||||
|
|
||||||
CREATE TABLE "users" (
|
|
||||||
"id" INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
||||||
"username" TEXT NOT NULL UNIQUE,
|
|
||||||
"password" TEXT NOT NULL, -- sha256 hash of plaintext password + salt
|
|
||||||
"salt" TEXT NOT NULL, -- salt that is appended to the password
|
|
||||||
"email" TEXT UNIQUE,
|
|
||||||
"displayName" TEXT,
|
|
||||||
"createDate" TEXT
|
|
||||||
);
|
|
||||||
|
|
||||||
-- Content Tables
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS "posts";
|
|
||||||
|
|
||||||
CREATE TABLE "posts" (
|
|
||||||
"id" INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
||||||
"title" TEXT, -- The title of the post
|
|
||||||
"slug" TEXT NOT NULL, -- A slug form of the title or id
|
|
||||||
"markdown" TEXT NOT NULL, -- The post content in markdown format
|
|
||||||
"postDate" INTEGER, -- The date that the post should go live and be sorted by
|
|
||||||
"deleted" INTEGER DEFAULT 0, -- Whether or not the post is "Deleted"
|
|
||||||
"published" INTEGER DEFAULT 0, -- Whether or not the post has been published
|
|
||||||
"updatedDate" INTEGER, -- The date that the post was last updated
|
|
||||||
"createDate" INTEGER NOT NULL, -- The date the post was created
|
|
||||||
"lastGenerateDate" INTEGER, -- The date this post was last built
|
|
||||||
"lastUpload" INTEGER -- The date the post was last uploaded
|
|
||||||
);
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS "galleries";
|
|
||||||
|
|
||||||
CREATE TABLE "galleries" (
|
|
||||||
"id" INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
||||||
"title" TEXT, -- The title of the gallery
|
|
||||||
"slug" TEXT NOT NULL UNIQUE, -- A slug form of the title or id
|
|
||||||
"description" TEXT NOT NULL, -- The gallery description in markdown format
|
|
||||||
"deleted" INTEGER DEFAULT 0, -- Whether or not the gallery has been deleted
|
|
||||||
"published" INTEGER DEFAULT 0, -- Whether or not the gallery has been published
|
|
||||||
"postDate" INTEGER, -- The date that the gallery should go live and be sorted by
|
|
||||||
"updatedDate" INTEGER, -- The date that the gallery was last updated
|
|
||||||
"createDate" INTEGER NOT NULL, -- The date the gallery was created
|
|
||||||
"lastGenerateDate" INTEGER, -- The date this gallery was last built
|
|
||||||
"lastUpload" INTEGER -- The date the gallery was last uploaded
|
|
||||||
);
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS "photos";
|
|
||||||
|
|
||||||
CREATE TABLE "photos" (
|
|
||||||
"id" INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
||||||
"path" TEXT NOT NULL, -- The path of the photo location on disk
|
|
||||||
"title" TEXT, -- The title of the photo
|
|
||||||
"slug" TEXT NOT NULL UNIQUE, -- A slug form of the title or id
|
|
||||||
"description" TEXT, -- The photo description in markdown format
|
|
||||||
"published" INTEGER DEFAULT 0, -- Whether or not the photo has been published
|
|
||||||
"deleted" INTEGER DEFAULT 0, -- Whether or not the photo has been deleted
|
|
||||||
"photoDate" INTEGER, -- The date that the photo should go live and be sorted by
|
|
||||||
"updatedDate" INTEGER, -- The date that the photo was last updated
|
|
||||||
"createDate" INTEGER NOT NULL, -- The date the photo was created
|
|
||||||
"lastGenerateDate" INTEGER, -- The date this photo was last built
|
|
||||||
"lastUpload" INTEGER, -- The date the photo was last uploaded
|
|
||||||
"extension" TEXT, -- The original extension of the photo
|
|
||||||
"mimetype" TEXT, -- The original mimetype of the photo
|
|
||||||
"orientation" TEXT, -- The correct orientation of the photo (landscape, portrait)
|
|
||||||
"origWidth" INTEGER, -- The original width of the photo
|
|
||||||
"origHeight" INTEGER, -- The original height of the photo
|
|
||||||
"aperture" REAL, -- The aperture of the original photo
|
|
||||||
"speed" REAL, -- The shutter speed of the original photo (in seconds)
|
|
||||||
"location" TEXT -- The location data of the original photo
|
|
||||||
);
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS "galleryPhotos";
|
|
||||||
|
|
||||||
CREATE TABLE "galleryPhotos" (
|
|
||||||
"id" INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
||||||
"galleryId" INTEGER NOT NULL, -- the id of the gallery
|
|
||||||
"photoId" INTEGER NOT NULL, -- the id of the photo
|
|
||||||
FOREIGN KEY(galleryId) REFERENCES galleries(id),
|
|
||||||
FOREIGN KEY(photoId) REFERENCES photos(id)
|
|
||||||
);
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS "categories";
|
|
||||||
|
|
||||||
CREATE TABLE "categories" (
|
|
||||||
"id" INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
||||||
"name" TEXT NOT NULL, -- The name of this category
|
|
||||||
"slug" TEXT NOT NULL UNIQUE, -- A slug form of the name or id
|
|
||||||
"description" TEXT, -- A brief description of the category in markdown
|
|
||||||
"createDate" INTEGER NOT NULL -- The date the category was created
|
|
||||||
);
|
|
||||||
|
|
||||||
INSERT INTO "categories" VALUES (1, "Uncategorized", "uncategorized", "Uncategorized posts", (strftime('%s','now')*1000));
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS "categoryPosts";
|
|
||||||
|
|
||||||
CREATE TABLE "categoryPosts" (
|
|
||||||
"id" INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
||||||
"categoryId" INTEGER NOT NULL, -- the id of the category
|
|
||||||
"postId" INTEGER NOT NULL, -- the id of the post
|
|
||||||
FOREIGN KEY(categoryId) REFERENCES categories(id),
|
|
||||||
FOREIGN KEY(postId) REFERENCES posts(id)
|
|
||||||
);
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS "tags";
|
|
||||||
|
|
||||||
CREATE TABLE "tags" (
|
|
||||||
"id" INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
||||||
"name" TEXT NOT NULL, -- The name of this tag
|
|
||||||
"slug" TEXT NOT NULL UNIQUE, -- A slug form of the name or id
|
|
||||||
"createDate" INTEGER NOT NULL -- The date the tag was created
|
|
||||||
);
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS "postTags";
|
|
||||||
|
|
||||||
CREATE TABLE "postTags" (
|
|
||||||
"id" INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
||||||
"postId" INTEGER NOT NULL, -- the id of the post
|
|
||||||
"tagId" INTEGER NOT NULL, -- the id of the tag
|
|
||||||
FOREIGN KEY(postId) REFERENCES posts(id),
|
|
||||||
FOREIGN KEY(tagId) REFERENCES tags(id)
|
|
||||||
);
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS "photoTags";
|
|
||||||
|
|
||||||
CREATE TABLE "photoTags" (
|
|
||||||
"id" INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
||||||
"photoId" INTEGER NOT NULL, -- the id of the photo
|
|
||||||
"tagId" INTEGER NOT NULL, -- the id of the tag
|
|
||||||
FOREIGN KEY(photoId) REFERENCES photos(id),
|
|
||||||
FOREIGN KEY(tagId) REFERENCES tags(id)
|
|
||||||
);
|
|
Loading…
Reference in a new issue