Skip to content

Commit

Permalink
Lesson 3
Browse files Browse the repository at this point in the history
  • Loading branch information
ethanszeto committed Sep 12, 2023
1 parent 6fdf578 commit 5d6f36b
Show file tree
Hide file tree
Showing 9 changed files with 578 additions and 2 deletions.
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
node_modules
node_modules
.env
2 changes: 1 addition & 1 deletion app.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import express from "express";
import cors from "cors";
import helmet from "helmet";
import route from "./pages.route.js";
import route from "./routes/pages.route.js";

const app = express();

Expand Down
9 changes: 9 additions & 0 deletions controllers/user.controller.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
import UserAccessor from "../db_accessor/user.accessor.js";

export default class UserController {
static async getAllUsers(req, res) {
const users = await UserAccessor.getAllUsers();
console.log(users);
res.json({ users });
}
}
25 changes: 25 additions & 0 deletions db/connection.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
import { config as dotenvConfig } from 'dotenv';
import mongoose from 'mongoose';

export default class Connection {
static async open(db) {
dotenvConfig();

const { MONGO_USERNAME, MONGO_PASSWORD, MONGO_CLUSTER } = process.env;
const DATABASE_URL = `mongodb+srv://${MONGO_USERNAME}:${MONGO_PASSWORD}@${MONGO_CLUSTER}.xtdufxk.mongodb.net/?retryWrites=true&w=majority`;

mongoose.connect(
DATABASE_URL,
{
useNewUrlParser: true,
useUnifiedTopology: true,
maxPoolSize: 50,
socketTimeoutMS: 2500,
dbName: db
}
);

return mongoose.connection;
}
}

17 changes: 17 additions & 0 deletions db_accessor/user.accessor.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
import Connection from "../db/connection.js";
import User from "../models/user.js";

export default class UserAccessor {
static async getAllUsers() {
try {
await Connection.open("users");
const users = [];
for await (const doc of User.find()) {
users.push(doc);
}
return users;
} catch (e) {
throw e;
}
}
}
17 changes: 17 additions & 0 deletions models/user.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
import mongoose from 'mongoose';

const Schema = mongoose.Schema;

const UserSchema = new Schema({
username: {type: String, unique: true, required: true},
password: {type: String, required: true},
email: {type: String, required: true},
bio: {type: String, required: false}
}, {
collection: 'users'
});

const db = mongoose.connection.useDb("users");
const User = db.model("User", UserSchema);

export default User;
Loading

0 comments on commit 5d6f36b

Please sign in to comment.