ruby-wpdb 1.2 → 1.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Gemfile +1 -1
- data/bin/ruby-wpdb +4 -2
- data/data/query.log +40410 -0
- data/lib/ruby-wpdb/{comments.rb → comment.rb} +2 -6
- data/lib/ruby-wpdb/commentmeta.rb +5 -0
- data/lib/ruby-wpdb/config.rb +52 -21
- data/lib/ruby-wpdb/gravityforms.rb +11 -3
- data/lib/ruby-wpdb/link.rb +16 -0
- data/lib/ruby-wpdb/{options.rb → option.rb} +1 -1
- data/lib/ruby-wpdb/post.rb +66 -0
- data/lib/ruby-wpdb/postmeta.rb +5 -0
- data/lib/ruby-wpdb/term.rb +41 -0
- data/lib/ruby-wpdb/term_relationship.rb +12 -0
- data/lib/ruby-wpdb/term_taxonomy.rb +19 -0
- data/lib/ruby-wpdb/{users.rb → user.rb} +2 -5
- data/lib/ruby-wpdb/usermeta.rb +5 -0
- data/lib/ruby-wpdb/version.rb +1 -1
- data/lib/ruby-wpdb.rb +24 -16
- metadata +103 -24
- data/lib/ruby-wpdb/links.rb +0 -8
- data/lib/ruby-wpdb/posts.rb +0 -67
- data/lib/ruby-wpdb/terms.rb +0 -49
- data/test/comments_test.rb +0 -40
- data/test/config_test.rb +0 -20
- data/test/gravityforms_test.rb +0 -25
- data/test/links_test.rb +0 -28
- data/test/options_test.rb +0 -26
- data/test/posts_test.rb +0 -50
- data/test/readme_test.rb +0 -43
- data/test/terms_test.rb +0 -42
- data/test/test_helper.rb +0 -17
- data/test/users_test.rb +0 -47
data/lib/ruby-wpdb/posts.rb
DELETED
@@ -1,67 +0,0 @@
|
|
1
|
-
Sequel.inflections do |inflect|
|
2
|
-
# Unless we tell Sequel otherwise, it will try to inflect the singular
|
3
|
-
# of "postmeta" using the "data" -> "datum" rule, leaving us with the
|
4
|
-
# bizarre "postmetum".
|
5
|
-
inflect.uncountable 'postmeta'
|
6
|
-
end
|
7
|
-
|
8
|
-
module WPDB
|
9
|
-
class Post < Sequel::Model(:"#{WPDB.prefix}posts")
|
10
|
-
include Termable
|
11
|
-
|
12
|
-
plugin :validation_helpers
|
13
|
-
plugin :sluggable, :source => :post_title, :target => :post_name
|
14
|
-
|
15
|
-
many_to_one :parent, :class => self, :key => :post_parent
|
16
|
-
one_to_many :children,
|
17
|
-
:key => :post_parent,
|
18
|
-
:class => self do |ds|
|
19
|
-
ds.where(:post_type => ['attachment', 'revision']).invert
|
20
|
-
.where(:post_parent => self.ID)
|
21
|
-
end
|
22
|
-
one_to_many :revisions,
|
23
|
-
:key => :post_parent,
|
24
|
-
:class => self,
|
25
|
-
:conditions => { :post_type => 'revision' }
|
26
|
-
one_to_many :attachments,
|
27
|
-
:key => :post_parent,
|
28
|
-
:class => self,
|
29
|
-
:conditions => { :post_type => 'attachment' }
|
30
|
-
|
31
|
-
one_to_many :postmeta, :class => :'WPDB::PostMeta'
|
32
|
-
many_to_one :author, :key => :post_author, :class => :'WPDB::User'
|
33
|
-
one_to_many :comments, :key => :comment_post_ID, :class => :'WPDB::Comment'
|
34
|
-
|
35
|
-
one_to_many :termrelationships,
|
36
|
-
:key => :object_id,
|
37
|
-
:key_method => :obj_id,
|
38
|
-
:class => 'WPDB::TermRelationship'
|
39
|
-
many_to_many :termtaxonomy,
|
40
|
-
:left_key => :object_id,
|
41
|
-
:right_key => :term_taxonomy_id,
|
42
|
-
:join_table => :"#{WPDB.prefix}term_relationships",
|
43
|
-
:class => 'WPDB::TermTaxonomy'
|
44
|
-
|
45
|
-
def validate
|
46
|
-
super
|
47
|
-
validates_presence [:post_title, :post_type, :post_status]
|
48
|
-
validates_unique :post_name
|
49
|
-
end
|
50
|
-
|
51
|
-
def before_validation
|
52
|
-
self.post_type ||= "post"
|
53
|
-
self.post_status ||= "draft"
|
54
|
-
self.post_parent ||= 0
|
55
|
-
self.menu_order ||= 0
|
56
|
-
self.comment_status ||= "open"
|
57
|
-
self.ping_status ||= WPDB::Option.get_option("default_ping_status")
|
58
|
-
self.post_date ||= Time.now
|
59
|
-
self.post_date_gmt ||= Time.now.utc
|
60
|
-
super
|
61
|
-
end
|
62
|
-
end
|
63
|
-
|
64
|
-
class PostMeta < Sequel::Model(:"#{WPDB.prefix}postmeta")
|
65
|
-
many_to_one :posts, :class => :'WPDB::Post'
|
66
|
-
end
|
67
|
-
end
|
data/lib/ruby-wpdb/terms.rb
DELETED
@@ -1,49 +0,0 @@
|
|
1
|
-
module WPDB
|
2
|
-
class Term < Sequel::Model(:"#{WPDB.prefix}terms")
|
3
|
-
plugin :validation_helpers
|
4
|
-
plugin :sluggable, :source => :name, :target => :slug
|
5
|
-
|
6
|
-
one_to_many :termtaxonomies, :class => 'WPDB::TermTaxonomy'
|
7
|
-
|
8
|
-
def validate
|
9
|
-
super
|
10
|
-
validates_presence :name
|
11
|
-
end
|
12
|
-
end
|
13
|
-
|
14
|
-
class TermTaxonomy < Sequel::Model(:"#{WPDB.prefix}term_taxonomy")
|
15
|
-
many_to_one :terms, :class => 'WPDB::Term'
|
16
|
-
one_to_many :termrelationships, :class => 'WPDB::TermRelationship'
|
17
|
-
many_to_many :posts, :left_key => :term_taxonomy_id, :right_key => :object_id, :join_table => :"#{WPDB.prefix}term_relationships", :class => 'WPDB::Post'
|
18
|
-
many_to_many :links, :left_key => :term_taxonomy_id, :right_key => :object_id, :join_table => :"#{WPDB.prefix}term_relationships", :class => 'WPDB::Link'
|
19
|
-
end
|
20
|
-
|
21
|
-
class TermRelationship < Sequel::Model(:"#{WPDB.prefix}term_relationships")
|
22
|
-
def_column_alias(:obj_id, :object_id)
|
23
|
-
|
24
|
-
many_to_one :termtaxonomy, :class => 'WPDB::TermTaxonomy'
|
25
|
-
many_to_one :posts, :class => 'WPDB::Post'
|
26
|
-
many_to_one :links, :class => 'WPDB::Link'
|
27
|
-
end
|
28
|
-
|
29
|
-
module Termable
|
30
|
-
# For objects that have a relationship with termtaxonomies, this
|
31
|
-
# module can be mixed in and gives the ability to add a term
|
32
|
-
# directly to the model, rather than creating the relationship
|
33
|
-
# yourself. Used by Post and Link.
|
34
|
-
def add_term(term, taxonomy)
|
35
|
-
if term.respond_to?(:term_id)
|
36
|
-
term_id = term.term_id
|
37
|
-
else
|
38
|
-
term_id = term.to_i
|
39
|
-
end
|
40
|
-
|
41
|
-
term_taxonomy = WPDB::TermTaxonomy.where(:term_id => term_id, :taxonomy => taxonomy).first
|
42
|
-
unless term_taxonomy
|
43
|
-
term_taxonomy = WPDB::TermTaxonomy.create(:term_id => term_id, :taxonomy => taxonomy)
|
44
|
-
end
|
45
|
-
|
46
|
-
add_termtaxonomy(term_taxonomy)
|
47
|
-
end
|
48
|
-
end
|
49
|
-
end
|
data/test/comments_test.rb
DELETED
@@ -1,40 +0,0 @@
|
|
1
|
-
require_relative 'test_helper'
|
2
|
-
|
3
|
-
describe WPDB::Comment do
|
4
|
-
before do
|
5
|
-
@comment = WPDB::Comment.create(
|
6
|
-
:comment_author => 'Testy Testerson',
|
7
|
-
:comment_author_email => 'testy@example.com',
|
8
|
-
:comment_content => 'Test'
|
9
|
-
)
|
10
|
-
end
|
11
|
-
|
12
|
-
it "creates a new comment" do
|
13
|
-
assert @comment.comment_ID
|
14
|
-
end
|
15
|
-
|
16
|
-
it "attaches comments to posts" do
|
17
|
-
post = WPDB::Post.create(:post_title => 'test', :post_author => 1)
|
18
|
-
assert post.ID
|
19
|
-
|
20
|
-
post.add_comment(@comment)
|
21
|
-
assert @comment.post
|
22
|
-
assert post.comments.length
|
23
|
-
assert_equal post.comments.first.comment_post_ID, post.ID
|
24
|
-
|
25
|
-
post.destroy
|
26
|
-
end
|
27
|
-
|
28
|
-
it "adds commentmeta" do
|
29
|
-
@comment.add_commentmeta(:meta_key => 'test', :meta_value => 'test')
|
30
|
-
|
31
|
-
comment = WPDB::Comment.where(:comment_ID => @comment.comment_ID).first
|
32
|
-
assert comment.commentmeta.length > 0
|
33
|
-
assert_equal 'test', comment.commentmeta.first.meta_key
|
34
|
-
assert_equal 'test', comment.commentmeta.first.meta_value
|
35
|
-
end
|
36
|
-
|
37
|
-
after do
|
38
|
-
@comment.destroy
|
39
|
-
end
|
40
|
-
end
|
data/test/config_test.rb
DELETED
@@ -1,20 +0,0 @@
|
|
1
|
-
require_relative 'test_helper'
|
2
|
-
|
3
|
-
require "open-uri"
|
4
|
-
|
5
|
-
describe "Config" do
|
6
|
-
it "correctly parses the sample wp-config" do
|
7
|
-
sample_config = Pathname(__FILE__) + ".." + ".." + "data" + "wp-config-sample.php"
|
8
|
-
live_url = "https://raw.githubusercontent.com/WordPress/WordPress/master/wp-config-sample.php"
|
9
|
-
open(live_url) do |live|
|
10
|
-
File.open(sample_config, "w") do |f|
|
11
|
-
f.write live.read
|
12
|
-
end
|
13
|
-
end
|
14
|
-
|
15
|
-
config = WPDB::Config::WPConfig.new(sample_config).config
|
16
|
-
|
17
|
-
assert_equal "mysql2://username_here:password_here@localhost/database_name_here", config[:uri]
|
18
|
-
assert_equal "wp_", config[:prefix]
|
19
|
-
end
|
20
|
-
end
|
data/test/gravityforms_test.rb
DELETED
@@ -1,25 +0,0 @@
|
|
1
|
-
require_relative 'test_helper'
|
2
|
-
|
3
|
-
describe WPDB::GravityForms do
|
4
|
-
before do
|
5
|
-
@form = WPDB::GravityForms::Form.first
|
6
|
-
@class_name = WPDB.camelize(@form.title).to_sym
|
7
|
-
end
|
8
|
-
|
9
|
-
it "fetches a form" do
|
10
|
-
assert @form.id
|
11
|
-
end
|
12
|
-
|
13
|
-
it "associates leads with a form" do
|
14
|
-
assert @form.leads.length
|
15
|
-
end
|
16
|
-
|
17
|
-
it "associates lead detail with a lead" do
|
18
|
-
assert @form.leads.first.details.length
|
19
|
-
end
|
20
|
-
|
21
|
-
it "lazily loads models for forms" do
|
22
|
-
klass = WPDB::GravityForms.const_get(@class_name)
|
23
|
-
assert_equal Class, klass.class
|
24
|
-
end
|
25
|
-
end
|
data/test/links_test.rb
DELETED
@@ -1,28 +0,0 @@
|
|
1
|
-
require_relative 'test_helper'
|
2
|
-
|
3
|
-
describe WPDB::Link do
|
4
|
-
before do
|
5
|
-
@link = WPDB::Link.create(:link_url => 'http://example.com', :link_name => 'Example')
|
6
|
-
end
|
7
|
-
|
8
|
-
it "creates links" do
|
9
|
-
assert @link.link_id
|
10
|
-
end
|
11
|
-
|
12
|
-
it "can attach terms to links" do
|
13
|
-
term = WPDB::Term.create(:name => 'terming links')
|
14
|
-
@link.add_term(term, 'category')
|
15
|
-
@link.save
|
16
|
-
|
17
|
-
assert @link.link_id
|
18
|
-
assert @link.termtaxonomy.length
|
19
|
-
assert_equal term.term_id, @link.termtaxonomy.first.term_id
|
20
|
-
assert_equal 'category', @link.termtaxonomy.first.taxonomy
|
21
|
-
|
22
|
-
term.destroy
|
23
|
-
end
|
24
|
-
|
25
|
-
after do
|
26
|
-
@link.destroy
|
27
|
-
end
|
28
|
-
end
|
data/test/options_test.rb
DELETED
@@ -1,26 +0,0 @@
|
|
1
|
-
require_relative 'test_helper'
|
2
|
-
|
3
|
-
describe WPDB::Option do
|
4
|
-
before do
|
5
|
-
@option = WPDB::Option.create(:option_name => 'test', :option_value => 'test')
|
6
|
-
end
|
7
|
-
|
8
|
-
it "creates options" do
|
9
|
-
assert @option.option_id
|
10
|
-
end
|
11
|
-
|
12
|
-
it "enforces the uniqueness of option names" do
|
13
|
-
assert_raises Sequel::UniqueConstraintViolation do
|
14
|
-
WPDB::Option.create(:option_name => 'test', :option_value => 'test')
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
18
|
-
it "has a shorthand for fetching options" do
|
19
|
-
assert_equal 'test', WPDB::Option.get_option('test')
|
20
|
-
assert_equal nil, WPDB::Option.get_option('non-existent-key')
|
21
|
-
end
|
22
|
-
|
23
|
-
after do
|
24
|
-
@option.destroy
|
25
|
-
end
|
26
|
-
end
|
data/test/posts_test.rb
DELETED
@@ -1,50 +0,0 @@
|
|
1
|
-
require_relative 'test_helper'
|
2
|
-
|
3
|
-
describe WPDB::Post do
|
4
|
-
before do
|
5
|
-
@post = WPDB::Post.create(:post_title => 'Hello world', :post_author => 1)
|
6
|
-
end
|
7
|
-
|
8
|
-
it "creates a new post" do
|
9
|
-
assert @post.ID
|
10
|
-
end
|
11
|
-
|
12
|
-
it "fetches all posts" do
|
13
|
-
assert WPDB::Post.all
|
14
|
-
end
|
15
|
-
|
16
|
-
it "manages postmeta" do
|
17
|
-
@post.add_postmeta(:meta_key => 'test', :meta_value => 'test')
|
18
|
-
@post.save
|
19
|
-
|
20
|
-
meta_value = @post.postmeta.first.meta_value
|
21
|
-
assert_equal 'test', meta_value
|
22
|
-
end
|
23
|
-
|
24
|
-
it "manages the hierarchy of posts" do
|
25
|
-
@post.add_child(WPDB::Post.create(:post_title => 'Child', :post_author => 1))
|
26
|
-
@post.save
|
27
|
-
|
28
|
-
assert_equal 'Child', @post.children.first.post_title
|
29
|
-
|
30
|
-
@post.children.first.destroy
|
31
|
-
end
|
32
|
-
|
33
|
-
it "fetches revisions of posts" do
|
34
|
-
revision = WPDB::Post.create(:post_type => 'revision', :post_title => 'Revision', :post_parent => @post.ID, :post_author => 1)
|
35
|
-
assert_equal 'Revision', @post.revisions.first.post_title
|
36
|
-
|
37
|
-
revision.destroy
|
38
|
-
end
|
39
|
-
|
40
|
-
it "fetches attachments to posts" do
|
41
|
-
attachment = WPDB::Post.create(:post_type => 'attachment', :post_title => 'Attachment', :post_parent => @post.ID, :post_author => 1)
|
42
|
-
assert_equal 'Attachment', @post.attachments.first.post_title
|
43
|
-
|
44
|
-
attachment.destroy
|
45
|
-
end
|
46
|
-
|
47
|
-
after do
|
48
|
-
@post.destroy
|
49
|
-
end
|
50
|
-
end
|
data/test/readme_test.rb
DELETED
@@ -1,43 +0,0 @@
|
|
1
|
-
require_relative 'test_helper'
|
2
|
-
|
3
|
-
# Examples from the README; it's obviously important that they work
|
4
|
-
# since they're people's first exposure to the project!
|
5
|
-
describe "README" do
|
6
|
-
it "performs more complex queries" do
|
7
|
-
post = WPDB::Post.create(:post_title => 'aaaaa', :post_author => 1)
|
8
|
-
post.add_postmeta(:meta_key => 'image', :meta_value => 'test')
|
9
|
-
post.save
|
10
|
-
|
11
|
-
meta_value = WPDB::Post.first(:post_title => /^[a-z]+$/, :ID => post.ID)
|
12
|
-
.postmeta_dataset.first(:meta_key => 'image').meta_value
|
13
|
-
assert_equal 'test', meta_value
|
14
|
-
|
15
|
-
post.destroy
|
16
|
-
end
|
17
|
-
|
18
|
-
it "creates records" do
|
19
|
-
post = WPDB::Post.create(:post_title => 'Test', :post_content => 'Testing, testing, 123', :post_author => 1)
|
20
|
-
assert post.ID
|
21
|
-
post.destroy
|
22
|
-
end
|
23
|
-
|
24
|
-
it "creates posts, users, and tags all in one go" do
|
25
|
-
author = WPDB::User.create(
|
26
|
-
:user_login => 'fred',
|
27
|
-
:user_email => 'fred@example.com'
|
28
|
-
)
|
29
|
-
|
30
|
-
term = WPDB::Term.create(:name => 'Fred Stuff')
|
31
|
-
|
32
|
-
post = WPDB::Post.create(
|
33
|
-
:post_title => 'Hello from Fred',
|
34
|
-
:post_content => 'Hello, world',
|
35
|
-
:author => author
|
36
|
-
)
|
37
|
-
post.add_term(term, 'tag')
|
38
|
-
|
39
|
-
author.destroy
|
40
|
-
term.destroy
|
41
|
-
post.destroy
|
42
|
-
end
|
43
|
-
end
|
data/test/terms_test.rb
DELETED
@@ -1,42 +0,0 @@
|
|
1
|
-
require_relative 'test_helper'
|
2
|
-
|
3
|
-
describe WPDB::Term do
|
4
|
-
before do
|
5
|
-
@term = WPDB::Term.create(:name => 'test')
|
6
|
-
@term_taxonomy = WPDB::TermTaxonomy.create(:term_id => @term.term_id, :taxonomy => 'category')
|
7
|
-
end
|
8
|
-
|
9
|
-
it "saves terms" do
|
10
|
-
assert @term.term_id
|
11
|
-
end
|
12
|
-
|
13
|
-
it "attaches terms to posts" do
|
14
|
-
post = WPDB::Post.create(:post_title => 'test', :post_author => 1)
|
15
|
-
post.add_termtaxonomy(@term_taxonomy)
|
16
|
-
post.save
|
17
|
-
|
18
|
-
assert post.ID
|
19
|
-
assert post.termtaxonomy.length
|
20
|
-
assert_equal @term.term_id, post.termtaxonomy.first.term_id
|
21
|
-
assert_equal 'category', post.termtaxonomy.first.taxonomy
|
22
|
-
|
23
|
-
post.destroy
|
24
|
-
end
|
25
|
-
|
26
|
-
it "attaches terms to posts with the shorthand" do
|
27
|
-
post = WPDB::Post.create(:post_title => 'test', :post_author => 1)
|
28
|
-
post.add_term(@term, 'category')
|
29
|
-
post.save
|
30
|
-
|
31
|
-
assert post.ID
|
32
|
-
assert post.termtaxonomy.length
|
33
|
-
assert_equal @term.term_id, post.termtaxonomy.first.term_id
|
34
|
-
assert_equal 'category', post.termtaxonomy.first.taxonomy
|
35
|
-
|
36
|
-
post.destroy
|
37
|
-
end
|
38
|
-
|
39
|
-
after do
|
40
|
-
@term.destroy
|
41
|
-
end
|
42
|
-
end
|
data/test/test_helper.rb
DELETED
@@ -1,17 +0,0 @@
|
|
1
|
-
$:.unshift File.expand_path('../lib', File.dirname(__FILE__))
|
2
|
-
require 'bundler'
|
3
|
-
Bundler.setup
|
4
|
-
|
5
|
-
require 'yaml'
|
6
|
-
require 'letters'
|
7
|
-
|
8
|
-
require 'sequel'
|
9
|
-
|
10
|
-
require 'ruby-wpdb'
|
11
|
-
|
12
|
-
WPDB.from_config
|
13
|
-
|
14
|
-
require 'logger'
|
15
|
-
WPDB.db.logger = Logger.new('data/query.log')
|
16
|
-
|
17
|
-
require 'minitest/autorun'
|
data/test/users_test.rb
DELETED
@@ -1,47 +0,0 @@
|
|
1
|
-
require_relative 'test_helper'
|
2
|
-
|
3
|
-
describe WPDB::User do
|
4
|
-
before do
|
5
|
-
@user = WPDB::User.create(
|
6
|
-
:user_login => 'test',
|
7
|
-
:user_pass => 'test',
|
8
|
-
:user_nicename => 'Testy Testerson',
|
9
|
-
:user_email => 'test@example.com',
|
10
|
-
:user_registered => DateTime.now
|
11
|
-
)
|
12
|
-
end
|
13
|
-
|
14
|
-
it "creates a new user" do
|
15
|
-
assert @user.ID
|
16
|
-
end
|
17
|
-
|
18
|
-
it "adds usermeta" do
|
19
|
-
@user.add_usermeta(:meta_key => 'test', :meta_value => 'test')
|
20
|
-
@user.save
|
21
|
-
|
22
|
-
user = WPDB::User.where(:ID => @user.ID).first
|
23
|
-
meta_value = user.usermeta.first.meta_value
|
24
|
-
assert_equal 'test', meta_value
|
25
|
-
end
|
26
|
-
|
27
|
-
it "hashes passwords" do
|
28
|
-
@user.save
|
29
|
-
assert_equal Digest::MD5.hexdigest('test'), @user.user_pass
|
30
|
-
end
|
31
|
-
|
32
|
-
it "registers the authorship of posts" do
|
33
|
-
post = WPDB::Post.create(:post_title => "Testy's first post")
|
34
|
-
@user.add_post(post)
|
35
|
-
@user.reload
|
36
|
-
|
37
|
-
assert_equal "Testy's first post", @user.posts.first.post_title
|
38
|
-
|
39
|
-
assert_equal @user.ID, post.post_author
|
40
|
-
|
41
|
-
post.destroy
|
42
|
-
end
|
43
|
-
|
44
|
-
after do
|
45
|
-
@user.destroy
|
46
|
-
end
|
47
|
-
end
|