From 8d21b802c35d5b1f8e6e868aaa20c1c0066275c9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?John=20Ankarstr=C3=B6m?= Date: Tue, 2 Mar 2021 00:41:56 +0100 Subject: Add new interfaces tree, remake database code as 'ruby' interface This follows the directory structure outlined in my previous commit message. --- db.rb | 11 ----------- interfaces/http/http.rb | 10 ++++++++++ interfaces/http/web/views/index.erb | 19 +++++++++++++++++++ interfaces/http/web/web.rb | 6 ++++++ interfaces/ruby/models/comment.rb | 20 ++++++++++++++++++++ interfaces/ruby/models/config.rb | 17 +++++++++++++++++ interfaces/ruby/models/post.rb | 18 ++++++++++++++++++ interfaces/ruby/models/tag.rb | 26 ++++++++++++++++++++++++++ interfaces/ruby/ruby.rb | 11 +++++++++++ models/comment.rb | 20 -------------------- models/config.rb | 17 ----------------- models/post.rb | 18 ------------------ models/tag.rb | 26 -------------------------- web/interface.rb | 9 --------- web/views/index.erb | 19 ------------------- 15 files changed, 127 insertions(+), 120 deletions(-) delete mode 100644 db.rb create mode 100644 interfaces/http/http.rb create mode 100644 interfaces/http/web/views/index.erb create mode 100644 interfaces/http/web/web.rb create mode 100644 interfaces/ruby/models/comment.rb create mode 100644 interfaces/ruby/models/config.rb create mode 100644 interfaces/ruby/models/post.rb create mode 100644 interfaces/ruby/models/tag.rb create mode 100644 interfaces/ruby/ruby.rb delete mode 100644 models/comment.rb delete mode 100644 models/config.rb delete mode 100644 models/post.rb delete mode 100644 models/tag.rb delete mode 100644 web/interface.rb delete mode 100644 web/views/index.erb diff --git a/db.rb b/db.rb deleted file mode 100644 index 4c18111..0000000 --- a/db.rb +++ /dev/null @@ -1,11 +0,0 @@ -require 'active_record' - -ActiveRecord::Base.establish_connection( - adapter: 'sqlite3', - database: 'db.sqlite3' -) - -require_relative 'models/config' -require_relative 'models/comment' -require_relative 'models/post' -require_relative 'models/tag' diff --git a/interfaces/http/http.rb b/interfaces/http/http.rb new file mode 100644 index 0000000..0a8457c --- /dev/null +++ b/interfaces/http/http.rb @@ -0,0 +1,10 @@ +require 'sinatra/base' +require_relative '../ruby/ruby' +require_relative 'web/web' + +$config = Config.first + +class HTTPInterface < Sinatra::Base + use WebInterface + run! if app_file == $0 +end diff --git a/interfaces/http/web/views/index.erb b/interfaces/http/web/views/index.erb new file mode 100644 index 0000000..80e64a5 --- /dev/null +++ b/interfaces/http/web/views/index.erb @@ -0,0 +1,19 @@ + + + + + <%= $config.title %> + + +

<%= $config.title %>

+ <% for post in @posts %> +

<%= post.title %>

+
+

<%= post.created_at %>

+
+
+ <%= post.body %> +
+ <% end %> + + diff --git a/interfaces/http/web/web.rb b/interfaces/http/web/web.rb new file mode 100644 index 0000000..8ae8afd --- /dev/null +++ b/interfaces/http/web/web.rb @@ -0,0 +1,6 @@ +class WebInterface < Sinatra::Base + get '/' do + @posts = Post.all + erb :index + end +end \ No newline at end of file diff --git a/interfaces/ruby/models/comment.rb b/interfaces/ruby/models/comment.rb new file mode 100644 index 0000000..b3977f6 --- /dev/null +++ b/interfaces/ruby/models/comment.rb @@ -0,0 +1,20 @@ +class Comment < ActiveRecord::Base + belongs_to :post + validates_presence_of :date + validates_presence_of :author + validates_presence_of :email + validates_format_of :email, with: /@/ + validates_presence_of :body +end + +class CreateCommentTable < ActiveRecord::Migration[6.0] + def change + create_table :comments do |t| + t.references :post, foreign_key: true, index: true + t.string :author, null: false + t.string :email, null: false + t.string :body, null: false + t.timestamps + end + end +end diff --git a/interfaces/ruby/models/config.rb b/interfaces/ruby/models/config.rb new file mode 100644 index 0000000..55b4106 --- /dev/null +++ b/interfaces/ruby/models/config.rb @@ -0,0 +1,17 @@ +class Config < ActiveRecord::Base + self.table_name = 'config' + validates_presence_of :title + validates_presence_of :timezone + validates_presence_of :postsperpage +end + +class CreateConfigTable < ActiveRecord::Migration[6.0] + def change + create_table :config do |t| + t.string :title, null: false + t.string :subtitle + t.string :timezone, null: false + t.integer :postsperpage, null: false + end + end +end diff --git a/interfaces/ruby/models/post.rb b/interfaces/ruby/models/post.rb new file mode 100644 index 0000000..1d44051 --- /dev/null +++ b/interfaces/ruby/models/post.rb @@ -0,0 +1,18 @@ +class Post < ActiveRecord::Base + has_many :comments + has_many :tags, through: :post_tag_links + + validates_presence_of :title + validates_presence_of :body +end + +class CreatePostTable < ActiveRecord::Migration[6.0] + def change + create_table :posts do |t| + t.string :title, null: false + t.string :body, null: false + t.boolean :locked, default: false + t.timestamps + end + end +end diff --git a/interfaces/ruby/models/tag.rb b/interfaces/ruby/models/tag.rb new file mode 100644 index 0000000..9c24b6c --- /dev/null +++ b/interfaces/ruby/models/tag.rb @@ -0,0 +1,26 @@ +class PostTagLink < ActiveRecord::Base + belongs_to :post + belongs_to :tag +end + +class CreatePostTagLinkTable < ActiveRecord::Migration[6.0] + def change + create_table :post_tag_links do |t| + t.references :post, foreign_key: true, index: true + t.references :tag, foreign_key: true, index: true + end + end +end + +class Tag < ActiveRecord::Base + belongs_to :post + validates_presence_of :name +end + +class CreateTagTable < ActiveRecord::Migration[6.0] + def change + create_table :tags do |t| + t.string :name, null: false + end + end +end diff --git a/interfaces/ruby/ruby.rb b/interfaces/ruby/ruby.rb new file mode 100644 index 0000000..4c18111 --- /dev/null +++ b/interfaces/ruby/ruby.rb @@ -0,0 +1,11 @@ +require 'active_record' + +ActiveRecord::Base.establish_connection( + adapter: 'sqlite3', + database: 'db.sqlite3' +) + +require_relative 'models/config' +require_relative 'models/comment' +require_relative 'models/post' +require_relative 'models/tag' diff --git a/models/comment.rb b/models/comment.rb deleted file mode 100644 index b3977f6..0000000 --- a/models/comment.rb +++ /dev/null @@ -1,20 +0,0 @@ -class Comment < ActiveRecord::Base - belongs_to :post - validates_presence_of :date - validates_presence_of :author - validates_presence_of :email - validates_format_of :email, with: /@/ - validates_presence_of :body -end - -class CreateCommentTable < ActiveRecord::Migration[6.0] - def change - create_table :comments do |t| - t.references :post, foreign_key: true, index: true - t.string :author, null: false - t.string :email, null: false - t.string :body, null: false - t.timestamps - end - end -end diff --git a/models/config.rb b/models/config.rb deleted file mode 100644 index 55b4106..0000000 --- a/models/config.rb +++ /dev/null @@ -1,17 +0,0 @@ -class Config < ActiveRecord::Base - self.table_name = 'config' - validates_presence_of :title - validates_presence_of :timezone - validates_presence_of :postsperpage -end - -class CreateConfigTable < ActiveRecord::Migration[6.0] - def change - create_table :config do |t| - t.string :title, null: false - t.string :subtitle - t.string :timezone, null: false - t.integer :postsperpage, null: false - end - end -end diff --git a/models/post.rb b/models/post.rb deleted file mode 100644 index 1d44051..0000000 --- a/models/post.rb +++ /dev/null @@ -1,18 +0,0 @@ -class Post < ActiveRecord::Base - has_many :comments - has_many :tags, through: :post_tag_links - - validates_presence_of :title - validates_presence_of :body -end - -class CreatePostTable < ActiveRecord::Migration[6.0] - def change - create_table :posts do |t| - t.string :title, null: false - t.string :body, null: false - t.boolean :locked, default: false - t.timestamps - end - end -end diff --git a/models/tag.rb b/models/tag.rb deleted file mode 100644 index 9c24b6c..0000000 --- a/models/tag.rb +++ /dev/null @@ -1,26 +0,0 @@ -class PostTagLink < ActiveRecord::Base - belongs_to :post - belongs_to :tag -end - -class CreatePostTagLinkTable < ActiveRecord::Migration[6.0] - def change - create_table :post_tag_links do |t| - t.references :post, foreign_key: true, index: true - t.references :tag, foreign_key: true, index: true - end - end -end - -class Tag < ActiveRecord::Base - belongs_to :post - validates_presence_of :name -end - -class CreateTagTable < ActiveRecord::Migration[6.0] - def change - create_table :tags do |t| - t.string :name, null: false - end - end -end diff --git a/web/interface.rb b/web/interface.rb deleted file mode 100644 index 5914866..0000000 --- a/web/interface.rb +++ /dev/null @@ -1,9 +0,0 @@ -require 'sinatra' -require_relative '../db' - -$config = Config.first - -get '/' do - @posts = Post.all - erb :index -end diff --git a/web/views/index.erb b/web/views/index.erb deleted file mode 100644 index 80e64a5..0000000 --- a/web/views/index.erb +++ /dev/null @@ -1,19 +0,0 @@ - - - - - <%= $config.title %> - - -

<%= $config.title %>

- <% for post in @posts %> -

<%= post.title %>

-
-

<%= post.created_at %>

-
-
- <%= post.body %> -
- <% end %> - - -- cgit v1.2.3