feat: get link by id endpoint

This commit is contained in:
Juan Rodriguez
2024-07-12 08:47:08 +02:00
parent a2aa586dae
commit 3050c2b100
3 changed files with 25 additions and 0 deletions
+1
View File
@@ -92,6 +92,7 @@ dokku run bit cli --create-user=Admin
| `/api/ping` | GET | Ping the API to check if it's running | - |
| `/:slug` | GET | Retrieve a link by its slug | - |
| `/api/links` | GET | Retrieve all links | - |
| `/api/links/:id` | GET | Retrieve a link by its ID | - |
| `/api/links` | POST | Create a new link | `{"url": "https://example.com"}` |
| `/api/links/:id` | PUT | Update an existing link by its ID | `{"url": "https://newexample.com"}` |
| `/api/links/:id` | DELETE | Delete a link by its ID | - |
+20
View File
@@ -102,6 +102,26 @@ module App::Controllers::Link
end
end
class Get < App::Lib::BaseController
include App::Models
include App::Lib
def call(env)
user = env.get("user").as(User)
link_id = env.params.url["id"]
query = Database::Query.where(id: link_id.as(String), user_id: user.id.as(String)).limit(1)
links = Database.all(Link, query, preload: [:clicks])
if links.empty?
raise App::NotFoundException.new(env)
end
response = {"data" => App::Serializers::Link.new(links.first)}
response.to_json
end
end
class Update < App::Lib::BaseController
include App::Models
include App::Lib
+4
View File
@@ -23,6 +23,10 @@ module App
Controllers::Link::All.new.call(env)
end
get "/api/links/:id" do |env|
Controllers::Link::Get.new.call(env)
end
post "/api/links" do |env|
Controllers::Link::Create.new.call(env)
end