Index: src/main/java/finki/db/tasty_tabs/entity/RestaurantTable.java
===================================================================
--- src/main/java/finki/db/tasty_tabs/entity/RestaurantTable.java	(revision 8519390a6417540a880667846235699403bf9f23)
+++ src/main/java/finki/db/tasty_tabs/entity/RestaurantTable.java	(revision 76e67d563f71555b14e08745f4f71388f6c2abc3)
@@ -11,5 +11,5 @@
  */
 @Entity
-@Table(name = "table_details") // "table" is a reserved keyword
+@Table(name = "tables") // "table" is a reserved keyword
 @Data
 @NoArgsConstructor
@@ -25,4 +25,9 @@
     @OneToMany(mappedBy = "table")
     private List<TabOrder> tabOrders;
+
+    public RestaurantTable(Integer tableNumber, Integer seatCapacity) {
+        this.tableNumber=tableNumber;
+        this.seatCapacity=seatCapacity;
+    }
 }
 
Index: src/main/java/finki/db/tasty_tabs/entity/exceptions/TableNumberAlreadyExistsException.java
===================================================================
--- src/main/java/finki/db/tasty_tabs/entity/exceptions/TableNumberAlreadyExistsException.java	(revision 76e67d563f71555b14e08745f4f71388f6c2abc3)
+++ src/main/java/finki/db/tasty_tabs/entity/exceptions/TableNumberAlreadyExistsException.java	(revision 76e67d563f71555b14e08745f4f71388f6c2abc3)
@@ -0,0 +1,8 @@
+package finki.db.tasty_tabs.entity.exceptions;
+
+public class TableNumberAlreadyExistsException extends RuntimeException {
+
+    public TableNumberAlreadyExistsException(Integer number) {
+        super(String.format("Table: %d already exists", number));
+    }
+}
Index: src/main/java/finki/db/tasty_tabs/repository/RestaurantTableRepository.java
===================================================================
--- src/main/java/finki/db/tasty_tabs/repository/RestaurantTableRepository.java	(revision 76e67d563f71555b14e08745f4f71388f6c2abc3)
+++ src/main/java/finki/db/tasty_tabs/repository/RestaurantTableRepository.java	(revision 76e67d563f71555b14e08745f4f71388f6c2abc3)
@@ -0,0 +1,11 @@
+package finki.db.tasty_tabs.repository;
+
+import finki.db.tasty_tabs.entity.RestaurantTable;
+import org.springframework.data.jpa.repository.JpaRepository;
+
+import java.util.List;
+
+public interface RestaurantTableRepository extends JpaRepository<RestaurantTable, Integer> {
+
+    List<RestaurantTable> findAllBySeatCapacity(Integer seatCapacity);
+}
Index: c/main/java/finki/db/tasty_tabs/repository/TableRepository.java
===================================================================
--- src/main/java/finki/db/tasty_tabs/repository/TableRepository.java	(revision 8519390a6417540a880667846235699403bf9f23)
+++ 	(revision )
@@ -1,6 +1,0 @@
-package finki.db.tasty_tabs.repository;
-
-import jakarta.persistence.Table;
-import org.springframework.data.jpa.repository.JpaRepository;
-
-public interface TableRepository extends JpaRepository<Table, Integer> {}
Index: src/main/java/finki/db/tasty_tabs/service/RestaurantTableService.java
===================================================================
--- src/main/java/finki/db/tasty_tabs/service/RestaurantTableService.java	(revision 76e67d563f71555b14e08745f4f71388f6c2abc3)
+++ src/main/java/finki/db/tasty_tabs/service/RestaurantTableService.java	(revision 76e67d563f71555b14e08745f4f71388f6c2abc3)
@@ -0,0 +1,16 @@
+package finki.db.tasty_tabs.service;
+
+import finki.db.tasty_tabs.entity.RestaurantTable;
+
+import java.util.List;
+import java.util.Optional;
+
+public interface RestaurantTableService {
+
+    Optional<RestaurantTable> findById(Integer id);
+    List<RestaurantTable> getAll();
+    Optional<RestaurantTable> updateTable(Integer id,RestaurantTable restaurantTable);
+    void deleteTable(Integer id);
+    List<RestaurantTable> getAllBySeatCapacity(Integer seatCapacity);
+    Optional<RestaurantTable> createTable(RestaurantTable restaurantTable);
+}
Index: src/main/java/finki/db/tasty_tabs/service/impl/RestaurantTableServiceImpl.java
===================================================================
--- src/main/java/finki/db/tasty_tabs/service/impl/RestaurantTableServiceImpl.java	(revision 76e67d563f71555b14e08745f4f71388f6c2abc3)
+++ src/main/java/finki/db/tasty_tabs/service/impl/RestaurantTableServiceImpl.java	(revision 76e67d563f71555b14e08745f4f71388f6c2abc3)
@@ -0,0 +1,65 @@
+package finki.db.tasty_tabs.service.impl;
+
+import finki.db.tasty_tabs.entity.RestaurantTable;
+import finki.db.tasty_tabs.entity.exceptions.TableNumberAlreadyExistsException;
+import finki.db.tasty_tabs.repository.RestaurantTableRepository;
+import finki.db.tasty_tabs.service.RestaurantTableService;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.Optional;
+
+@Service
+public class RestaurantTableServiceImpl implements RestaurantTableService {
+
+    private final RestaurantTableRepository tableRepository;
+
+    public RestaurantTableServiceImpl(RestaurantTableRepository tableRepository) {
+        this.tableRepository = tableRepository;
+    }
+
+    @Override
+    public Optional<RestaurantTable> findById(Integer id) {
+        return tableRepository.findById(id);
+    }
+
+    @Override
+    public List<RestaurantTable> getAll() {
+        return tableRepository.findAll();
+    }
+
+    @Override
+    public Optional<RestaurantTable> updateTable(Integer id, RestaurantTable restaurantTable) {
+        if(tableRepository.findById(restaurantTable.getTableNumber()).isPresent() && id!=restaurantTable.getTableNumber()){
+            throw new TableNumberAlreadyExistsException(restaurantTable.getTableNumber());
+        }
+        return tableRepository.findById(id).map(existingTable -> {
+            if (restaurantTable.getTableNumber() != null) {
+                existingTable.setTableNumber(restaurantTable.getTableNumber());
+            }
+            if (restaurantTable.getSeatCapacity() != null) {
+                existingTable.setSeatCapacity(restaurantTable.getSeatCapacity());
+            }
+            return tableRepository.save(existingTable);
+        });
+    }
+
+    @Override
+    public void deleteTable(Integer id) {
+        tableRepository.deleteById(id);
+    }
+
+
+    @Override
+    public List<RestaurantTable> getAllBySeatCapacity(Integer seatCapacity) {
+        return tableRepository.findAllBySeatCapacity(seatCapacity);
+    }
+
+    @Override
+    public Optional<RestaurantTable> createTable(RestaurantTable restaurantTable) {
+        if(tableRepository.findById(restaurantTable.getTableNumber()).isPresent()){
+            throw new TableNumberAlreadyExistsException(restaurantTable.getTableNumber());
+        }
+        return Optional.of(tableRepository.save(restaurantTable));
+    }
+}
Index: src/main/java/finki/db/tasty_tabs/web/controllers/CategoryController.java
===================================================================
--- src/main/java/finki/db/tasty_tabs/web/controllers/CategoryController.java	(revision 8519390a6417540a880667846235699403bf9f23)
+++ src/main/java/finki/db/tasty_tabs/web/controllers/CategoryController.java	(revision 76e67d563f71555b14e08745f4f71388f6c2abc3)
@@ -60,5 +60,5 @@
         if (categoryService.findById(id).isPresent()) {
             categoryService.deleteCategory(id);
-            return ResponseEntity.noContent().build();
+            return ResponseEntity.ok().build();
         } else {
             return ResponseEntity.notFound().build();
Index: src/main/java/finki/db/tasty_tabs/web/controllers/RestaurantTableController.java
===================================================================
--- src/main/java/finki/db/tasty_tabs/web/controllers/RestaurantTableController.java	(revision 76e67d563f71555b14e08745f4f71388f6c2abc3)
+++ src/main/java/finki/db/tasty_tabs/web/controllers/RestaurantTableController.java	(revision 76e67d563f71555b14e08745f4f71388f6c2abc3)
@@ -0,0 +1,78 @@
+package finki.db.tasty_tabs.web.controllers;
+import finki.db.tasty_tabs.entity.RestaurantTable;
+import finki.db.tasty_tabs.service.RestaurantTableService;
+import finki.db.tasty_tabs.web.dto.CreateRestaurantTableDto;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+@RestController
+@RequestMapping("/api/tables")
+@Tag(name = "Restaurant Table API", description = "Endpoints for managing restaurant tables")
+public class RestaurantTableController {
+
+    private final RestaurantTableService restaurantTableService;
+
+    public RestaurantTableController(RestaurantTableService restaurantTableService) {
+        this.restaurantTableService = restaurantTableService;
+    }
+
+    @Operation(summary = "Get all tables", description = "Retrieves a list of all restaurant tables.")
+    @GetMapping
+    public List<RestaurantTable> findAll() {
+        return restaurantTableService.getAll();
+    }
+
+    @Operation(summary = "Get a table by table number", description = "Finds a table by its table number.")
+    @GetMapping("/{tableNumber}")
+    public ResponseEntity<RestaurantTable> findById(@PathVariable Integer tableNumber) {
+        return restaurantTableService.findById(tableNumber)
+                .map(ResponseEntity::ok)
+                .orElseGet(() -> ResponseEntity.notFound().build());
+    }
+
+    @Operation(summary = "Add a new table", description = "Creates a new restaurant table.")
+    @PostMapping("/add")
+    public ResponseEntity<RestaurantTable> save(@RequestBody CreateRestaurantTableDto dto) {
+        try{
+            return restaurantTableService.createTable(dto.toRestaurantTable())
+                    .map(ResponseEntity::ok)
+                    .orElseGet(() -> ResponseEntity.badRequest().build());
+        }
+        catch(RuntimeException ex){
+            return ResponseEntity.badRequest().build();
+
+        }
+    }
+
+    @Operation(summary = "Update an existing table", description = "Updates a restaurant table by its table number.")
+    @PutMapping("/edit/{tableNumber}")
+    public ResponseEntity<RestaurantTable> update(
+            @PathVariable Integer tableNumber,
+            @RequestBody CreateRestaurantTableDto dto
+    ) {
+        try{
+            return restaurantTableService.updateTable(tableNumber, dto.toRestaurantTable())
+                    .map(ResponseEntity::ok)
+                    .orElseGet(() -> ResponseEntity.notFound().build());
+        }
+        catch(RuntimeException ex){
+            return ResponseEntity.badRequest().build();
+        }
+
+    }
+
+    @Operation(summary = "Delete a table", description = "Deletes a restaurant table by its table number.")
+    @DeleteMapping("/delete/{tableNumber}")
+    public ResponseEntity<Void> deleteById(@PathVariable Integer tableNumber) {
+        if (restaurantTableService.findById(tableNumber).isPresent()) {
+            restaurantTableService.deleteTable(tableNumber);
+            return ResponseEntity.ok().build();
+        } else {
+            return ResponseEntity.notFound().build();
+        }
+    }
+}
Index: src/main/java/finki/db/tasty_tabs/web/dto/CreateRestaurantTableDto.java
===================================================================
--- src/main/java/finki/db/tasty_tabs/web/dto/CreateRestaurantTableDto.java	(revision 76e67d563f71555b14e08745f4f71388f6c2abc3)
+++ src/main/java/finki/db/tasty_tabs/web/dto/CreateRestaurantTableDto.java	(revision 76e67d563f71555b14e08745f4f71388f6c2abc3)
@@ -0,0 +1,12 @@
+package finki.db.tasty_tabs.web.dto;
+
+import finki.db.tasty_tabs.entity.RestaurantTable;
+
+public record CreateRestaurantTableDto(
+        Integer tableNumber,
+        Integer seatCapacity
+) {
+    public RestaurantTable toRestaurantTable(){
+        return new RestaurantTable(tableNumber,seatCapacity);
+    }
+}
