Skip to content

Commit

Permalink
adding minimal team functionality
Browse files Browse the repository at this point in the history
  • Loading branch information
sord-dev committed Aug 5, 2023
1 parent 074f79e commit 8caf1e9
Show file tree
Hide file tree
Showing 7 changed files with 78 additions and 16 deletions.
28 changes: 21 additions & 7 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 2 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,8 @@
"express": "^4.18.2",
"jsonwebtoken": "^9.0.1",
"pg": "^8.11.2",
"sequelize": "^6.32.1"
"sequelize": "^6.32.1",
"uuid": "^9.0.0"
},
"devDependencies": {
"dotenv": "^16.3.1",
Expand Down
2 changes: 2 additions & 0 deletions src/main.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,12 @@ const express = require('express');
const app = express()

const AuthRouter = require('./routes/AuthRouter')
const TeamRouter = require('./routes/TeamRouter')

app.use(express.json())

app.use('/auth', AuthRouter)
app.use('/teams', TeamRouter)

app.get('/', (req, res, next) => {
res.json({ message: 'ok. api is working' })
Expand Down
9 changes: 6 additions & 3 deletions src/models/TeamModel.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,13 @@ const { DataTypes } = require('sequelize');
const sequelize = require('../database/sequelize'); // Import your Sequelize instance
const User = require('./UserModel');

const { v4: uuidv4 } = require('uuid');

const Team = sequelize.define('Team', {
id: {
type: DataTypes.INTEGER,
primaryKey: true
type: DataTypes.STRING,
primaryKey: true,
defaultValue: () => uuidv4()
},
team_name: {
type: DataTypes.STRING,
Expand All @@ -18,6 +21,6 @@ const Team = sequelize.define('Team', {
});

// Define associations
Team.hasMany(User, { foreignKey: 'team_id' });
Team.hasMany(User, { foreignKey: 'team_id', as: 'members' });

module.exports = Team;
3 changes: 2 additions & 1 deletion src/models/TicketModel.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@ const User = require('./UserModel')
const Ticket = sequelize.define('Ticket', {
id: {
type: DataTypes.INTEGER,
primaryKey: true
primaryKey: true,
autoIncrement: true
},
title: {
type: DataTypes.STRING,
Expand Down
15 changes: 14 additions & 1 deletion src/routes/TeamRouter.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,19 @@
const router = require('express').Router();
const TeamService = require('../services/TeamService');

// DEV OPERATIONS

router.get('/', async (req, res) => {
try {
const teams = await TeamService.findAll();

res.json(teams)
} catch (error) {
res.status(500).json({ error: error.message });
}
})


// Team CRUD Operations

router.post('/new', async (req, res) => {
Expand All @@ -15,7 +28,7 @@ router.post('/new', async (req, res) => {
router.get('/:teamId', async (req, res) => {
try {
const teamId = req.params.teamId;
const teamDetails = await TeamService.getTeamDetails(teamId);
const teamDetails = await TeamService.find(teamId);
res.json(teamDetails);
} catch (error) {
res.status(500).json({ error: 'Failed to fetch team details.' });
Expand Down
34 changes: 31 additions & 3 deletions src/services/TeamService.js
Original file line number Diff line number Diff line change
@@ -1,15 +1,46 @@
const { Op } = require('sequelize');
const Team = require('../models/TeamModel');
const User = require('../models/UserModel');

class TeamService {
static async createTeam(teamData) {
try {
const newTeam = await Team.create(teamData);
return newTeam;
} catch (error) {
console.log(error)
throw new Error('Team creation failed.');
}
}

static async findAll() {
try {
const allTeams = await Team.findAll({
include: { model: User, as: 'members' },
});

return allTeams;
} catch (error) {
console.log(error)
throw new Error('Team Query Failed.');
}
}

static async find(id) {
try {
const teams = await Team.findAll({
where: { id: { [Op.eq]: id } },
include: { model: User, as: 'members' },
limit: 1
});

return teams[0];
} catch (error) {
console.log(error)
throw new Error('Team Query Failed.');
}
}

static async addMemberToTeam(teamId, memberId) {
try {
const team = await Team.findByPk(teamId);
Expand Down Expand Up @@ -45,9 +76,6 @@ class TeamService {
}
}


// Add other methods as needed

}

module.exports = TeamService;

0 comments on commit 8caf1e9

Please sign in to comment.