Module: Bowtie

Defined in:
lib/bowtie/admin.rb,
lib/bowtie/helpers.rb,
lib/bowtie/adapters/datamapper.rb,
lib/bowtie/adapters/mongomapper.rb

Defined Under Namespace

Modules: ClassMethods, Helpers Classes: Admin

Constant Summary collapse

PER_PAGE =
25

Class Method Summary collapse

Class Method Details

.add_paging(resources, page) ⇒ Object



45
46
47
# File 'lib/bowtie/adapters/datamapper.rb', line 45

def self.add_paging(resources, page)
	resources.respond_to?(:page) ? resources.page(page, :per_page => PER_PAGE) : resources
end

.belongs_to_association?(assoc) ⇒ Boolean

Returns:

  • (Boolean)


49
50
51
# File 'lib/bowtie/adapters/datamapper.rb', line 49

def self.belongs_to_association?(assoc)
	assoc.class == DataMapper::Associations::ManyToOne::Relationship
end

.create(model, params) ⇒ Object



23
24
25
26
27
# File 'lib/bowtie/adapters/datamapper.rb', line 23

def self.create(model, params)
	model.create(params)
rescue DataObjects::IntegrityError
	model.new(params)
end

.get_associated(model, params) ⇒ Object



29
30
31
32
33
34
# File 'lib/bowtie/adapters/datamapper.rb', line 29

def self.get_associated(model, params)
	res = model.get(params[:id]).send(params[:association])
	# if model.associations[params[:association]].type == :many
	# 	add_paging(res, params)
	# end
end

.get_count(record, association) ⇒ Object

i have to say this: datamapper sucks. when calling record.association.count it actually fetches all the records, builds an array and then calls count on that array.



60
61
62
63
64
65
66
67
# File 'lib/bowtie/adapters/datamapper.rb', line 60

def self.get_count(record, association)
	association_key = "#{record.class.name.downcase}_#{record.class.primary_key}"
	begin
		repository.adapter.select("select count(*) from #{association} where #{association_key} = ?", record.primary_key)
	rescue DataObjects::SQLError => e # probably has_many :through => association
		''
	end
end

.get_many(model, params, page) ⇒ Object



15
16
17
# File 'lib/bowtie/adapters/datamapper.rb', line 15

def self.get_many(model, params, page)
	add_paging(model.all(params), page)
end

.get_one(model, id) ⇒ Object



19
20
21
# File 'lib/bowtie/adapters/datamapper.rb', line 19

def self.get_one(model, id)
	model.get(id)
end

.has_one_association?(assoc) ⇒ Boolean

Returns:

  • (Boolean)


53
54
55
# File 'lib/bowtie/adapters/datamapper.rb', line 53

def self.has_one_association?(assoc)
	assoc.class == DataMapper::Associations::OneToOne::Relationship
end

.modelsObject



3
4
5
# File 'lib/bowtie/adapters/datamapper.rb', line 3

def self.models
	DataMapper::Model.descendants.to_a
end

.search(model, q, page) ⇒ Object



7
8
9
10
11
12
13
# File 'lib/bowtie/adapters/datamapper.rb', line 7

def self.search(model, q, page)
	query = []
	model.searchable_fields.each do |field|
		query << "#{model}.all(:#{field}.like => '%#{q}%')"
	end
	eval(query.join(' + ')).page(page, :per_page => PER_PAGE)
end

.update(resource, params) ⇒ Object



41
42
43
# File 'lib/bowtie/adapters/datamapper.rb', line 41

def self.update(resource, params)
	resource.update(params)
end

.update!(resource, params) ⇒ Object

doesnt trigger validations or callbacks



37
38
39
# File 'lib/bowtie/adapters/datamapper.rb', line 37

def self.update!(resource, params)
	resource.update!(params)
end