Class: Ektoplayer::Models::Search

Inherits:
Model
  • Object
show all
Includes:
Enumerable
Defined in:
lib/ektoplayer/models/search.rb

Instance Attribute Summary

Attributes inherited from Model

#events

Instance Method Summary collapse

Constructor Details

#initialize(client, sort: 'date') ⇒ Search

Returns a new instance of Search.



10
11
12
13
14
15
16
# File 'lib/ektoplayer/models/search.rb', line 10

def initialize(client, sort: 'date')
   super()
   @params = { sort: 'date' }
   @db = client.database
   @events.register(:changed)
   #reload { sort: 'date' }.update(params)
end

Instance Method Details

#[](*args) ⇒ Object



8
# File 'lib/ektoplayer/models/search.rb', line 8

def [](*args)     @contents[*args]        end

#by_tag(tag, operator, value) ⇒ Object



37
38
39
# File 'lib/ektoplayer/models/search.rb', line 37

def by_tag(tag, operator, value)
   reload @param.dup.update()
end

#completion_for(tag) ⇒ Object



29
30
31
# File 'lib/ektoplayer/models/search.rb', line 29

def completion_for(tag)
   @db.select(columns: tag, group_by: tag, order_by: tag)
end

#each(&block) ⇒ Object



7
# File 'lib/ektoplayer/models/search.rb', line 7

def each(&block)  @contents.each(&block)  end

#reload(new_params) ⇒ Object



18
19
20
21
22
23
24
25
26
27
# File 'lib/ektoplayer/models/search.rb', line 18

def reload(new_params)
   return if new_params == @params
   @params = new_params

   @contents = @db.select(
      order_by:  "#{@params[:sort]}, album, number",
      filters: todo #TODO
   )
   @events.trigger(:changed)
end

#sort(new) ⇒ Object



33
34
35
# File 'lib/ektoplayer/models/search.rb', line 33

def sort(new)
   reload @param.dup.update(sort: new)
end