· 8 years ago · Jul 31, 2018, 10:22 AM
1#!/usr/bin/env ruby
2#
3# A one file test to show chaining
4require 'rubygems'
5require 'dm-core'
6
7
8# setup the logger
9DataMapper::Logger.new(STDOUT, :debug)
10
11# connect to the DB
12DataMapper.setup(:default, 'sqlite3::memory:')
13
14module Lame
15 def lame
16 all(:title => nil)
17 end
18end
19
20class TestModel
21 include DataMapper::Resource
22 extend Lame
23
24 # properties
25 property :id, Serial
26 property :title, String
27 property :up, Integer
28
29
30 def self.over_eleven
31 all(:up.gt => 11)
32 end
33
34 def self.awesome
35 all(:title.like => '%awesome%')
36 end
37
38end
39
40DataMapper.auto_migrate!
41
42
43p TestModel.over_eleven.awesome
44
45p TestModel.lame
46
47p TestModel.over_eleven.lame
48
49__END__
50
51
52
53 ~ (0.000097) SELECT sqlite_version(*)
54 ~ (0.000189) DROP TABLE IF EXISTS "test_models"
55 ~ (0.000026) PRAGMA table_info("test_models")
56 ~ (0.000523) CREATE TABLE "test_models" ("id" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, "title" VARCHAR(50), "up" INTEGER)
57 ~ (0.000101) SELECT "id", "title", "up" FROM "test_models" WHERE ("up" > 11 AND "title" LIKE '%awesome%') ORDER BY "id"
58[]
59 ~ (0.000087) SELECT "id", "title", "up" FROM "test_models" WHERE "title" IS NULL ORDER BY "id"
60[]
61 ~ (0.000095) SELECT "id", "title", "up" FROM "test_models" WHERE ("up" > 11 AND "title" IS NULL) ORDER BY "id"
62[]