models 0.0.22.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.
@@ -0,0 +1,18 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
18
+ .idea
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in models.gemspec
4
+ gemspec
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2012 Le Duc Duy
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,23 @@
1
+ # Models
2
+
3
+ Gem riêng để sài với search app với admin app và frontend app
4
+
5
+ ## Installation
6
+
7
+ Add this line to your application's Gemfile:
8
+
9
+ gem 'models', git: "git@github.com:duyleekun/models.git"
10
+
11
+ And then execute:
12
+
13
+ $ bundle
14
+
15
+ ## Usage
16
+
17
+ Nếu muốn sửa nhanh thì vào cái gem đó trong rubymine sửa như bình thường
18
+
19
+
20
+ ## Contributing
21
+
22
+ Clone về, sửa, đẩy version trong file version.rb rồi push
23
+ Rồi qua app chính bundle update là xong
@@ -0,0 +1 @@
1
+ require "bundler/gem_tasks"
@@ -0,0 +1,23 @@
1
+ class Activity
2
+ include Mongoid::Document
3
+ embedded_in :actionable, polymorphic: true
4
+
5
+ field :recommend, type: Hash
6
+ field :view, type: Hash
7
+ field :visit, type: Hash
8
+
9
+ field :_id, type: String, default: nil
10
+
11
+
12
+
13
+ def activities_of_user(user_id)
14
+ result = {}
15
+ self.attributes.each {|k,v|
16
+ result[k] = {
17
+ 'id' => (v.include?(user_id.to_s) ? v[user_id.to_s] || true : false),
18
+ 'count' => v.try(:length)
19
+ }
20
+ }
21
+ result
22
+ end
23
+ end
@@ -0,0 +1,32 @@
1
+ class Category
2
+ include Mongoid::Document
3
+ include Mongoid::Timestamps
4
+
5
+ default_scope ne(status: "DELETED").limit(20)
6
+ scope :filter_store, ->(store_id) {where(store_id: store_id)}
7
+
8
+ embeds_one :settings, class_name: "Settings"
9
+
10
+
11
+ #FROM iMuaSam
12
+ ##FIELD
13
+ field :status, type: String
14
+ field :count, type: Integer
15
+ field :lid, type: Integer
16
+ field :position, type: Float
17
+
18
+
19
+
20
+ ##RELATIONS
21
+ belongs_to :store
22
+ has_many :products
23
+ embeds_one :cover, as: :photoable, class_name: 'Photo', store_as: 'cover'
24
+
25
+
26
+ #FROM GRAPH API
27
+ ##FIELDS
28
+ field :fb_id, type: String
29
+ field :name, type: String
30
+ field :description, type: String
31
+ field :columns, type: Integer
32
+ end
@@ -0,0 +1,17 @@
1
+ class CategoryType
2
+ include Mongoid::Document
3
+ include Mongoid::Localized::Accessor
4
+
5
+ default_scope exists(:status => 1).asc(:id)
6
+
7
+ field :_id, type: Integer
8
+ field :name, type: Hash, localize: true
9
+ field :level, type: Integer
10
+ field :status, type: String
11
+ field :site, type: Array
12
+
13
+ embeds_many :spec_recs
14
+ belongs_to :category_type
15
+ has_many :category_types
16
+ has_and_belongs_to_many :parents, class_name: 'CategoryType', inverse_of: :parents, foreign_key: 'parents'
17
+ end
@@ -0,0 +1,11 @@
1
+ class Keyword
2
+ include Mongoid::Document
3
+ include Mongoid::Timestamps
4
+
5
+ field :key, type: String
6
+ field :trans, type: String, localize: true
7
+
8
+ def id
9
+ self._id.to_s
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ class Location
2
+ include Mongoid::Document
3
+ embedded_in :locationable, :polymorphic => true
4
+
5
+ field :street, type: String
6
+ field :city, type: String
7
+ field :zip, type: Integer
8
+ field :country, type: String
9
+ field :xy, type: Array
10
+
11
+ end
@@ -0,0 +1,19 @@
1
+ class Model
2
+ include Mongoid::Document
3
+
4
+ field :_id, type: Integer
5
+ field :name, type: String
6
+ field :model_id, type: String
7
+ field :type, type: String
8
+ field :brand, type: String
9
+ embeds_one :cover, as: :photoable, class_name: 'Photo', store_as: 'cover'
10
+ field :spec_values, type: Hash
11
+
12
+ def self.find_all_by_id ids, _ = {}
13
+ Model.where(:id.in => ids)
14
+ end
15
+
16
+ def get (key)
17
+ self.spec_values.try(:[], key)
18
+ end
19
+ end
@@ -0,0 +1,7 @@
1
+ class ModelType
2
+ include Mongoid::Document
3
+ include Mongoid::Timestamps
4
+
5
+ field :id, type: Integer
6
+ field :spec_template, type: Array, localize: true
7
+ end
@@ -0,0 +1,18 @@
1
+ class Size
2
+ include Mongoid::Document
3
+ embedded_in :photo
4
+
5
+ field :_id, type: String, default: nil
6
+
7
+ field :w, type: Integer
8
+ field :h, type: Integer
9
+ end
10
+
11
+ class Photo
12
+ include Mongoid::Document
13
+ embedded_in :photoable, polymorphic: true
14
+ field :source, type: String
15
+ field :_id, type: String, default: nil
16
+ field :offset, type: Integer
17
+ embeds_one :size
18
+ end
@@ -0,0 +1,13 @@
1
+ class Price
2
+ include Mongoid::Document
3
+ embedded_in :pricable, polymorphic: true
4
+
5
+ field :_id, type: String, default: nil
6
+ field :currency, type: String
7
+ field :amount, type: Float
8
+
9
+ def to_s(missing_string)
10
+ return "#{currency} #{(amount - amount.floor) >0 ? amount : amount.floor}" if currency && amount
11
+ return missing_string
12
+ end
13
+ end
@@ -0,0 +1,63 @@
1
+ class Choice
2
+ include Mongoid::Document
3
+ attr_accessible :adjusted_price, :stock, :values
4
+
5
+ embedded_in :option
6
+
7
+ field :_id, type: String, default: nil
8
+ field :adjusted_price, type: Float
9
+ field :values, type: Array
10
+ field :in_stock, type: Boolean
11
+ end
12
+
13
+
14
+ class Option
15
+ include Mongoid::Document
16
+ embedded_in :product
17
+
18
+ field :_id, type: String, default: nil
19
+ embeds_many :choices
20
+ field :template, type: Array
21
+ field :name, type: String
22
+
23
+ end
24
+
25
+
26
+ class Product
27
+ include Mongoid::Document
28
+ include Mongoid::Timestamps
29
+
30
+ default_scope ne(status: "DELETED").limit(20)
31
+ scope :filter_store, ->(store_id) {where(store_id: store_id)}
32
+
33
+ belongs_to :category, index: true
34
+ belongs_to :store, index: true
35
+ embedded_in :widget
36
+
37
+ embeds_one :cover, as: :photoable, class_name: 'Photo', store_as: 'cover'
38
+ embeds_many :photos
39
+ embeds_one :activity
40
+ embeds_one :option
41
+ embeds_one :price, as: :pricable
42
+ embeds_one :retail_price, as: :pricable, class_name: 'Price', store_as: 'retail_price'
43
+
44
+ embeds_one :settings, class_name: "Settings"
45
+
46
+ field :fb_id, type: String
47
+ field :lid, type: Integer
48
+ field :category_lid , type: Integer
49
+
50
+
51
+ field :status, type: String
52
+ field :name, type: String
53
+ field :description, type: String
54
+ field :content, type: String #<html>
55
+
56
+
57
+
58
+ field :in_stock, type: Boolean
59
+ field :position, type: Float
60
+
61
+ field :sku, type: String
62
+ field :keywords, type: Array
63
+ end
@@ -0,0 +1,33 @@
1
+ class PaymentMethod
2
+ include Mongoid::Document
3
+ embedded_in :settings
4
+
5
+ field :_id, type: String, default: nil
6
+ field :account, :type => String
7
+ field :bank, :type => String
8
+ field :enabled, :type => String
9
+ field :method, :type => Symbol
10
+ end
11
+
12
+ class ShippingMethod
13
+ include Mongoid::Document
14
+ embedded_in :settings
15
+
16
+ embeds_one :location
17
+ field :_id, type: String, default: nil
18
+ field :enabled, :type => Boolean
19
+ field :method, :type => Symbol
20
+ end
21
+
22
+
23
+ class Settings
24
+ include Mongoid::Document
25
+ embedded_in :settingable, polymorphic: true
26
+
27
+ field :_id, type: String
28
+ field :auto_set_featured, type: Boolean
29
+ field :own, type: Boolean
30
+ embeds_many :shipping_methods
31
+ embeds_many :payment_methods
32
+
33
+ end
@@ -0,0 +1,8 @@
1
+ class SpecRec
2
+ include Mongoid::Document
3
+ embedded_in :category_type
4
+
5
+ field :_id, type: String, default: nil
6
+ field :name, type: String, localize: true
7
+ field :values, type: Array, localize: true
8
+ end
@@ -0,0 +1,43 @@
1
+ class Store
2
+ include Mongoid::Document
3
+ include Mongoid::Timestamps
4
+ default_scope ne(status: "DELETED")
5
+
6
+ #attr_accessible :name, :picture, :website, :description, :about, :phone, :settings, :cover, :location
7
+
8
+ #FROM iMuaSam
9
+ #RELATIONS
10
+ has_many :categories
11
+ has_many :widgets
12
+ embeds_one :settings, class_name: "Settings"
13
+ embeds_one :location
14
+ embeds_one :activity
15
+
16
+
17
+ ##FIELD
18
+ field :status, type: String
19
+ field :currency, type: String
20
+ field :language, type: String
21
+ field :store_category, type: String
22
+ field :fb_link, type: String
23
+ field :username, type: String
24
+ field :like_count, type: Integer
25
+ field :terms_and_policies, type:String
26
+ field :email, type:String
27
+ field :count, type: Integer
28
+ field :handling_time, type:String
29
+
30
+ #FROM GRAPH API
31
+ ##RELATIONS
32
+ embeds_one :token, as: :fb_token
33
+ embeds_one :cover, as: :photoable, class_name: 'Photo', store_as: 'cover'
34
+ ##FIELDS
35
+ field :fb_id, type: String
36
+ field :name, type: String
37
+
38
+ field :website, type: String
39
+ field :description, type: String
40
+ field :about, type: String
41
+ field :phone, type: String
42
+
43
+ end
@@ -0,0 +1,18 @@
1
+ class Token
2
+ include Mongoid::Document
3
+
4
+ embedded_in :fb_token, polymorphic: true
5
+
6
+ field :_id, type: String, default: nil
7
+ field :access_token, type: String
8
+ field :can_modify, type: Boolean
9
+ field :expires, type: DateTime
10
+ field :scope, type: Array
11
+
12
+ def update_attributes_from_fb(access_token,expires_from_epoch = nil)
13
+ self.access_token = access_token
14
+ self.expires = Time.at(expires_from_epoch.to_i).to_datetime if expires_from_epoch
15
+ self
16
+ end
17
+
18
+ end
@@ -0,0 +1,16 @@
1
+ class User
2
+ include Mongoid::Document
3
+ include Mongoid::Timestamps
4
+ default_scope ne(status: "DELETED")
5
+
6
+ #From iMuaSam
7
+ ##Field
8
+ field :status, type: String
9
+
10
+ #FROM GRAPH API
11
+ ##RELATIONS
12
+ embeds_one :token, as: :fb_token
13
+ ##FIELDS
14
+ field :fb_id, type: String
15
+ field :pages_ids, type: Array
16
+ end
@@ -0,0 +1,25 @@
1
+ class Widget
2
+ include Mongoid::Document
3
+ include Mongoid::Timestamps
4
+
5
+ default_scope ne(status: "DELETED")
6
+ scope :filter_store, ->(store_id) {where(store_id: store_id)}
7
+ belongs_to :store
8
+
9
+ field :name, type: String #Title of widget
10
+ field :type, type: String #Types: Not finalized yet
11
+ field :status, type: String
12
+
13
+ field :settings #Type specific setting
14
+ field :position, type: Float #Position
15
+
16
+ field :api, type: String #NEWEST,RECENT_UPDATE,MOST_VIEWED,MOST_RECOMMENDED,FIXED
17
+ field :source # Object, e.g Store ID
18
+ field :source_type # ENUM: Store, Category, Categories, Product, Products, User, URL, URLS
19
+
20
+ field :key_type, type: String #Store,Category,Product
21
+ field :limit, type: Integer #Limit used in query
22
+ field :keys, type: Array #List of ids
23
+ field :values, type: Hash #Hash of overrides
24
+
25
+ end
@@ -0,0 +1,13 @@
1
+ require "models/version"
2
+ require "mongoid"
3
+ require "mongoid-localized-accessor"
4
+
5
+ Dir[File.expand_path("../../app/models/*.rb",__FILE__)].each {|file|
6
+ puts file
7
+ require file
8
+ }
9
+
10
+ Dir[File.expand_path("../../app/models/model/*.rb",__FILE__)].each {|file|
11
+ puts file
12
+ require file
13
+ }
@@ -0,0 +1,3 @@
1
+ module Models
2
+ VERSION = "0.0.22.1"
3
+ end
@@ -0,0 +1,21 @@
1
+ # -*- encoding: utf-8 -*-
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'models/version'
5
+
6
+ Gem::Specification.new do |gem|
7
+ gem.name = "models"
8
+ gem.version = Models::VERSION
9
+ gem.authors = ["Le Duc Duy"]
10
+ gem.email = ["me@duy.kr"]
11
+ gem.description = "Models for ims"
12
+ gem.summary = "Models for ims"
13
+ gem.homepage = ""
14
+
15
+ gem.files = `git ls-files`.split($/)
16
+ gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
17
+ gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
18
+ gem.require_paths = ["lib"]
19
+ gem.add_dependency 'mongoid'
20
+ gem.add_dependency 'mongoid-localized-accessor'
21
+ end
metadata ADDED
@@ -0,0 +1,101 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: models
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.22.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Le Duc Duy
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2013-02-21 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: mongoid
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
30
+ - !ruby/object:Gem::Dependency
31
+ name: mongoid-localized-accessor
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ type: :runtime
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
+ description: Models for ims
47
+ email:
48
+ - me@duy.kr
49
+ executables: []
50
+ extensions: []
51
+ extra_rdoc_files: []
52
+ files:
53
+ - .gitignore
54
+ - Gemfile
55
+ - LICENSE.txt
56
+ - README.md
57
+ - Rakefile
58
+ - app/models/activity.rb
59
+ - app/models/category.rb
60
+ - app/models/category_type.rb
61
+ - app/models/keyword.rb
62
+ - app/models/location.rb
63
+ - app/models/model.rb
64
+ - app/models/model_type.rb
65
+ - app/models/photo.rb
66
+ - app/models/price.rb
67
+ - app/models/product.rb
68
+ - app/models/settings.rb
69
+ - app/models/spec_rec.rb
70
+ - app/models/store.rb
71
+ - app/models/token.rb
72
+ - app/models/user.rb
73
+ - app/models/widget.rb
74
+ - lib/models.rb
75
+ - lib/models/version.rb
76
+ - models.gemspec
77
+ homepage: ''
78
+ licenses: []
79
+ post_install_message:
80
+ rdoc_options: []
81
+ require_paths:
82
+ - lib
83
+ required_ruby_version: !ruby/object:Gem::Requirement
84
+ none: false
85
+ requirements:
86
+ - - ! '>='
87
+ - !ruby/object:Gem::Version
88
+ version: '0'
89
+ required_rubygems_version: !ruby/object:Gem::Requirement
90
+ none: false
91
+ requirements:
92
+ - - ! '>='
93
+ - !ruby/object:Gem::Version
94
+ version: '0'
95
+ requirements: []
96
+ rubyforge_project:
97
+ rubygems_version: 1.8.24
98
+ signing_key:
99
+ specification_version: 3
100
+ summary: Models for ims
101
+ test_files: []