Guest User

Untitled

a guest
Apr 23rd, 2018
114
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.84 KB | None | 0 0
  1. # setup database
  2. StrokeDB::Config.build :default => true, :base_path => '.movies.strokedb'
  3. include StrokeDB
  4.  
  5. Movie = Meta.new(:credits => %w[ Автор Актер Режиссер Исполнитель Год ]) do
  6. has_many :comments
  7. on_new_document do |doc|
  8. doc[:credits] ||= []
  9. end
  10.  
  11. # :edited_by slot keeps track on who edited this particular version
  12. before_save do |doc|
  13. doc[:edited_by] ||= doc[:owner]
  14. end
  15.  
  16. # returns ordered credits in a form of:
  17. # movie.credits == [ ["Artist", "Mylène Farmer"], ["Director", "Laurent Boutonnat"] ]
  18. def credits
  19. meta.credits.map do |s|
  20. self[s] ? [s, self[s]] : nil
  21. end.compact
  22. end
  23. end
  24.  
  25. Comment = Meta.new
  26.  
  27. User = Meta.new do
  28. on_new_document do |u|
  29. u[:playlists] ||= []
  30. end
  31. end
  32.  
  33. Playlist = Meta.new do
  34. on_new_document do |pl|
  35. pl[:items] ||= []
  36. end
  37. end
  38.  
  39. oleg = User.create!(:name => "Олег Андреев")
  40. yrashk = User.create!(:name => "Юрій Рашковський")
  41.  
  42. melancholie = Movie.create!(:owner => oleg,
  43. :title => "Je t'aime mélancolie")
  44.  
  45. desenchantee = Movie.create!(:owner => oleg,
  46. :title => "Désenchantée")
  47.  
  48. sanscontrefacon = Movie.create!(:owner => yrashk,
  49. :title => "Sans Contrefaçon")
  50.  
  51. # Oleg creates a favorites playlist
  52. my_favorites = Playlist.new(:owner => oleg,
  53. :title => "Favorite MF music videos")
  54.  
  55. my_favorites.items += [ melancholie, desenchantee ]
  56. my_favorites.save!
  57.  
  58. # Yurii adds credits to movies
  59. melancholie.edited_by = yrashk
  60. desenchantee.edited_by = yrashk
  61. sanscontrefacon.edited_by = yrashk
  62.  
  63. melancholie["Исполнитель"] = "Mylène Farmer"
  64. desenchantee["Исполнитель"] = "Mylène Farmer"
  65. sanscontrefacon["Исполнитель"] = "Mylène Farmer"
  66. melancholie["Год"] = 1991
  67. desenchantee["Год"] = 1991
  68. sanscontrefacon["Год"] = 1987
  69. melancholie.save!
  70. desenchantee.save!
  71. sanscontrefacon.save!
  72.  
  73. # Oleg adds a comment to "Sans Contrefaçon"
  74.  
  75. Comment.create!(:text => "Обалдеть!!!111", :owner => oleg, :movie => sanscontrefacon)
  76.  
  77. p sanscontrefacon.comments.map{|c|c.text}
  78. # => ["Обалдеть!!!111"]
  79.  
  80. # Find all Movies
  81. p Movie.find.map { |d|
  82. "#{d.uuid[0,4]}: #{d.title}"
  83. }
  84. # => ["fd59: Je t'aime mélancolie", "66d0: Sans Contrefaçon", "9c4c: Désenchantée"]
  85.  
  86. # Find all Oleg's documents
  87. p Document.find(:owner => oleg).map { |d|
  88. "#{d.meta.name}:#{d.uuid[0,4]}"
  89. }
  90. # => ["Movie:fd59", "Movie:9c4c", "Playlist:8acc", "Comment:8306"]
  91.  
  92. p sanscontrefacon.credits
  93. # => [["Исполнитель", "Mylène Farmer"], ["Год", 1987]]
  94.  
  95. # Find all 1991 year movies
  96. p Movie.find("Год" => 1991).map { |d| d.title }
  97. # => ["Désenchantée", "Je t'aime mélancolie"]
Add Comment
Please, Sign In to add comment