summaryrefslogtreecommitdiffstats
path: root/api/index.php
diff options
context:
space:
mode:
Diffstat (limited to 'api/index.php')
-rwxr-xr-xapi/index.php130
1 files changed, 130 insertions, 0 deletions
diff --git a/api/index.php b/api/index.php
new file mode 100755
index 0000000..3b4d2f9
--- /dev/null
+++ b/api/index.php
@@ -0,0 +1,130 @@
+<?php
+
+require 'Slim/Slim.php';
+
+$app = new Slim();
+
+$app->get('/wines', 'getWines');
+$app->get('/wines/:id', 'getWine');
+$app->get('/wines/search/:query', 'findByName');
+$app->post('/wines', 'addWine');
+$app->put('/wines/:id', 'updateWine');
+$app->delete('/wines/:id', 'deleteWine');
+
+$app->run();
+
+function getWines() {
+ $sql = "select * FROM wine ORDER BY name";
+ try {
+ $db = getConnection();
+ $stmt = $db->query($sql);
+ $wines = $stmt->fetchAll(PDO::FETCH_OBJ);
+ $db = null;
+ echo '{"wine": ' . json_encode($wines) . '}';
+ } catch(PDOException $e) {
+ echo '{"error":{"text":'. $e->getMessage() .'}}';
+ }
+}
+
+function getWine($id) {
+ $sql = "SELECT * FROM wine WHERE id=:id";
+ try {
+ $db = getConnection();
+ $stmt = $db->prepare($sql);
+ $stmt->bindParam("id", $id);
+ $stmt->execute();
+ $wine = $stmt->fetchObject();
+ $db = null;
+ echo json_encode($wine);
+ } catch(PDOException $e) {
+ echo '{"error":{"text":'. $e->getMessage() .'}}';
+ }
+}
+
+function addWine() {
+ error_log('addWine\n', 3, '/var/tmp/php.log');
+ $request = Slim::getInstance()->request();
+ $wine = json_decode($request->getBody());
+ $sql = "INSERT INTO wine (name, grapes, country, region, year, description) VALUES (:name, :grapes, :country, :region, :year, :description)";
+ try {
+ $db = getConnection();
+ $stmt = $db->prepare($sql);
+ $stmt->bindParam("name", $wine->name);
+ $stmt->bindParam("grapes", $wine->grapes);
+ $stmt->bindParam("country", $wine->country);
+ $stmt->bindParam("region", $wine->region);
+ $stmt->bindParam("year", $wine->year);
+ $stmt->bindParam("description", $wine->description);
+ $stmt->execute();
+ $wine->id = $db->lastInsertId();
+ $db = null;
+ echo json_encode($wine);
+ } catch(PDOException $e) {
+ error_log($e->getMessage(), 3, '/var/tmp/php.log');
+ echo '{"error":{"text":'. $e->getMessage() .'}}';
+ }
+}
+
+function updateWine($id) {
+ $request = Slim::getInstance()->request();
+ $body = $request->getBody();
+ $wine = json_decode($body);
+ $sql = "UPDATE wine SET name=:name, grapes=:grapes, country=:country, region=:region, year=:year, description=:description WHERE id=:id";
+ try {
+ $db = getConnection();
+ $stmt = $db->prepare($sql);
+ $stmt->bindParam("name", $wine->name);
+ $stmt->bindParam("grapes", $wine->grapes);
+ $stmt->bindParam("country", $wine->country);
+ $stmt->bindParam("region", $wine->region);
+ $stmt->bindParam("year", $wine->year);
+ $stmt->bindParam("description", $wine->description);
+ $stmt->bindParam("id", $id);
+ $stmt->execute();
+ $db = null;
+ echo json_encode($wine);
+ } catch(PDOException $e) {
+ echo '{"error":{"text":'. $e->getMessage() .'}}';
+ }
+}
+
+function deleteWine($id) {
+ $sql = "DELETE FROM wine WHERE id=:id";
+ try {
+ $db = getConnection();
+ $stmt = $db->prepare($sql);
+ $stmt->bindParam("id", $id);
+ $stmt->execute();
+ $db = null;
+ } catch(PDOException $e) {
+ echo '{"error":{"text":'. $e->getMessage() .'}}';
+ }
+}
+
+function findByName($query) {
+ $sql = "SELECT * FROM wine WHERE UPPER(name) LIKE :query ORDER BY name";
+ try {
+ $db = getConnection();
+ $stmt = $db->prepare($sql);
+ $query = "%".$query."%";
+ $stmt->bindParam("query", $query);
+ $stmt->execute();
+ $wines = $stmt->fetchAll(PDO::FETCH_OBJ);
+ $db = null;
+ echo '{"wine": ' . json_encode($wines) . '}';
+ } catch(PDOException $e) {
+ echo '{"error":{"text":'. $e->getMessage() .'}}';
+ }
+}
+
+function getConnection() {
+ $dbhost="127.0.0.1";
+ $dbuser="root";
+ $dbpass="";
+ $dbname="cellar";
+ $dbh = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbuser, $dbpass);
+ $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
+ return $dbh;
+}
+
+?> \ No newline at end of file