db = Database::getInstance()->getConnection(); } public function findById($id, $includeDeleted = false) { $sql = "SELECT * FROM markdown_file WHERE id = ?"; if (!$includeDeleted) { $sql .= " AND is_deleted = 0"; } $stmt = $this->db->prepare($sql); $stmt->execute([$id]); return $stmt->fetch(); } public function getAll() { $stmt = $this->db->prepare("SELECT * FROM markdown_file WHERE is_deleted = 0 ORDER BY updated_at DESC"); $stmt->execute(); return $stmt->fetchAll(); } public function getByGroupingId($groupingId) { $stmt = $this->db->prepare( "SELECT id, title, file_name, created_at, updated_at, is_private, grouping_id FROM markdown_file WHERE grouping_id = ? AND is_deleted = 0 ORDER BY updated_at DESC" ); $stmt->execute([$groupingId]); return $stmt->fetchAll(); } public function searchByTitle($keyword) { $stmt = $this->db->prepare( "SELECT * FROM markdown_file WHERE title LIKE ? AND is_deleted = 0 ORDER BY updated_at DESC" ); $stmt->execute(['%' . $keyword . '%']); return $stmt->fetchAll(); } public function getRecent($limit = 12) { $stmt = $this->db->prepare( "SELECT id, title, file_name, created_at, updated_at, is_private, grouping_id FROM markdown_file WHERE is_deleted = 0 ORDER BY updated_at DESC LIMIT ?" ); $stmt->execute([$limit]); return $stmt->fetchAll(); } public function update($id, $data) { $fields = []; $values = []; if (isset($data['title'])) { $fields[] = "title = ?"; $values[] = $data['title']; } if (isset($data['content'])) { $fields[] = "content = ?"; $values[] = $data['content']; } if (isset($data['grouping_id'])) { $fields[] = "grouping_id = ?"; $values[] = $data['grouping_id']; } if (isset($data['is_private'])) { $fields[] = "is_private = ?"; $values[] = $data['is_private']; } $fields[] = "updated_at = NOW()"; $values[] = $id; $sql = "UPDATE markdown_file SET " . implode(", ", $fields) . " WHERE id = ?"; $stmt = $this->db->prepare($sql); return $stmt->execute($values); } public function updateTitle($id, $title) { $stmt = $this->db->prepare( "UPDATE markdown_file SET title = ?, updated_at = NOW() WHERE id = ?" ); return $stmt->execute([$title, $id]); } public function softDelete($id, $userId) { $stmt = $this->db->prepare( "UPDATE markdown_file SET is_deleted = 1, deleted_at = NOW(), deleted_by = ? WHERE id = ?" ); return $stmt->execute([$userId, $id]); } public function restore($id) { $stmt = $this->db->prepare( "UPDATE markdown_file SET is_deleted = 0, deleted_at = NULL, deleted_by = NULL WHERE id = ?" ); return $stmt->execute([$id]); } public function permanentDelete($id) { $stmt = $this->db->prepare("DELETE FROM markdown_file WHERE id = ?"); return $stmt->execute([$id]); } }