프로그래밍/잡동산이

[nodejs] CRUD 기본코드

Nadahacker 2023. 2. 11. 21:14
반응형
const express = require('express');
const sqlite3 = require('sqlite3').verbose();
const app = express();

// Connect to database
const db = new sqlite3.Database(':memory:', (err) => {
  if (err) {
    console.error(err.message);
  }
  console.log('Connected to the in-memory SQlite database.');
});

// Initialize table
db.run('CREATE TABLE IF NOT EXISTS items (name text)');

app.use(express.json());

// Create a new item
app.post('/api/items', (req, res) => {
  const name = req.body.name;
  if (!name) {
    return res.status(400).json({error: 'Name is required'});
  }

  db.run('INSERT INTO items (name) VALUES (?)', name, function(err) {
    if (err) {
      return res.status(500).json({error: err.message});
    }
    res.json({id: this.lastID, name});
  });
});

// Read all items
app.get('/api/items', (req, res) => {
  db.all('SELECT * FROM items', (err, rows) => {
    if (err) {
      return res.status(500).json({error: err.message});
    }
    res.json(rows);
  });
});

// Read a single item
app.get('/api/items/:id', (req, res) => {
  const id = req.params.id;
  db.get('SELECT * FROM items WHERE id = ?', id, (err, row) => {
    if (err) {
      return res.status(500).json({error: err.message});
    }
    if (!row) {
      return res.status(404).json({error: 'Item not found'});
    }
    res.json(row);
  });
});

// Update an item
app.put('/api/items/:id', (req, res) => {
  const id = req.params.id;
  const name = req.body.name;
  if (!name) {
    return res.status(400).json({error: 'Name is required'});
  }

  db.run('UPDATE items SET name = ? WHERE id = ?', name, id, function(err) {
    if (err) {
      return res.status(500).json({error: err.message});
    }
    if (this.changes === 0) {
      return res.status(404).json({error: 'Item not found'});
    }
    res.json({id, name});
  });
});

// Delete an item
app.delete('/api/items/:id', (req, res) => {
  const id = req.params.id;
  db.run('DELETE FROM items WHERE id = ?', id, function(err) {
    if (err) {
      return res.status(500).json({error: err.message});
    }
  });
});
반응형