api
This commit is contained in:
parent
1062116c8e
commit
e0076fab43
49
auth-service/src/controllers/permissionController.js
Normal file
49
auth-service/src/controllers/permissionController.js
Normal file
@ -0,0 +1,49 @@
|
||||
import { Permission } from '../models/index.js';
|
||||
|
||||
export default {
|
||||
async create(req, res) {
|
||||
try {
|
||||
const permission = await Permission.create(req.body);
|
||||
res.status(201).json(permission);
|
||||
} catch (err) {
|
||||
res.status(400).json({ error: err.message });
|
||||
}
|
||||
},
|
||||
async getAll(req, res) {
|
||||
try {
|
||||
const permissions = await Permission.findAll();
|
||||
res.json(permissions);
|
||||
} catch (err) {
|
||||
res.status(500).json({ error: err.message });
|
||||
}
|
||||
},
|
||||
async getById(req, res) {
|
||||
try {
|
||||
const permission = await Permission.findByPk(req.params.id);
|
||||
if (!permission) return res.status(404).json({ error: 'Permission not found' });
|
||||
res.json(permission);
|
||||
} catch (err) {
|
||||
res.status(500).json({ error: err.message });
|
||||
}
|
||||
},
|
||||
async update(req, res) {
|
||||
try {
|
||||
const permission = await Permission.findByPk(req.params.id);
|
||||
if (!permission) return res.status(404).json({ error: 'Permission not found' });
|
||||
await permission.update(req.body);
|
||||
res.json(permission);
|
||||
} catch (err) {
|
||||
res.status(400).json({ error: err.message });
|
||||
}
|
||||
},
|
||||
async delete(req, res) {
|
||||
try {
|
||||
const permission = await Permission.findByPk(req.params.id);
|
||||
if (!permission) return res.status(404).json({ error: 'Permission not found' });
|
||||
await permission.destroy();
|
||||
res.json({ message: 'Permission deleted' });
|
||||
} catch (err) {
|
||||
res.status(500).json({ error: err.message });
|
||||
}
|
||||
},
|
||||
};
|
||||
49
auth-service/src/controllers/roleController.js
Normal file
49
auth-service/src/controllers/roleController.js
Normal file
@ -0,0 +1,49 @@
|
||||
import { Role, Permission } from '../models/index.js';
|
||||
|
||||
export default {
|
||||
async create(req, res) {
|
||||
try {
|
||||
const role = await Role.create(req.body);
|
||||
res.status(201).json(role);
|
||||
} catch (err) {
|
||||
res.status(400).json({ error: err.message });
|
||||
}
|
||||
},
|
||||
async getAll(req, res) {
|
||||
try {
|
||||
const roles = await Role.findAll({ include: Permission });
|
||||
res.json(roles);
|
||||
} catch (err) {
|
||||
res.status(500).json({ error: err.message });
|
||||
}
|
||||
},
|
||||
async getById(req, res) {
|
||||
try {
|
||||
const role = await Role.findByPk(req.params.id, { include: Permission });
|
||||
if (!role) return res.status(404).json({ error: 'Role not found' });
|
||||
res.json(role);
|
||||
} catch (err) {
|
||||
res.status(500).json({ error: err.message });
|
||||
}
|
||||
},
|
||||
async update(req, res) {
|
||||
try {
|
||||
const role = await Role.findByPk(req.params.id);
|
||||
if (!role) return res.status(404).json({ error: 'Role not found' });
|
||||
await role.update(req.body);
|
||||
res.json(role);
|
||||
} catch (err) {
|
||||
res.status(400).json({ error: err.message });
|
||||
}
|
||||
},
|
||||
async delete(req, res) {
|
||||
try {
|
||||
const role = await Role.findByPk(req.params.id);
|
||||
if (!role) return res.status(404).json({ error: 'Role not found' });
|
||||
await role.destroy();
|
||||
res.json({ message: 'Role deleted' });
|
||||
} catch (err) {
|
||||
res.status(500).json({ error: err.message });
|
||||
}
|
||||
},
|
||||
};
|
||||
49
auth-service/src/controllers/rolePermissionController.js
Normal file
49
auth-service/src/controllers/rolePermissionController.js
Normal file
@ -0,0 +1,49 @@
|
||||
import { RolePermission, Role, Permission } from '../models/index.js';
|
||||
|
||||
export default {
|
||||
async create(req, res) {
|
||||
try {
|
||||
const rolePermission = await RolePermission.create(req.body);
|
||||
res.status(201).json(rolePermission);
|
||||
} catch (err) {
|
||||
res.status(400).json({ error: err.message });
|
||||
}
|
||||
},
|
||||
async getAll(req, res) {
|
||||
try {
|
||||
const rolePermissions = await RolePermission.findAll({ include: [Role, Permission] });
|
||||
res.json(rolePermissions);
|
||||
} catch (err) {
|
||||
res.status(500).json({ error: err.message });
|
||||
}
|
||||
},
|
||||
async getById(req, res) {
|
||||
try {
|
||||
const rolePermission = await RolePermission.findByPk(req.params.id, { include: [Role, Permission] });
|
||||
if (!rolePermission) return res.status(404).json({ error: 'RolePermission not found' });
|
||||
res.json(rolePermission);
|
||||
} catch (err) {
|
||||
res.status(500).json({ error: err.message });
|
||||
}
|
||||
},
|
||||
async update(req, res) {
|
||||
try {
|
||||
const rolePermission = await RolePermission.findByPk(req.params.id);
|
||||
if (!rolePermission) return res.status(404).json({ error: 'RolePermission not found' });
|
||||
await rolePermission.update(req.body);
|
||||
res.json(rolePermission);
|
||||
} catch (err) {
|
||||
res.status(400).json({ error: err.message });
|
||||
}
|
||||
},
|
||||
async delete(req, res) {
|
||||
try {
|
||||
const rolePermission = await RolePermission.findByPk(req.params.id);
|
||||
if (!rolePermission) return res.status(404).json({ error: 'RolePermission not found' });
|
||||
await rolePermission.destroy();
|
||||
res.json({ message: 'RolePermission deleted' });
|
||||
} catch (err) {
|
||||
res.status(500).json({ error: err.message });
|
||||
}
|
||||
},
|
||||
};
|
||||
49
auth-service/src/controllers/userController.js
Normal file
49
auth-service/src/controllers/userController.js
Normal file
@ -0,0 +1,49 @@
|
||||
import { User, Role } from '../models/index.js';
|
||||
|
||||
export default {
|
||||
async create(req, res) {
|
||||
try {
|
||||
const user = await User.create(req.body);
|
||||
res.status(201).json(user);
|
||||
} catch (err) {
|
||||
res.status(400).json({ error: err.message });
|
||||
}
|
||||
},
|
||||
async getAll(req, res) {
|
||||
try {
|
||||
const users = await User.findAll({ include: Role });
|
||||
res.json(users);
|
||||
} catch (err) {
|
||||
res.status(500).json({ error: err.message });
|
||||
}
|
||||
},
|
||||
async getById(req, res) {
|
||||
try {
|
||||
const user = await User.findByPk(req.params.id, { include: Role });
|
||||
if (!user) return res.status(404).json({ error: 'User not found' });
|
||||
res.json(user);
|
||||
} catch (err) {
|
||||
res.status(500).json({ error: err.message });
|
||||
}
|
||||
},
|
||||
async update(req, res) {
|
||||
try {
|
||||
const user = await User.findByPk(req.params.id);
|
||||
if (!user) return res.status(404).json({ error: 'User not found' });
|
||||
await user.update(req.body);
|
||||
res.json(user);
|
||||
} catch (err) {
|
||||
res.status(400).json({ error: err.message });
|
||||
}
|
||||
},
|
||||
async delete(req, res) {
|
||||
try {
|
||||
const user = await User.findByPk(req.params.id);
|
||||
if (!user) return res.status(404).json({ error: 'User not found' });
|
||||
await user.destroy();
|
||||
res.json({ message: 'User deleted' });
|
||||
} catch (err) {
|
||||
res.status(500).json({ error: err.message });
|
||||
}
|
||||
},
|
||||
};
|
||||
@ -2,9 +2,11 @@ import dotenv from 'dotenv';
|
||||
dotenv.config();
|
||||
import express from 'express';
|
||||
import { sequelize } from './models/index.js';
|
||||
import routes from './routes/index.js';
|
||||
|
||||
const app = express();
|
||||
app.use(express.json());
|
||||
app.use('/api/auth', routes);
|
||||
|
||||
app.get('/', (req, res) => {
|
||||
res.send('Auth Service is running');
|
||||
|
||||
14
auth-service/src/routes/index.js
Normal file
14
auth-service/src/routes/index.js
Normal file
@ -0,0 +1,14 @@
|
||||
import { Router } from 'express';
|
||||
import userRoutes from './user.js';
|
||||
import roleRoutes from './role.js';
|
||||
import permissionRoutes from './permission.js';
|
||||
import rolePermissionRoutes from './rolePermission.js';
|
||||
|
||||
const router = Router();
|
||||
|
||||
router.use('/users', userRoutes);
|
||||
router.use('/roles', roleRoutes);
|
||||
router.use('/permissions', permissionRoutes);
|
||||
router.use('/role-permissions', rolePermissionRoutes);
|
||||
|
||||
export default router;
|
||||
12
auth-service/src/routes/permission.js
Normal file
12
auth-service/src/routes/permission.js
Normal file
@ -0,0 +1,12 @@
|
||||
import { Router } from 'express';
|
||||
import permissionController from '../controllers/permissionController.js';
|
||||
|
||||
const router = Router();
|
||||
|
||||
router.post('/', permissionController.create);
|
||||
router.get('/', permissionController.getAll);
|
||||
router.get('/:id', permissionController.getById);
|
||||
router.put('/:id', permissionController.update);
|
||||
router.delete('/:id', permissionController.delete);
|
||||
|
||||
export default router;
|
||||
12
auth-service/src/routes/role.js
Normal file
12
auth-service/src/routes/role.js
Normal file
@ -0,0 +1,12 @@
|
||||
import { Router } from 'express';
|
||||
import roleController from '../controllers/roleController.js';
|
||||
|
||||
const router = Router();
|
||||
|
||||
router.post('/', roleController.create);
|
||||
router.get('/', roleController.getAll);
|
||||
router.get('/:id', roleController.getById);
|
||||
router.put('/:id', roleController.update);
|
||||
router.delete('/:id', roleController.delete);
|
||||
|
||||
export default router;
|
||||
12
auth-service/src/routes/rolePermission.js
Normal file
12
auth-service/src/routes/rolePermission.js
Normal file
@ -0,0 +1,12 @@
|
||||
import { Router } from 'express';
|
||||
import rolePermissionController from '../controllers/rolePermissionController.js';
|
||||
|
||||
const router = Router();
|
||||
|
||||
router.post('/', rolePermissionController.create);
|
||||
router.get('/', rolePermissionController.getAll);
|
||||
router.get('/:id', rolePermissionController.getById);
|
||||
router.put('/:id', rolePermissionController.update);
|
||||
router.delete('/:id', rolePermissionController.delete);
|
||||
|
||||
export default router;
|
||||
12
auth-service/src/routes/user.js
Normal file
12
auth-service/src/routes/user.js
Normal file
@ -0,0 +1,12 @@
|
||||
import { Router } from 'express';
|
||||
import userController from '../controllers/userController.js';
|
||||
|
||||
const router = Router();
|
||||
|
||||
router.post('/', userController.create);
|
||||
router.get('/', userController.getAll);
|
||||
router.get('/:id', userController.getById);
|
||||
router.put('/:id', userController.update);
|
||||
router.delete('/:id', userController.delete);
|
||||
|
||||
export default router;
|
||||
0
data/logs/proxy-host-1_access.log
Normal file
0
data/logs/proxy-host-1_access.log
Normal file
0
data/logs/proxy-host-1_error.log
Normal file
0
data/logs/proxy-host-1_error.log
Normal file
104
data/nginx/proxy_host/1.conf
Normal file
104
data/nginx/proxy_host/1.conf
Normal file
@ -0,0 +1,104 @@
|
||||
# ------------------------------------------------------------
|
||||
# project.ru
|
||||
# ------------------------------------------------------------
|
||||
|
||||
|
||||
|
||||
map $scheme $hsts_header {
|
||||
https "max-age=63072000; preload";
|
||||
}
|
||||
|
||||
server {
|
||||
set $forward_scheme http;
|
||||
set $server "client";
|
||||
set $port 80;
|
||||
|
||||
listen 80;
|
||||
listen [::]:80;
|
||||
|
||||
|
||||
server_name project.ru;
|
||||
http2 off;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
access_log /data/logs/proxy-host-1_access.log proxy;
|
||||
error_log /data/logs/proxy-host-1_error.log warn;
|
||||
|
||||
|
||||
|
||||
location /api/auth {
|
||||
|
||||
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Forwarded-Scheme $scheme;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
proxy_set_header X-Forwarded-For $remote_addr;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
|
||||
proxy_pass http://auth-service:3000;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
location /api/mail {
|
||||
|
||||
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Forwarded-Scheme $scheme;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
proxy_set_header X-Forwarded-For $remote_addr;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
|
||||
proxy_pass http://mail-service:3000;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
location / {
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# Proxy!
|
||||
include conf.d/include/proxy.conf;
|
||||
}
|
||||
|
||||
|
||||
# Custom
|
||||
include /data/nginx/custom/server_proxy[.]conf;
|
||||
}
|
||||
|
||||
49
mail-service/src/controllers/campaignController.js
Normal file
49
mail-service/src/controllers/campaignController.js
Normal file
@ -0,0 +1,49 @@
|
||||
import { Campaign, EmailTemplateVersion, MailingGroup } from '../models/index.js';
|
||||
|
||||
export default {
|
||||
async create(req, res) {
|
||||
try {
|
||||
const campaign = await Campaign.create(req.body);
|
||||
res.status(201).json(campaign);
|
||||
} catch (err) {
|
||||
res.status(400).json({ error: err.message });
|
||||
}
|
||||
},
|
||||
async getAll(req, res) {
|
||||
try {
|
||||
const campaigns = await Campaign.findAll({ include: [EmailTemplateVersion, MailingGroup] });
|
||||
res.json(campaigns);
|
||||
} catch (err) {
|
||||
res.status(500).json({ error: err.message });
|
||||
}
|
||||
},
|
||||
async getById(req, res) {
|
||||
try {
|
||||
const campaign = await Campaign.findByPk(req.params.id, { include: [EmailTemplateVersion, MailingGroup] });
|
||||
if (!campaign) return res.status(404).json({ error: 'Campaign not found' });
|
||||
res.json(campaign);
|
||||
} catch (err) {
|
||||
res.status(500).json({ error: err.message });
|
||||
}
|
||||
},
|
||||
async update(req, res) {
|
||||
try {
|
||||
const campaign = await Campaign.findByPk(req.params.id);
|
||||
if (!campaign) return res.status(404).json({ error: 'Campaign not found' });
|
||||
await campaign.update(req.body);
|
||||
res.json(campaign);
|
||||
} catch (err) {
|
||||
res.status(400).json({ error: err.message });
|
||||
}
|
||||
},
|
||||
async delete(req, res) {
|
||||
try {
|
||||
const campaign = await Campaign.findByPk(req.params.id);
|
||||
if (!campaign) return res.status(404).json({ error: 'Campaign not found' });
|
||||
await campaign.destroy();
|
||||
res.json({ message: 'Campaign deleted' });
|
||||
} catch (err) {
|
||||
res.status(500).json({ error: err.message });
|
||||
}
|
||||
},
|
||||
};
|
||||
49
mail-service/src/controllers/deliveryLogController.js
Normal file
49
mail-service/src/controllers/deliveryLogController.js
Normal file
@ -0,0 +1,49 @@
|
||||
import { DeliveryLog, Campaign, Subscriber } from '../models/index.js';
|
||||
|
||||
export default {
|
||||
async create(req, res) {
|
||||
try {
|
||||
const log = await DeliveryLog.create(req.body);
|
||||
res.status(201).json(log);
|
||||
} catch (err) {
|
||||
res.status(400).json({ error: err.message });
|
||||
}
|
||||
},
|
||||
async getAll(req, res) {
|
||||
try {
|
||||
const logs = await DeliveryLog.findAll({ include: [Campaign, Subscriber] });
|
||||
res.json(logs);
|
||||
} catch (err) {
|
||||
res.status(500).json({ error: err.message });
|
||||
}
|
||||
},
|
||||
async getById(req, res) {
|
||||
try {
|
||||
const log = await DeliveryLog.findByPk(req.params.id, { include: [Campaign, Subscriber] });
|
||||
if (!log) return res.status(404).json({ error: 'DeliveryLog not found' });
|
||||
res.json(log);
|
||||
} catch (err) {
|
||||
res.status(500).json({ error: err.message });
|
||||
}
|
||||
},
|
||||
async update(req, res) {
|
||||
try {
|
||||
const log = await DeliveryLog.findByPk(req.params.id);
|
||||
if (!log) return res.status(404).json({ error: 'DeliveryLog not found' });
|
||||
await log.update(req.body);
|
||||
res.json(log);
|
||||
} catch (err) {
|
||||
res.status(400).json({ error: err.message });
|
||||
}
|
||||
},
|
||||
async delete(req, res) {
|
||||
try {
|
||||
const log = await DeliveryLog.findByPk(req.params.id);
|
||||
if (!log) return res.status(404).json({ error: 'DeliveryLog not found' });
|
||||
await log.destroy();
|
||||
res.json({ message: 'DeliveryLog deleted' });
|
||||
} catch (err) {
|
||||
res.status(500).json({ error: err.message });
|
||||
}
|
||||
},
|
||||
};
|
||||
49
mail-service/src/controllers/emailTemplateController.js
Normal file
49
mail-service/src/controllers/emailTemplateController.js
Normal file
@ -0,0 +1,49 @@
|
||||
import { EmailTemplate, EmailTemplateVersion } from '../models/index.js';
|
||||
|
||||
export default {
|
||||
async create(req, res) {
|
||||
try {
|
||||
const template = await EmailTemplate.create(req.body);
|
||||
res.status(201).json(template);
|
||||
} catch (err) {
|
||||
res.status(400).json({ error: err.message });
|
||||
}
|
||||
},
|
||||
async getAll(req, res) {
|
||||
try {
|
||||
const templates = await EmailTemplate.findAll({ include: EmailTemplateVersion });
|
||||
res.json(templates);
|
||||
} catch (err) {
|
||||
res.status(500).json({ error: err.message });
|
||||
}
|
||||
},
|
||||
async getById(req, res) {
|
||||
try {
|
||||
const template = await EmailTemplate.findByPk(req.params.id, { include: EmailTemplateVersion });
|
||||
if (!template) return res.status(404).json({ error: 'EmailTemplate not found' });
|
||||
res.json(template);
|
||||
} catch (err) {
|
||||
res.status(500).json({ error: err.message });
|
||||
}
|
||||
},
|
||||
async update(req, res) {
|
||||
try {
|
||||
const template = await EmailTemplate.findByPk(req.params.id);
|
||||
if (!template) return res.status(404).json({ error: 'EmailTemplate not found' });
|
||||
await template.update(req.body);
|
||||
res.json(template);
|
||||
} catch (err) {
|
||||
res.status(400).json({ error: err.message });
|
||||
}
|
||||
},
|
||||
async delete(req, res) {
|
||||
try {
|
||||
const template = await EmailTemplate.findByPk(req.params.id);
|
||||
if (!template) return res.status(404).json({ error: 'EmailTemplate not found' });
|
||||
await template.destroy();
|
||||
res.json({ message: 'EmailTemplate deleted' });
|
||||
} catch (err) {
|
||||
res.status(500).json({ error: err.message });
|
||||
}
|
||||
},
|
||||
};
|
||||
@ -0,0 +1,49 @@
|
||||
import { EmailTemplateVersion, EmailTemplate } from '../models/index.js';
|
||||
|
||||
export default {
|
||||
async create(req, res) {
|
||||
try {
|
||||
const version = await EmailTemplateVersion.create(req.body);
|
||||
res.status(201).json(version);
|
||||
} catch (err) {
|
||||
res.status(400).json({ error: err.message });
|
||||
}
|
||||
},
|
||||
async getAll(req, res) {
|
||||
try {
|
||||
const versions = await EmailTemplateVersion.findAll({ include: EmailTemplate });
|
||||
res.json(versions);
|
||||
} catch (err) {
|
||||
res.status(500).json({ error: err.message });
|
||||
}
|
||||
},
|
||||
async getById(req, res) {
|
||||
try {
|
||||
const version = await EmailTemplateVersion.findByPk(req.params.id, { include: EmailTemplate });
|
||||
if (!version) return res.status(404).json({ error: 'EmailTemplateVersion not found' });
|
||||
res.json(version);
|
||||
} catch (err) {
|
||||
res.status(500).json({ error: err.message });
|
||||
}
|
||||
},
|
||||
async update(req, res) {
|
||||
try {
|
||||
const version = await EmailTemplateVersion.findByPk(req.params.id);
|
||||
if (!version) return res.status(404).json({ error: 'EmailTemplateVersion not found' });
|
||||
await version.update(req.body);
|
||||
res.json(version);
|
||||
} catch (err) {
|
||||
res.status(400).json({ error: err.message });
|
||||
}
|
||||
},
|
||||
async delete(req, res) {
|
||||
try {
|
||||
const version = await EmailTemplateVersion.findByPk(req.params.id);
|
||||
if (!version) return res.status(404).json({ error: 'EmailTemplateVersion not found' });
|
||||
await version.destroy();
|
||||
res.json({ message: 'EmailTemplateVersion deleted' });
|
||||
} catch (err) {
|
||||
res.status(500).json({ error: err.message });
|
||||
}
|
||||
},
|
||||
};
|
||||
49
mail-service/src/controllers/groupSubscriberController.js
Normal file
49
mail-service/src/controllers/groupSubscriberController.js
Normal file
@ -0,0 +1,49 @@
|
||||
import { GroupSubscriber, MailingGroup, Subscriber } from '../models/index.js';
|
||||
|
||||
export default {
|
||||
async create(req, res) {
|
||||
try {
|
||||
const groupSubscriber = await GroupSubscriber.create(req.body);
|
||||
res.status(201).json(groupSubscriber);
|
||||
} catch (err) {
|
||||
res.status(400).json({ error: err.message });
|
||||
}
|
||||
},
|
||||
async getAll(req, res) {
|
||||
try {
|
||||
const groupSubscribers = await GroupSubscriber.findAll({ include: [MailingGroup, Subscriber] });
|
||||
res.json(groupSubscribers);
|
||||
} catch (err) {
|
||||
res.status(500).json({ error: err.message });
|
||||
}
|
||||
},
|
||||
async getById(req, res) {
|
||||
try {
|
||||
const groupSubscriber = await GroupSubscriber.findByPk(req.params.id, { include: [MailingGroup, Subscriber] });
|
||||
if (!groupSubscriber) return res.status(404).json({ error: 'GroupSubscriber not found' });
|
||||
res.json(groupSubscriber);
|
||||
} catch (err) {
|
||||
res.status(500).json({ error: err.message });
|
||||
}
|
||||
},
|
||||
async update(req, res) {
|
||||
try {
|
||||
const groupSubscriber = await GroupSubscriber.findByPk(req.params.id);
|
||||
if (!groupSubscriber) return res.status(404).json({ error: 'GroupSubscriber not found' });
|
||||
await groupSubscriber.update(req.body);
|
||||
res.json(groupSubscriber);
|
||||
} catch (err) {
|
||||
res.status(400).json({ error: err.message });
|
||||
}
|
||||
},
|
||||
async delete(req, res) {
|
||||
try {
|
||||
const groupSubscriber = await GroupSubscriber.findByPk(req.params.id);
|
||||
if (!groupSubscriber) return res.status(404).json({ error: 'GroupSubscriber not found' });
|
||||
await groupSubscriber.destroy();
|
||||
res.json({ message: 'GroupSubscriber deleted' });
|
||||
} catch (err) {
|
||||
res.status(500).json({ error: err.message });
|
||||
}
|
||||
},
|
||||
};
|
||||
49
mail-service/src/controllers/mailingGroupController.js
Normal file
49
mail-service/src/controllers/mailingGroupController.js
Normal file
@ -0,0 +1,49 @@
|
||||
import { MailingGroup, SmtpServer } from '../models/index.js';
|
||||
|
||||
export default {
|
||||
async create(req, res) {
|
||||
try {
|
||||
const group = await MailingGroup.create(req.body);
|
||||
res.status(201).json(group);
|
||||
} catch (err) {
|
||||
res.status(400).json({ error: err.message });
|
||||
}
|
||||
},
|
||||
async getAll(req, res) {
|
||||
try {
|
||||
const groups = await MailingGroup.findAll({ include: SmtpServer });
|
||||
res.json(groups);
|
||||
} catch (err) {
|
||||
res.status(500).json({ error: err.message });
|
||||
}
|
||||
},
|
||||
async getById(req, res) {
|
||||
try {
|
||||
const group = await MailingGroup.findByPk(req.params.id, { include: SmtpServer });
|
||||
if (!group) return res.status(404).json({ error: 'MailingGroup not found' });
|
||||
res.json(group);
|
||||
} catch (err) {
|
||||
res.status(500).json({ error: err.message });
|
||||
}
|
||||
},
|
||||
async update(req, res) {
|
||||
try {
|
||||
const group = await MailingGroup.findByPk(req.params.id);
|
||||
if (!group) return res.status(404).json({ error: 'MailingGroup not found' });
|
||||
await group.update(req.body);
|
||||
res.json(group);
|
||||
} catch (err) {
|
||||
res.status(400).json({ error: err.message });
|
||||
}
|
||||
},
|
||||
async delete(req, res) {
|
||||
try {
|
||||
const group = await MailingGroup.findByPk(req.params.id);
|
||||
if (!group) return res.status(404).json({ error: 'MailingGroup not found' });
|
||||
await group.destroy();
|
||||
res.json({ message: 'MailingGroup deleted' });
|
||||
} catch (err) {
|
||||
res.status(500).json({ error: err.message });
|
||||
}
|
||||
},
|
||||
};
|
||||
49
mail-service/src/controllers/smtpServerController.js
Normal file
49
mail-service/src/controllers/smtpServerController.js
Normal file
@ -0,0 +1,49 @@
|
||||
import { SmtpServer, MailingGroup } from '../models/index.js';
|
||||
|
||||
export default {
|
||||
async create(req, res) {
|
||||
try {
|
||||
const smtp = await SmtpServer.create(req.body);
|
||||
res.status(201).json(smtp);
|
||||
} catch (err) {
|
||||
res.status(400).json({ error: err.message });
|
||||
}
|
||||
},
|
||||
async getAll(req, res) {
|
||||
try {
|
||||
const servers = await SmtpServer.findAll({ include: MailingGroup });
|
||||
res.json(servers);
|
||||
} catch (err) {
|
||||
res.status(500).json({ error: err.message });
|
||||
}
|
||||
},
|
||||
async getById(req, res) {
|
||||
try {
|
||||
const smtp = await SmtpServer.findByPk(req.params.id, { include: MailingGroup });
|
||||
if (!smtp) return res.status(404).json({ error: 'SmtpServer not found' });
|
||||
res.json(smtp);
|
||||
} catch (err) {
|
||||
res.status(500).json({ error: err.message });
|
||||
}
|
||||
},
|
||||
async update(req, res) {
|
||||
try {
|
||||
const smtp = await SmtpServer.findByPk(req.params.id);
|
||||
if (!smtp) return res.status(404).json({ error: 'SmtpServer not found' });
|
||||
await smtp.update(req.body);
|
||||
res.json(smtp);
|
||||
} catch (err) {
|
||||
res.status(400).json({ error: err.message });
|
||||
}
|
||||
},
|
||||
async delete(req, res) {
|
||||
try {
|
||||
const smtp = await SmtpServer.findByPk(req.params.id);
|
||||
if (!smtp) return res.status(404).json({ error: 'SmtpServer not found' });
|
||||
await smtp.destroy();
|
||||
res.json({ message: 'SmtpServer deleted' });
|
||||
} catch (err) {
|
||||
res.status(500).json({ error: err.message });
|
||||
}
|
||||
},
|
||||
};
|
||||
49
mail-service/src/controllers/subscriberController.js
Normal file
49
mail-service/src/controllers/subscriberController.js
Normal file
@ -0,0 +1,49 @@
|
||||
import { Subscriber } from '../models/index.js';
|
||||
|
||||
export default {
|
||||
async create(req, res) {
|
||||
try {
|
||||
const subscriber = await Subscriber.create(req.body);
|
||||
res.status(201).json(subscriber);
|
||||
} catch (err) {
|
||||
res.status(400).json({ error: err.message });
|
||||
}
|
||||
},
|
||||
async getAll(req, res) {
|
||||
try {
|
||||
const subscribers = await Subscriber.findAll();
|
||||
res.json(subscribers);
|
||||
} catch (err) {
|
||||
res.status(500).json({ error: err.message });
|
||||
}
|
||||
},
|
||||
async getById(req, res) {
|
||||
try {
|
||||
const subscriber = await Subscriber.findByPk(req.params.id);
|
||||
if (!subscriber) return res.status(404).json({ error: 'Subscriber not found' });
|
||||
res.json(subscriber);
|
||||
} catch (err) {
|
||||
res.status(500).json({ error: err.message });
|
||||
}
|
||||
},
|
||||
async update(req, res) {
|
||||
try {
|
||||
const subscriber = await Subscriber.findByPk(req.params.id);
|
||||
if (!subscriber) return res.status(404).json({ error: 'Subscriber not found' });
|
||||
await subscriber.update(req.body);
|
||||
res.json(subscriber);
|
||||
} catch (err) {
|
||||
res.status(400).json({ error: err.message });
|
||||
}
|
||||
},
|
||||
async delete(req, res) {
|
||||
try {
|
||||
const subscriber = await Subscriber.findByPk(req.params.id);
|
||||
if (!subscriber) return res.status(404).json({ error: 'Subscriber not found' });
|
||||
await subscriber.destroy();
|
||||
res.json({ message: 'Subscriber deleted' });
|
||||
} catch (err) {
|
||||
res.status(500).json({ error: err.message });
|
||||
}
|
||||
},
|
||||
};
|
||||
@ -2,6 +2,7 @@ import dotenv from 'dotenv';
|
||||
dotenv.config();
|
||||
import express from 'express';
|
||||
import { sequelize } from './models/index.js';
|
||||
import routes from './routes/index.js';
|
||||
|
||||
const app = express();
|
||||
app.use(express.json());
|
||||
@ -10,6 +11,8 @@ app.get('/', (req, res) => {
|
||||
res.send('Mail Service is running');
|
||||
});
|
||||
|
||||
app.use('/api/mail', routes);
|
||||
|
||||
(async () => {
|
||||
try {
|
||||
await sequelize.authenticate();
|
||||
|
||||
12
mail-service/src/routes/campaign.js
Normal file
12
mail-service/src/routes/campaign.js
Normal file
@ -0,0 +1,12 @@
|
||||
import { Router } from 'express';
|
||||
import campaignController from '../controllers/campaignController.js';
|
||||
|
||||
const router = Router();
|
||||
|
||||
router.post('/', campaignController.create);
|
||||
router.get('/', campaignController.getAll);
|
||||
router.get('/:id', campaignController.getById);
|
||||
router.put('/:id', campaignController.update);
|
||||
router.delete('/:id', campaignController.delete);
|
||||
|
||||
export default router;
|
||||
12
mail-service/src/routes/deliveryLog.js
Normal file
12
mail-service/src/routes/deliveryLog.js
Normal file
@ -0,0 +1,12 @@
|
||||
import { Router } from 'express';
|
||||
import deliveryLogController from '../controllers/deliveryLogController.js';
|
||||
|
||||
const router = Router();
|
||||
|
||||
router.post('/', deliveryLogController.create);
|
||||
router.get('/', deliveryLogController.getAll);
|
||||
router.get('/:id', deliveryLogController.getById);
|
||||
router.put('/:id', deliveryLogController.update);
|
||||
router.delete('/:id', deliveryLogController.delete);
|
||||
|
||||
export default router;
|
||||
12
mail-service/src/routes/emailTemplate.js
Normal file
12
mail-service/src/routes/emailTemplate.js
Normal file
@ -0,0 +1,12 @@
|
||||
import { Router } from 'express';
|
||||
import emailTemplateController from '../controllers/emailTemplateController.js';
|
||||
|
||||
const router = Router();
|
||||
|
||||
router.post('/', emailTemplateController.create);
|
||||
router.get('/', emailTemplateController.getAll);
|
||||
router.get('/:id', emailTemplateController.getById);
|
||||
router.put('/:id', emailTemplateController.update);
|
||||
router.delete('/:id', emailTemplateController.delete);
|
||||
|
||||
export default router;
|
||||
12
mail-service/src/routes/emailTemplateVersion.js
Normal file
12
mail-service/src/routes/emailTemplateVersion.js
Normal file
@ -0,0 +1,12 @@
|
||||
import { Router } from 'express';
|
||||
import emailTemplateVersionController from '../controllers/emailTemplateVersionController.js';
|
||||
|
||||
const router = Router();
|
||||
|
||||
router.post('/', emailTemplateVersionController.create);
|
||||
router.get('/', emailTemplateVersionController.getAll);
|
||||
router.get('/:id', emailTemplateVersionController.getById);
|
||||
router.put('/:id', emailTemplateVersionController.update);
|
||||
router.delete('/:id', emailTemplateVersionController.delete);
|
||||
|
||||
export default router;
|
||||
12
mail-service/src/routes/groupSubscriber.js
Normal file
12
mail-service/src/routes/groupSubscriber.js
Normal file
@ -0,0 +1,12 @@
|
||||
import { Router } from 'express';
|
||||
import groupSubscriberController from '../controllers/groupSubscriberController.js';
|
||||
|
||||
const router = Router();
|
||||
|
||||
router.post('/', groupSubscriberController.create);
|
||||
router.get('/', groupSubscriberController.getAll);
|
||||
router.get('/:id', groupSubscriberController.getById);
|
||||
router.put('/:id', groupSubscriberController.update);
|
||||
router.delete('/:id', groupSubscriberController.delete);
|
||||
|
||||
export default router;
|
||||
22
mail-service/src/routes/index.js
Normal file
22
mail-service/src/routes/index.js
Normal file
@ -0,0 +1,22 @@
|
||||
import { Router } from 'express';
|
||||
import subscriberRoutes from './subscriber.js';
|
||||
import mailingGroupRoutes from './mailingGroup.js';
|
||||
import groupSubscriberRoutes from './groupSubscriber.js';
|
||||
import emailTemplateRoutes from './emailTemplate.js';
|
||||
import emailTemplateVersionRoutes from './emailTemplateVersion.js';
|
||||
import campaignRoutes from './campaign.js';
|
||||
import deliveryLogRoutes from './deliveryLog.js';
|
||||
import smtpServerRoutes from './smtpServer.js';
|
||||
|
||||
const router = Router();
|
||||
|
||||
router.use('/subscribers', subscriberRoutes);
|
||||
router.use('/mailing-groups', mailingGroupRoutes);
|
||||
router.use('/group-subscribers', groupSubscriberRoutes);
|
||||
router.use('/email-templates', emailTemplateRoutes);
|
||||
router.use('/email-template-versions', emailTemplateVersionRoutes);
|
||||
router.use('/campaigns', campaignRoutes);
|
||||
router.use('/delivery-logs', deliveryLogRoutes);
|
||||
router.use('/smtp-servers', smtpServerRoutes);
|
||||
|
||||
export default router;
|
||||
12
mail-service/src/routes/mailingGroup.js
Normal file
12
mail-service/src/routes/mailingGroup.js
Normal file
@ -0,0 +1,12 @@
|
||||
import { Router } from 'express';
|
||||
import mailingGroupController from '../controllers/mailingGroupController.js';
|
||||
|
||||
const router = Router();
|
||||
|
||||
router.post('/', mailingGroupController.create);
|
||||
router.get('/', mailingGroupController.getAll);
|
||||
router.get('/:id', mailingGroupController.getById);
|
||||
router.put('/:id', mailingGroupController.update);
|
||||
router.delete('/:id', mailingGroupController.delete);
|
||||
|
||||
export default router;
|
||||
12
mail-service/src/routes/smtpServer.js
Normal file
12
mail-service/src/routes/smtpServer.js
Normal file
@ -0,0 +1,12 @@
|
||||
import { Router } from 'express';
|
||||
import smtpServerController from '../controllers/smtpServerController.js';
|
||||
|
||||
const router = Router();
|
||||
|
||||
router.post('/', smtpServerController.create);
|
||||
router.get('/', smtpServerController.getAll);
|
||||
router.get('/:id', smtpServerController.getById);
|
||||
router.put('/:id', smtpServerController.update);
|
||||
router.delete('/:id', smtpServerController.delete);
|
||||
|
||||
export default router;
|
||||
12
mail-service/src/routes/subscriber.js
Normal file
12
mail-service/src/routes/subscriber.js
Normal file
@ -0,0 +1,12 @@
|
||||
import { Router } from 'express';
|
||||
import subscriberController from '../controllers/subscriberController.js';
|
||||
|
||||
const router = Router();
|
||||
|
||||
router.post('/', subscriberController.create);
|
||||
router.get('/', subscriberController.getAll);
|
||||
router.get('/:id', subscriberController.getById);
|
||||
router.put('/:id', subscriberController.update);
|
||||
router.delete('/:id', subscriberController.delete);
|
||||
|
||||
export default router;
|
||||
Loading…
Reference in New Issue
Block a user