Class: LesliBabel::LabelService

Inherits:
Lesli::ApplicationLesliService
  • Object
show all
Defined in:
app/services/lesli_babel/label_service.rb

Instance Method Summary collapse

Instance Method Details

#builder(modules_id: nil, buckets_id: nil) ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'app/services/lesli_babel/label_service.rb', line 8

def builder modules_id:nil, buckets_id:nil

    # get strings with bucket and module information
    strings = Label
    .joins("inner join lesli_babel_buckets on lesli_babel_buckets.id = lesli_babel_labels.bucket_id and lesli_babel_buckets.deleted_at is NULL")
    .joins("inner join lesli_babel_modules on lesli_babel_modules.id = lesli_babel_buckets.module_id and lesli_babel_modules.deleted_at is NULL")
    .where("lesli_babel_labels.status != 0 OR lesli_babel_labels.status is NULL")

    # filter by specific engines
    if modules_id
        strings = strings.where("lesli_babel_modules.id in (?)", modules_id)
    end

    # filter by specific engine buckets 
    if buckets_id
        strings = strings.where("lesli_babel_buckets.id in (?)", buckets_id)
    end

    strings.select(
        :id,
        :text,
        :status,
        :context,
        Lesli.config.locales.keys,
        "lesli_babel_modules.id as engine_id",
        "lesli_babel_buckets.id as bucket_id",
        "lesli_babel_buckets.code as bucket_code",
        "lesli_babel_modules.code as engine_code",
        "lesli_babel_modules.platform as platform",
        "concat_ws('.', lesli_babel_modules.code, lesli_babel_buckets.code, text) as path"
    )

end

#find(id) ⇒ Object



4
5
6
# File 'app/services/lesli_babel/label_service.rb', line 4

def find id 
    super(Label.find_by_id(id))
end

#index(params) ⇒ Object



42
43
44
45
46
47
48
# File 'app/services/lesli_babel/label_service.rb', line 42

def index params
    self.builder(modules_id:params[:modules_id])
    .page(query[:pagination][:page])
    .per(query[:pagination][:perPage])
    .order(status: :desc )
    .order(updated_at: :desc)
end

#showObject



50
51
52
# File 'app/services/lesli_babel/label_service.rb', line 50

def show 
    self.builder.find_by_id(self.resource.id)
end