Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Tweedr #31

Open
wants to merge 2 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
99 changes: 99 additions & 0 deletions controllers/tweedr.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,99 @@
module.exports = (db) => {

/**
* ===========================================
* Controller logic
* ===========================================
*/

const home = (request, response) => {
db.tweets.getLogin((error, result) => {
response.render('user/login')
})
}

const signIn = (request, response) => {
db.tweets.getSignIn(request.body,(error, result) => {
if ( result.rows.length === 0 ) {
console.log("user doesnt exist");
response.send('User not found');
}
else {
console.log("user exists!!!!!!");

const user = result.rows[0];
let password = user.password;

if ( password == request.body.password ) {
//password is correct
console.log('PASS WORD CORRECT TOO');
response.cookie('loggedin', 'true');
response.redirect('/tweets');
}
else {
// password is incorrect
console.log('PASS WORD not correct');
response.send('Password incorrect')
}

};
})
}

const index = (request, response) => {
db.tweets.getAllTweets((error, result) => {
response.render('user/newtweets', { tweets: result.rows });
});
};

const signOut = (request, response) => {
db.tweets.getSignOut((error, result) => {
response.clearCookie('loggedin');
response.redirect('/')
})
}

const users = (request, response) => {
db.tweets.getUsers(request.body, (error, result) => {
// response.redirect('/');
response.render("user/NewUser", {user: result.rows});
});
};

const newUser = (request, response) => {
db.tweets.getNew((error, result) => {
response.render('user/NewUser');
})
}

const postTweets = (request, response) => {
db.tweets.getNewTweets(request.body, (error, result) => {
// response.redirect('/tweets');
response.render("user/newtweets", {tweets: result.rows});
})
}

const username = (request, response) => {
db.tweets.getUsername(request.body, (error, result) => {
// response.redirect('/tweets');
response.render("user/profile", {tweets: result.rows});
})
}

/**
* ===========================================
* Export controller functions as a module
* ===========================================
*/
return {
home,
index,
signIn,
signOut,
users,
newUser,
postTweets,
username
};

}
55 changes: 55 additions & 0 deletions db.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
const pg = require('pg');
const tweets = require('./models/tweedr');
// const user = require('./models/user');
const url = require('url');


var configs;

if( process.env.DATABASE_URL ){

const params = url.parse(process.env.DATABASE_URL);
const auth = params.auth.split(':');

configs = {
user: auth[0],
password: auth[1],
host: params.hostname,
port: params.port,
database: params.pathname.split('/')[1],
ssl: true
};

}else{
configs = {
user: 'Sheryl',
host: '127.0.0.1',
database: 'exercise',
port: 5432
};
}


const pool = new pg.Pool(configs);

pool.on('error', function (err) {
console.log('idle client error', err.message, err.stack);
});

module.exports = {
/*
* ADD APP MODELS HERE
*/
//pokemon: pokemon(pool),
tweets: tweets(pool),

//make queries directly from here
queryInterface: (text, params, callback) => {
return pool.query(text, params, callback);
},



// get a reference to end the connection pool at server end
pool:pool
};
47 changes: 14 additions & 33 deletions index.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,25 +3,25 @@ const methodOverride = require('method-override');
const cookieParser = require('cookie-parser');

const pg = require('pg');

const db = require('./db');
/**
* ===================================
* Configurations and set up
* ===================================
*/

const configs = {
user: 'akira',
host: '127.0.0.1',
database: 'testdb',
port: 5432,
};
// const configs = {
// user: 'Sheryl',
// host: '127.0.0.1',
// database: 'exercise',
// port: 5432,
// };

const pool = new pg.Pool(configs);
// const pool = new pg.Pool(configs);

pool.on('error', function (err) {
console.log('idle client error', err.message, err.stack);
});
// pool.on('error', function (err) {
// console.log('idle client error', err.message, err.stack);
// });

// Init express app
const app = express();
Expand All @@ -45,29 +45,10 @@ app.engine('jsx', reactEngine);
* ===================================
*/

// Root GET request (it doesn't belong in any controller file)
app.get('/', (request, response) => {
response.send('Welcome To Tweedr.');
});

app.get('/users/new', (request, response) => {
response.render('user/newuser');
});

app.post('/users', (request, response) => {
require('./routes')(app, db);

const queryString = 'INSERT INTO users (name, password) VALUES ($1, $2)';
const values = [
request.body.name,
request.body.password
];
// Root GET request (it doesn't belong in any controller file)

// execute query
pool.query(queryString, values, (error, queryResult) => {
//response.redirect('/');
response.send('user created');
});
});



Expand All @@ -83,7 +64,7 @@ let onClose = function(){

server.close(() => {
console.log('Process terminated')
pool.end( () => console.log('Shut down db connection pool'));
db.pool.end( () => console.log('Shut down db connection pool'));
})
};

Expand Down
86 changes: 86 additions & 0 deletions models/tweedr.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
/**
* ===========================================
* Export model functions as a module
* ===========================================
*/
module.exports = (dbPoolInstance) => {

// `dbPoolInstance` is accessible within this function scope

let getAllTweets = (callback) => {
let query = 'SELECT * FROM tweets';

dbPoolInstance.query(query, (error, result) => {
callback(error, result);
});
};

let getLogin = (callback) => {

dbPoolInstance.query((error, result) => {
callback(error, result);
});
};

let getSignIn = (tweets, callback) => {

let text = "SELECT * FROM users WHERE username=$1";
const values = [tweets.username];

dbPoolInstance.query(text, values, (error, result) => {
callback(error, result);
});
};

let getSignOut = (callback) => {
dbPoolInstance.query((error, result) => {
callback(error, result);
})
}

let getUsers = (users, callback) => {
let text = 'INSERT INTO users (name, username, password) VALUES ($1, $2, $3)';
const values = [users.name, users.reguser, users.regpass];

dbPoolInstance.query(text, values, (error, result) => {
callback(error, result);
})
}

let getNew = (callback) => {
dbPoolInstance.query((error, result) => {
callback(error, result);
})
}

let getNewTweets = (tweets, callback) => {

let text = 'INSERT INTO tweets (name, username, content) VALUES ($1, $2, $3)';
const values = [tweets.name, tweets.username, tweets.newtweet];

dbPoolInstance.query(text, values, (error, result) => {
callback(error, result);
})
}

let getUsername = (tweets, callback) => {

let text = "SELECT users.username, followers.following_id from users INNER JOIN followers ON users.id = followers.user_id";

dbPoolInstance.query(text, (error, result) => {
callback(error, result);
})
}

return {
getAllTweets,
getLogin,
getSignIn,
getSignOut,
getUsers,
getNew,
getNewTweets,
getUsername
//get,
};
};
Loading