snipette-crowdfunding-site/server/index.js

83 lines
1.9 KiB
JavaScript
Raw Normal View History

2021-12-29 06:52:17 -05:00
const express = require('express')
const path = require('path')
2021-12-29 06:35:51 -05:00
require('dotenv').config()
let DEBUG
if (process.env.DEBUG || process.env.CROWDFUNDING_SITE_DEBUG) {
DEBUG = true
} else {
DEBUG = false
}
if (DEBUG) console.log('Starting website in debug mode')
// set up knex (for database)
const knex = require('knex')({
client:'sqlite3',
connection:{
filename:'./donors.sqlite'
},
useNullAsDefault: true
})
knex.schema.hasTable('pledges').then(function(exists) {
if (!exists) {
if (DEBUG) console.debug('No table exists! Creating one now...')
return knex.schema.createTable('pledges', function(t) {
t.increments('id').primary()
t.timestamp('created_at').defaultTo(knex.fn.now()).notNullable()
t.boolean('was_robot').defaultTo(true)
t.integer('amount').notNullable()
t.string('name', 128)
t.boolean('anonymous')
t.string('email', 128)
t.string('phone', 32)
t.integer('retry_times').defaultTo(10)
t.boolean('get_newsletter').defaultTo(false)
t.text('other_message')
})
}
})
// set up bookshelf (for easy interface for database)
bookshelf = require('bookshelf')(knex)
const Pledge = bookshelf.model('Pledge', {
tableName: 'pledges',
})
2021-12-29 06:52:17 -05:00
// decide base url and port for app (can be configured)
const baseUrl = process.env.CROWDFUNDING_SITE_BASE_URL || '/'
const port = process.env.CROWDFUNDING_SITE_PORT || 5000
// set up express
const app = express()
const router = express.Router()
app.use(baseUrl, router)
app.use(express.static('dist'))
// main views
router.get('/', (req, res) => {
if (DEBUG) console.debug('Returning home page')
res.sendFile(path.resolve(__dirname, '..', 'dist', 'index.html'))
})
// start the listener!
app.listen(port, () => {
console.log(`Server is up at port ${port}`)
})
// end note: in case we want to import this somewhere for testing
2021-12-29 06:35:51 -05:00
module.exports = {
knex,
bookshelf,
Pledge,
2021-12-29 06:52:17 -05:00
router,
2021-12-29 06:35:51 -05:00
}