Created
February 23, 2017 21:26
-
-
Save rishavs/46a40015a06eedbf72fbc24022d47a9a to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<button class="ui primary button" name="new_post_btn" onclick="location.href='/p/new';"> Add New </button> | |
<% if dataset %> | |
<div class="ui divided list"> | |
<% dataset.each do |i| %> | |
<div class="item"> | |
<div class="content"> | |
<a href="/p/<%= i.id %>"> | |
<%= i.id %>) <%= i.title %> | |
</a> | |
</div> | |
</div> | |
<% end %> | |
</div> | |
<% else %> | |
<h2> No Items Found! </h2> | |
<% end %> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
require "kemal" | |
require "ecr" | |
require "dotenv" | |
require "pg" | |
require "crecto" | |
require "./Kamel/models/*" | |
require "./Kamel/controllers/*" | |
require "./Kamel/*" | |
# Dotenv.load | |
# Run Kamel | |
Kemal.run | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
def index_items(env) | |
query = Crecto::Repo::Query | |
.order_by("posts.id DESC") | |
dataset = Crecto::Repo.all(Post, query) | |
dataset.as(Array) unless dataset.nil? | |
# puts "Number of Items are: #{Crecto::Repo.aggregate(Post, :count, :id)}" | |
end | |
def save_new_item(env) | |
data = Post.new | |
data.title = env.params.body["post_title"] | |
data.is_link = false | |
data.link = nil | |
data.content = env.params.body["post_content"] | |
data.author_username = "some guy" | |
data.is_viewable = true | |
data.is_approved = true | |
data.is_deleted = false | |
data.last_read_at = Time.new(2016, 2, 15, 10, 20, 30) | |
changeset = Crecto::Repo.insert(data) | |
puts "Changeset is INVALID!" if changeset.valid? == false | |
puts "Changeset errors are: #{changeset.errors }" if !changeset.errors.empty? | |
puts "/nThe item was successfully ADDED. ID:#{changeset.instance.id}/n" | |
end | |
def edit_an_item(env) | |
id = env.params.url["id"] | |
data = Crecto::Repo.get(Post, id) | |
end | |
def save_edited_item(env) | |
id = env.params.url["id"] | |
data = Crecto::Repo.get(Post, id) | |
if data | |
data.title = env.params.body["post_title"] | |
data.content = env.params.body["post_content"] | |
changeset = Crecto::Repo.update(data) | |
puts "Changeset is INVALID!" if changeset.valid? == false | |
puts "Changeset errors are: #{changeset.errors }" if !changeset.errors.empty? | |
puts "/nThe item was successfully UPDATED. ID:#{changeset.instance.id}/n" | |
end | |
end | |
def delete_an_item(env) | |
id = env.params.url["id"] | |
query = Crecto::Repo::Query | |
.where(id: id) | |
changeset = Crecto::Repo.delete_all(Post, query) | |
puts "Changeset is INVALID!" if changeset.valid? == false | |
puts "Changeset errors are: #{changeset.errors }" if !changeset.errors.empty? | |
puts "/nThe item was successfully DELETED. ID:#{changeset.instance.id}/n" | |
end | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class Post < Crecto::Model | |
schema "posts" do | |
field :title, String | |
field :is_link, Bool | |
field :link, String | |
field :content, String | |
field :author_username, String | |
field :is_viewable, Bool | |
field :is_approved, Bool | |
field :is_deleted, Bool | |
field :last_read_at, Time | |
end | |
validate_required [:title] | |
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
get "/p/index" do |env| | |
index_items(env) | |
render "src/Kamel/views/posts/index_posts.ecr", "src/Kamel/views/base.ecr" | |
end | |
get "/p/new" do |env| | |
render "src/Kamel/views/posts/new_post.ecr", "src/Kamel/views/base.ecr" | |
end | |
post "/p/new" do |env| | |
save_new_item(env) | |
env.redirect "/p/index" | |
end | |
get "/p/:id" do |env| | |
render "src/Kamel/views/posts/show_post.ecr", "src/Kamel/views/base.ecr" | |
end | |
get "/p/:id/edit" do |env| | |
edit_an_item(env) | |
render "src/Kamel/views/posts/edit_post.ecr", "src/Kamel/views/base.ecr" | |
end | |
patch "/p/:id" do |env| | |
save_edited_item(env) | |
env.redirect "/p/#{changeset.instance.id}" | |
end | |
delete "/p/:id" do |env| | |
delete_an_item(env) | |
env.redirect "/p/index" | |
end | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment