Skip to content
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
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
The diff you're trying to view is too large. We only load the first 3000 changed files.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
module_modules
100 changes: 100 additions & 0 deletions api/server.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,103 @@
// SUNUCUYU BU DOSYAYA KURUN

const express = require('express');
const Users = require('./users/model');

const server = express();
server.use(express.json());


function requireNameAndBioForCreate(req, res, next) {
const { name, bio } = req.body || {};
if (typeof name !== 'string' || name.trim() === '' ||
typeof bio !== 'string' || bio.trim() === '') {
return res.status(400).json({ message: "Lütfen kullanıcı için bir name ve bio sağlayın" });
}
req.body.name = name.trim();
req.body.bio = bio.trim();
next();
}

function requireNameAndBioForUpdate(req, res, next) {
const { name, bio } = req.body || {};
if (typeof name !== 'string' || name.trim() === '' ||
typeof bio !== 'string' || bio.trim() === '') {
return res.status(400).json({ message: "Lütfen kullanıcı için name ve bio sağlayın" });
}
req.body.name = name.trim();
req.body.bio = bio.trim();
next();
}

async function ensureUser(req, res, next) {
try {
const user = await Users.findById(req.params.id);
if (!user) {
req._notFound = true;
return next();
}
req.user = user;
next();
} catch (err) {
next(err);
}
}



server.post('/api/users', requireNameAndBioForCreate, async (req, res) => {
try {
const created = await Users.insert({ name: req.body.name, bio: req.body.bio });
res.status(201).json(created);
} catch {
res.status(500).json({ message: "Veritabanına kaydedilirken bir hata oluştu" });
}
});


server.get('/api/users', async (_req, res) => {
try {
const list = await Users.find();
res.json(list);
} catch {
res.status(500).json({ message: "Kullanıcı bilgileri alınamadı" });
}
});


server.get('/api/users/:id', ensureUser, (req, res) => {
if (req._notFound) {
return res.status(404).json({ message: "Belirtilen ID'li kullanıcı bulunamadı" });
}
res.json(req.user);
});


server.delete('/api/users/:id', ensureUser, async (req, res) => {
if (req._notFound) {

return res.status(404).json({ message: "Belirtilen ID li kullanıcı bulunamadı" });
}
try {
const deleted = await Users.remove(req.params.id);
res.json(deleted);
} catch {
res.status(500).json({ message: "Kullanıcı silinemedi" });
}
});


server.put('/api/users/:id', ensureUser, requireNameAndBioForUpdate, async (req, res) => {
if (req._notFound) {
return res.status(404).json({ message: "Belirtilen ID'li kullanıcı bulunamadı" });
}
try {
const updated = await Users.update(req.params.id, { name: req.body.name, bio: req.body.bio });
res.json(updated);
} catch {
res.status(500).json({ message: "Kullanıcı bilgileri güncellenemedi" });
}
});

module.exports = {}; // SERVERINIZI EXPORT EDİN {}
module.exports = server;
3 changes: 3 additions & 0 deletions index.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,6 @@ const server = require('./api/server');
const port = 9000;

// START YOUR SERVER HERE
server.listen(port, () => {
console.log(`Server ${port} üzerinde çalışıyor`);
});
16 changes: 16 additions & 0 deletions node_modules/.bin/acorn

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

17 changes: 17 additions & 0 deletions node_modules/.bin/acorn.cmd

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

28 changes: 28 additions & 0 deletions node_modules/.bin/acorn.ps1

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

16 changes: 16 additions & 0 deletions node_modules/.bin/browserslist

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

17 changes: 17 additions & 0 deletions node_modules/.bin/browserslist.cmd

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

28 changes: 28 additions & 0 deletions node_modules/.bin/browserslist.ps1

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

16 changes: 16 additions & 0 deletions node_modules/.bin/cross-env

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

16 changes: 16 additions & 0 deletions node_modules/.bin/cross-env-shell

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

17 changes: 17 additions & 0 deletions node_modules/.bin/cross-env-shell.cmd

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

28 changes: 28 additions & 0 deletions node_modules/.bin/cross-env-shell.ps1

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

17 changes: 17 additions & 0 deletions node_modules/.bin/cross-env.cmd

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

28 changes: 28 additions & 0 deletions node_modules/.bin/cross-env.ps1

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

16 changes: 16 additions & 0 deletions node_modules/.bin/eslint

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

Loading