mangusta 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +11 -0
- data/.rspec +3 -0
- data/.ruby-version +1 -0
- data/Gemfile +9 -0
- data/Gemfile.lock +47 -0
- data/README.md +36 -0
- data/Rakefile +6 -0
- data/bin/console +14 -0
- data/bin/setup +8 -0
- data/lib/mangusta/core_ext/mongo.rb +17 -0
- data/lib/mangusta/documento/campo.ir +25 -0
- data/lib/mangusta/documento.ir +124 -0
- data/lib/mangusta/ripostiglio/risultato_ricerca.ir +26 -0
- data/lib/mangusta/ripostiglio.ir +172 -0
- data/lib/mangusta/utilit/303/240/convertitori.ir +21 -0
- data/lib/mangusta/versione.ir +3 -0
- data/lib/mangusta.ir +25 -0
- data/mangusta.gemspec +28 -0
- metadata +63 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: a0d32d01d6f5191b3b692cfc4bba85867a5de70e1f06f78c196432b16d428871
|
4
|
+
data.tar.gz: f2e5c89cc582a4ca05263759faea53435ab6aa259895410d030a34c7c3b79a16
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: f83fb4cc57ba6218819d7c8f581f4add317152742f71e98eb48d9d82e0b5f8f8d52338f90dd59dbb9f845e48ca4f75e6f514bc5f6e60e47a371a4ab85d2089b8
|
7
|
+
data.tar.gz: 13a5cbb8e41ab092a79b810c3fc78edca8228392224d0007dd346e7f3ea9b6fdb607119d487c9ed63362fc80091b217d59db276386c7635ebe672f3ce08904e2
|
data/.gitignore
ADDED
data/.rspec
ADDED
data/.ruby-version
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
2.7.0
|
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
@@ -0,0 +1,47 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
mangusta (0.1.0)
|
5
|
+
|
6
|
+
GEM
|
7
|
+
remote: https://rubygems.org/
|
8
|
+
specs:
|
9
|
+
bson (4.8.2)
|
10
|
+
diff-lcs (1.3)
|
11
|
+
italian-ruby (0.1.3)
|
12
|
+
ruby2ruby (~> 2.4)
|
13
|
+
mongo (2.11.4)
|
14
|
+
bson (>= 4.4.2, < 5.0.0)
|
15
|
+
rake (12.3.3)
|
16
|
+
rspec (3.9.0)
|
17
|
+
rspec-core (~> 3.9.0)
|
18
|
+
rspec-expectations (~> 3.9.0)
|
19
|
+
rspec-mocks (~> 3.9.0)
|
20
|
+
rspec-core (3.9.1)
|
21
|
+
rspec-support (~> 3.9.1)
|
22
|
+
rspec-expectations (3.9.1)
|
23
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
24
|
+
rspec-support (~> 3.9.0)
|
25
|
+
rspec-mocks (3.9.1)
|
26
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
27
|
+
rspec-support (~> 3.9.0)
|
28
|
+
rspec-support (3.9.2)
|
29
|
+
ruby2ruby (2.4.4)
|
30
|
+
ruby_parser (~> 3.1)
|
31
|
+
sexp_processor (~> 4.6)
|
32
|
+
ruby_parser (3.14.2)
|
33
|
+
sexp_processor (~> 4.9)
|
34
|
+
sexp_processor (4.14.1)
|
35
|
+
|
36
|
+
PLATFORMS
|
37
|
+
ruby
|
38
|
+
|
39
|
+
DEPENDENCIES
|
40
|
+
italian-ruby (~> 0.1.3)
|
41
|
+
mangusta!
|
42
|
+
mongo (~> 2.11)
|
43
|
+
rake (~> 12.0)
|
44
|
+
rspec (~> 3.0)
|
45
|
+
|
46
|
+
BUNDLED WITH
|
47
|
+
2.1.4
|
data/README.md
ADDED
@@ -0,0 +1,36 @@
|
|
1
|
+
# Mangusta
|
2
|
+
|
3
|
+
Welcome to your new gem! In this directory, you'll find the files you need to be able to package up your Ruby library into a gem. Put your Ruby code in the file `lib/mangusta`. To experiment with that code, run `bin/console` for an interactive prompt.
|
4
|
+
|
5
|
+
TODO: Delete this and the text above, and describe your gem
|
6
|
+
|
7
|
+
## Installation
|
8
|
+
|
9
|
+
Add this line to your application's Gemfile:
|
10
|
+
|
11
|
+
```ruby
|
12
|
+
gem 'mangusta'
|
13
|
+
```
|
14
|
+
|
15
|
+
And then execute:
|
16
|
+
|
17
|
+
$ bundle install
|
18
|
+
|
19
|
+
Or install it yourself as:
|
20
|
+
|
21
|
+
$ gem install mangusta
|
22
|
+
|
23
|
+
## Usage
|
24
|
+
|
25
|
+
TODO: Write usage instructions here
|
26
|
+
|
27
|
+
## Development
|
28
|
+
|
29
|
+
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
30
|
+
|
31
|
+
To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
|
32
|
+
|
33
|
+
## Contributing
|
34
|
+
|
35
|
+
Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/mangusta.
|
36
|
+
|
data/Rakefile
ADDED
data/bin/console
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require "bundler/setup"
|
4
|
+
richiedi "mangusta"
|
5
|
+
|
6
|
+
# You can add fixtures and/or initialization code here to make experimenting
|
7
|
+
# with your gem easier. You can also use a different console, if you like.
|
8
|
+
|
9
|
+
# (If you use this, don't forget to add pry to your Gemfile!)
|
10
|
+
# require "pry"
|
11
|
+
# Pry.start
|
12
|
+
|
13
|
+
require "irb"
|
14
|
+
IRB.start(__FILE__)
|
data/bin/setup
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
module Mongo
|
2
|
+
class Collection
|
3
|
+
alias :cerca :find
|
4
|
+
alias :inserisci_uno :insert_one
|
5
|
+
alias :inserisci_molti :insert_many
|
6
|
+
alias :aggiorna_uno :update_one
|
7
|
+
alias :aggiorna_molti :update_many
|
8
|
+
alias :cancella_uno :delete_one
|
9
|
+
alias :cancella_molti :delete_many
|
10
|
+
|
11
|
+
class View
|
12
|
+
alias :primo :first
|
13
|
+
alias :prima :first
|
14
|
+
alias :lista :entries
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
modulo Mangusta
|
2
|
+
modulo Documento
|
3
|
+
##
|
4
|
+
# Gestisce un campo di un documento.
|
5
|
+
classe Campo
|
6
|
+
|
7
|
+
accessore :nome
|
8
|
+
accessore :valore_iniziale
|
9
|
+
|
10
|
+
##
|
11
|
+
# Imposta nome e valore iniziale.
|
12
|
+
definisci inizializzatore(nome, **attributi)
|
13
|
+
se_stesso.nome = nome
|
14
|
+
se_stesso.valore_iniziale = attributi.ottieni(:valore_iniziale, nullo)
|
15
|
+
fine
|
16
|
+
|
17
|
+
##
|
18
|
+
# Determina se il campo è stato creato con un valore iniziale.
|
19
|
+
definisci ha_valore_iniziale?
|
20
|
+
se_stesso.valore_iniziale.esiste?
|
21
|
+
fine
|
22
|
+
|
23
|
+
fine
|
24
|
+
fine
|
25
|
+
fine
|
@@ -0,0 +1,124 @@
|
|
1
|
+
modulo Mangusta
|
2
|
+
##
|
3
|
+
# Aggiunge funzionalità di gestione di un documento.
|
4
|
+
# Includere questo modulo dentro una classe, es.
|
5
|
+
#
|
6
|
+
# classe Libro
|
7
|
+
# includi Mangusta::Documento
|
8
|
+
# fine
|
9
|
+
#
|
10
|
+
# In questo modo sarà possibile definire campi e relazioni, es.
|
11
|
+
#
|
12
|
+
# classe Libro
|
13
|
+
# includi Mangusta::Documento
|
14
|
+
#
|
15
|
+
# campo :titolo, valore_iniziale: "Il Signore degli Anelli"
|
16
|
+
# appartiene_a :autore, classe: "Autore"
|
17
|
+
# fine
|
18
|
+
#
|
19
|
+
# Il metodo di classe `campo` ha come primo argomento obbligatorio il nome del campo,
|
20
|
+
# che sarà la chiave del campo inserito nel documento. Il secondo argomento è opzionale,
|
21
|
+
# e se viene passata una Mappa con chiave :valore_iniziale, allora quel campo sarà
|
22
|
+
# creato con il valore iniziale passato.
|
23
|
+
#
|
24
|
+
# I metodi di classe `appartiene_a`, `ha_molte`, `ha_e_appartiene_a_molte` (gli ultimi
|
25
|
+
# due hanno alias `ha_molti` e `ha_e_appartiene_a_molti`) definiscono delle relazioni.
|
26
|
+
#
|
27
|
+
modulo Documento
|
28
|
+
|
29
|
+
##
|
30
|
+
# Inizializzatore di un documento.
|
31
|
+
# Si preoccupa di impostare campi ed eventuali valori iniziali.
|
32
|
+
definisci inizializzatore(**attributi)
|
33
|
+
ritorna se se_stesso.classe.campi.nullo? o se_stesso.classe.campi.vuoto?
|
34
|
+
|
35
|
+
se_stesso.classe.campi.per_ognuno esegui |campo|
|
36
|
+
_inizializza_campo campo
|
37
|
+
fine
|
38
|
+
|
39
|
+
attributi.per_ognuno esegui |nome_campo, valore_campo|
|
40
|
+
imposta_valore_campo nome_campo, valore_campo
|
41
|
+
fine
|
42
|
+
|
43
|
+
_genera_nuovo_id se ottieni_valore_campo(:_id).nullo?
|
44
|
+
fine
|
45
|
+
|
46
|
+
##
|
47
|
+
# Recupera i campi definiti.
|
48
|
+
definisci campi
|
49
|
+
se_stesso.classe.campi || []
|
50
|
+
fine
|
51
|
+
|
52
|
+
##
|
53
|
+
# Recupera il valore di un campo del documento.
|
54
|
+
definisci ottieni_valore_campo(nome_campo)
|
55
|
+
ottieni_variabile_istanza "@#{nome_campo}"
|
56
|
+
fine
|
57
|
+
|
58
|
+
##
|
59
|
+
# Imposta il valore di un campo del documento.
|
60
|
+
definisci imposta_valore_campo(nome_campo, valore_campo)
|
61
|
+
imposta_variabile_istanza "@#{nome_campo}", valore_campo
|
62
|
+
fine
|
63
|
+
|
64
|
+
privati
|
65
|
+
|
66
|
+
##
|
67
|
+
# Imposta il valore iniziale di un campo.
|
68
|
+
definisci _inizializza_campo(campo)
|
69
|
+
se campo.ha_valore_iniziale?
|
70
|
+
imposta_variabile_istanza "@#{campo.nome}", campo.valore_iniziale
|
71
|
+
altrimenti
|
72
|
+
imposta_variabile_istanza "@#{campo.nome}", nullo
|
73
|
+
fine
|
74
|
+
fine
|
75
|
+
|
76
|
+
##
|
77
|
+
# Genera un nuovo id.
|
78
|
+
definisci _genera_nuovo_id
|
79
|
+
imposta_valore_campo :_id, BSON::ObjectId.new
|
80
|
+
fine
|
81
|
+
|
82
|
+
##
|
83
|
+
# Codice da eseguire quando questo modulo verrà incluso.
|
84
|
+
definisci se_stesso.included(classe_documento)
|
85
|
+
|
86
|
+
classe_documento.class_eval esegui
|
87
|
+
classe << se_stesso
|
88
|
+
accessore :campi
|
89
|
+
|
90
|
+
##
|
91
|
+
# Aggiunge metodo di classe `campo` per creare nuovi campi.
|
92
|
+
definisci campo(nome, **attributi)
|
93
|
+
_memorizza_campo nome, **attributi
|
94
|
+
fine
|
95
|
+
|
96
|
+
privati
|
97
|
+
|
98
|
+
##
|
99
|
+
# Memorizza un nuovo campo.
|
100
|
+
def _memorizza_campo(nome, **attributi)
|
101
|
+
se_stesso.campi << Mangusta::Documento::Campo.nuovo(nome, **attributi)
|
102
|
+
|
103
|
+
definisci_metodo nome esegui
|
104
|
+
ottieni_variabile_istanza "@#{nome}"
|
105
|
+
fine
|
106
|
+
|
107
|
+
definisci_metodo "#{nome}=" esegui |valore|
|
108
|
+
imposta_variabile_istanza "@#{nome}", valore
|
109
|
+
fine
|
110
|
+
fine
|
111
|
+
|
112
|
+
fine
|
113
|
+
fine
|
114
|
+
|
115
|
+
# Aggiunge campo `id` e imposta campi a [].
|
116
|
+
classe_documento.class_eval esegui
|
117
|
+
se_stesso.campi = []
|
118
|
+
_memorizza_campo :_id
|
119
|
+
fine
|
120
|
+
|
121
|
+
fine
|
122
|
+
|
123
|
+
fine
|
124
|
+
fine
|
@@ -0,0 +1,26 @@
|
|
1
|
+
modulo Mangusta
|
2
|
+
modulo Ripostiglio
|
3
|
+
classe RisultatoRicerca
|
4
|
+
|
5
|
+
accessore :parametri_ricerca
|
6
|
+
|
7
|
+
definisci inizializzatore(collezione, classe_documento, **parametri)
|
8
|
+
@collezione = collezione
|
9
|
+
@classe_documento = classe_documento
|
10
|
+
@parametri_ricerca = parametri
|
11
|
+
fine
|
12
|
+
|
13
|
+
definisci primo
|
14
|
+
documento_in_json = @collezione.cerca(**@parametri_ricerca).primo
|
15
|
+
Mangusta::Utilità.converti_in_documento documento_in_json, @classe_documento
|
16
|
+
fine
|
17
|
+
|
18
|
+
definisci lista
|
19
|
+
@collezione.cerca(**@parametri_ricerca).lista.mappa esegui |documento_in_json|
|
20
|
+
Mangusta::Utilità.converti_in_documento documento_in_json, @classe_documento
|
21
|
+
fine
|
22
|
+
fine
|
23
|
+
|
24
|
+
fine
|
25
|
+
fine
|
26
|
+
fine
|
@@ -0,0 +1,172 @@
|
|
1
|
+
modulo Mangusta
|
2
|
+
##
|
3
|
+
# Aggiunge funzionalità di ricerca, creazione, aggiornamento e cancellazione
|
4
|
+
# di documenti da una collezione.
|
5
|
+
# Includere questo modulo in una classe, es.
|
6
|
+
#
|
7
|
+
# classe RipostiglioLibri
|
8
|
+
# includi Mangusta::Ripostiglio
|
9
|
+
# fine
|
10
|
+
#
|
11
|
+
# In questo modo sarà possibile definire la collezione nella quale si
|
12
|
+
# potrà effettuare operazioni, es.
|
13
|
+
#
|
14
|
+
# classe RipostiglioLibri
|
15
|
+
# includi Mangusta::Ripostiglio
|
16
|
+
#
|
17
|
+
# collezione :libri
|
18
|
+
# documento "Libri"
|
19
|
+
# fine
|
20
|
+
#
|
21
|
+
# Nella base dati Mongo verrà utilizzata la collezione `libri`.
|
22
|
+
# Verranno aggiunti i seguenti metodi alla classe RipostiglioLibri:
|
23
|
+
# - `trova` -> accetta una Mappa come argomento, che rappresenta
|
24
|
+
# i parametri di ricerca di un documento nella collezione.
|
25
|
+
# - `tutti` -> esegue una ricerca senza filtri (su tutti i documenti
|
26
|
+
# della collezione).
|
27
|
+
#
|
28
|
+
modulo Ripostiglio
|
29
|
+
|
30
|
+
##
|
31
|
+
# Codice da eseguire quando questo modulo verrà incluso.
|
32
|
+
definisci se_stesso.included(classe_documento)
|
33
|
+
classe_documento.class_eval esegui
|
34
|
+
classe << se_stesso
|
35
|
+
|
36
|
+
accessore :_collezione
|
37
|
+
accessore :_nome_collezione
|
38
|
+
accessore :_classe_documento
|
39
|
+
|
40
|
+
##
|
41
|
+
# Metodo per definire su che collezione agire.
|
42
|
+
definisci collezione(nome)
|
43
|
+
se_stesso._nome_collezione = nome
|
44
|
+
se_stesso._collezione = Mangusta.connessione[nome]
|
45
|
+
fine
|
46
|
+
|
47
|
+
##
|
48
|
+
# Metodo per definire che classe documento usare.
|
49
|
+
definisci documento(nome_classe)
|
50
|
+
se_stesso._classe_documento = nome_classe
|
51
|
+
fine
|
52
|
+
|
53
|
+
##
|
54
|
+
# Cerca documenti nella collezione.
|
55
|
+
definisci cerca(**parametri)
|
56
|
+
_risultato_ricerca **parametri
|
57
|
+
fine
|
58
|
+
|
59
|
+
##
|
60
|
+
# Cerca documento per id, e ritorna il primo trovato.
|
61
|
+
definisci cerca_per_id(id)
|
62
|
+
_risultato_ricerca(_id: BSON::ObjectId(id)).primo
|
63
|
+
fine
|
64
|
+
|
65
|
+
##
|
66
|
+
# Ritorna il primo documento del ripostiglio.
|
67
|
+
def primo
|
68
|
+
_risultato_ricerca.primo
|
69
|
+
fine
|
70
|
+
|
71
|
+
##
|
72
|
+
# Cerca senza filtri, su tutti i documenti della collezione.
|
73
|
+
definisci prendi_tutti
|
74
|
+
_risultato_ricerca
|
75
|
+
fine
|
76
|
+
alias :prendi_tutte :prendi_tutti
|
77
|
+
|
78
|
+
##
|
79
|
+
# Deposita un documento.
|
80
|
+
definisci deposita(documento)
|
81
|
+
documento_in_json = Mangusta::Utilità.converti_in_json(documento)
|
82
|
+
se_stesso._collezione.inserisci_uno documento_in_json
|
83
|
+
documento
|
84
|
+
fine
|
85
|
+
|
86
|
+
##
|
87
|
+
# Deposita molti documenti.
|
88
|
+
definisci deposita_molti(documenti)
|
89
|
+
alza "L'argomento passato non è una lista" a_meno_che documenti.risponde_a? :mappa
|
90
|
+
documenti_in_json = documenti.mappa { |documento| Mangusta::Utilità.converti_in_json(documento) }
|
91
|
+
se_stesso._collezione.inserisci_molti documenti_in_json
|
92
|
+
documenti
|
93
|
+
fine
|
94
|
+
alias :deposta_molte :deposita_molti
|
95
|
+
|
96
|
+
##
|
97
|
+
# Aggiorna un documento.
|
98
|
+
definisci aggiorna(documento, **valori_da_aggiornare)
|
99
|
+
alza "Il primo argomento deve essere una Stringa o un documento" a_meno_che
|
100
|
+
documento.classe == Stringa o documento.risponde_a? :_id
|
101
|
+
|
102
|
+
id_documento = documento.risponde_a?(:_id) ? documento._id : documento
|
103
|
+
id_documento = BSON::ObjectId id_documento
|
104
|
+
se_stesso._collezione.aggiorna_uno Mappa[_id: id_documento], Mappa["$set" => valori_da_aggiornare]
|
105
|
+
cerca_per_id(id_documento)
|
106
|
+
fine
|
107
|
+
|
108
|
+
##
|
109
|
+
# Aggiorna molti documenti.
|
110
|
+
definisci aggiorna_molti(ricerca = Mappa.nuova, **valori_da_aggiornare)
|
111
|
+
alza "Il primo argomento deve essere una Mappa o una Lista di documenti" a_meno_che
|
112
|
+
ricerca.classe == Mappa o ricerca.risponde_a? :tutti?
|
113
|
+
|
114
|
+
ricerca_è_una_lista_documenti = no
|
115
|
+
se ricerca.classe != Mappa
|
116
|
+
ricerca_è_una_lista_documenti = ricerca.tutti? { |documento| documento.risponde_a? :_id }
|
117
|
+
alza "Il primo argomento è una Lista, ma non di documenti" a_meno_che ricerca_è_una_lista_documenti
|
118
|
+
fine
|
119
|
+
|
120
|
+
se ricerca_è_una_lista_documenti
|
121
|
+
filtro_lista_id_documenti = Mappa["$in": ricerca.mappa(&:_id)]
|
122
|
+
ricerca = Mappa[_id: filtro_lista_id_documenti]
|
123
|
+
fine
|
124
|
+
|
125
|
+
risultato_aggiornamento = se_stesso._collezione.aggiorna_molti ricerca,
|
126
|
+
Mappa["$set": valori_da_aggiornare]
|
127
|
+
risultato_aggiornamento.modified_count
|
128
|
+
fine
|
129
|
+
alias :aggiorna_molte :aggiorna_molti
|
130
|
+
|
131
|
+
##
|
132
|
+
# Cancella un documento.
|
133
|
+
def cancella(documento)
|
134
|
+
alza "Il primo argomento deve essere una stringa o un documento" a_meno_che
|
135
|
+
documento.classe == Stringa o documento.risponde_a? :_id
|
136
|
+
|
137
|
+
id_documento = documento.risponde_a?(:_id) ? documento._id : documento
|
138
|
+
id_documento = BSON::ObjectId id_documento
|
139
|
+
risultato_cancellazione = se_stesso._collezione.cancella_uno Mappa[_id: id_documento]
|
140
|
+
risultato_cancellazione.deleted_count
|
141
|
+
fine
|
142
|
+
|
143
|
+
##
|
144
|
+
# Cancella molti documenti.
|
145
|
+
def cancella_molti(documenti)
|
146
|
+
risultato_cancellazione = se_stesso._collezione.cancella_uno Mappa[_id: id_documento]
|
147
|
+
risultato_cancellazione.deleted_count
|
148
|
+
fine
|
149
|
+
alias :cancella_molte :cancella_molti
|
150
|
+
|
151
|
+
##
|
152
|
+
# Cancella tutti i documenti.
|
153
|
+
definisci cancella_tutti
|
154
|
+
risultato_cancellazione = se_stesso._collezione.cancella_molti
|
155
|
+
risultato_cancellazione.deleted_count
|
156
|
+
fine
|
157
|
+
|
158
|
+
privati
|
159
|
+
|
160
|
+
##
|
161
|
+
# Ritorna un risultato ricerca.
|
162
|
+
definisci _risultato_ricerca(**parametri)
|
163
|
+
Mangusta::Ripostiglio::RisultatoRicerca.nuovo(
|
164
|
+
se_stesso._collezione, se_stesso._classe_documento, **parametri)
|
165
|
+
fine
|
166
|
+
|
167
|
+
fine
|
168
|
+
fine
|
169
|
+
fine
|
170
|
+
|
171
|
+
fine
|
172
|
+
fine
|
@@ -0,0 +1,21 @@
|
|
1
|
+
modulo Mangusta
|
2
|
+
modulo Utilità
|
3
|
+
|
4
|
+
definisci se_stessa.converti_in_json(documento)
|
5
|
+
ritorna documento se documento.classe == Mappa
|
6
|
+
alza "L'oggetto passato non include Mangusta::Documento" a_meno_che documento.risponde_a? :campi
|
7
|
+
|
8
|
+
documento_convertito = Mappa.nuova
|
9
|
+
documento.campi.per_ognuno esegui |campo|
|
10
|
+
documento_convertito.deposita campo.nome, documento.ottieni_valore_campo(campo.nome)
|
11
|
+
fine
|
12
|
+
documento_convertito
|
13
|
+
fine
|
14
|
+
|
15
|
+
definisci se_stessa.converti_in_documento(documento_in_json, classe_documento)
|
16
|
+
ritorna nullo se documento_in_json.nullo?
|
17
|
+
Object.const_get(classe_documento).nuovo **documento_in_json
|
18
|
+
fine
|
19
|
+
|
20
|
+
fine
|
21
|
+
fine
|
data/lib/mangusta.ir
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
require "mongo"
|
2
|
+
require_relative "mangusta/core_ext/mongo"
|
3
|
+
richiedi_tutti "mangusta"
|
4
|
+
|
5
|
+
modulo Mangusta
|
6
|
+
classe << se_stessa
|
7
|
+
accessore :connessione
|
8
|
+
accessore :base_dati
|
9
|
+
accessore :collezioni
|
10
|
+
|
11
|
+
definisci connetti(**parametri)
|
12
|
+
Mongo::Logger.logger.level = Logger::FATAL
|
13
|
+
|
14
|
+
alza "Passare le chiavi :indirizzo e :base_dati come argomenti." a_meno_che
|
15
|
+
parametri.ha_chiave? :indirizzo e parametri.ha_chiave? :base_dati
|
16
|
+
|
17
|
+
se_stessa.connessione ||= Mongo::Client.nuovo(
|
18
|
+
[ parametri.ottieni(:indirizzo) ],
|
19
|
+
database: parametri.ottieni(:base_dati))
|
20
|
+
|
21
|
+
se_stessa.base_dati = se_stessa.connessione.database
|
22
|
+
se_stessa.collezioni = se_stessa.base_dati.collections
|
23
|
+
fine
|
24
|
+
fine
|
25
|
+
fine
|
data/mangusta.gemspec
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
require "italian/ruby"
|
2
|
+
richiedi_relativo "lib/mangusta/versione"
|
3
|
+
|
4
|
+
Gem::Specification.new do |spec|
|
5
|
+
spec.name = "mangusta"
|
6
|
+
spec.version = Mangusta::VERSIONE
|
7
|
+
spec.authors = ["Francesco Ballardin"]
|
8
|
+
spec.email = ["francesco.ballardin@gmail.com"]
|
9
|
+
|
10
|
+
spec.summary = %q{Simple MongoDB ODM.}
|
11
|
+
spec.description = %q{Simple MongoDB ODM. Yay!}
|
12
|
+
spec.homepage = "https://github.com/Pluvie/ruby-mangusta"
|
13
|
+
spec.required_ruby_version = Gem::Requirement.new(">= 2.3.0")
|
14
|
+
|
15
|
+
spec.metadata["allowed_push_host"] = "https://rubygems.org"
|
16
|
+
|
17
|
+
spec.metadata["homepage_uri"] = spec.homepage
|
18
|
+
spec.metadata["source_code_uri"] = "https://github.com/Pluvie/ruby-mangusta"
|
19
|
+
|
20
|
+
# Specify which files should be added to the gem when it is released.
|
21
|
+
# The `git ls-files -z` loads the files in the RubyGem that have been added into git.
|
22
|
+
spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
|
23
|
+
`git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
24
|
+
end
|
25
|
+
spec.bindir = "exe"
|
26
|
+
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
27
|
+
spec.require_paths = ["lib"]
|
28
|
+
end
|
metadata
ADDED
@@ -0,0 +1,63 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: mangusta
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Francesco Ballardin
|
8
|
+
autorequire:
|
9
|
+
bindir: exe
|
10
|
+
cert_chain: []
|
11
|
+
date: 2020-03-29 00:00:00.000000000 Z
|
12
|
+
dependencies: []
|
13
|
+
description: Simple MongoDB ODM. Yay!
|
14
|
+
email:
|
15
|
+
- francesco.ballardin@gmail.com
|
16
|
+
executables: []
|
17
|
+
extensions: []
|
18
|
+
extra_rdoc_files: []
|
19
|
+
files:
|
20
|
+
- ".gitignore"
|
21
|
+
- ".rspec"
|
22
|
+
- ".ruby-version"
|
23
|
+
- Gemfile
|
24
|
+
- Gemfile.lock
|
25
|
+
- README.md
|
26
|
+
- Rakefile
|
27
|
+
- bin/console
|
28
|
+
- bin/setup
|
29
|
+
- lib/mangusta.ir
|
30
|
+
- lib/mangusta/core_ext/mongo.rb
|
31
|
+
- lib/mangusta/documento.ir
|
32
|
+
- lib/mangusta/documento/campo.ir
|
33
|
+
- lib/mangusta/ripostiglio.ir
|
34
|
+
- lib/mangusta/ripostiglio/risultato_ricerca.ir
|
35
|
+
- lib/mangusta/utilità/convertitori.ir
|
36
|
+
- lib/mangusta/versione.ir
|
37
|
+
- mangusta.gemspec
|
38
|
+
homepage: https://github.com/Pluvie/ruby-mangusta
|
39
|
+
licenses: []
|
40
|
+
metadata:
|
41
|
+
allowed_push_host: https://rubygems.org
|
42
|
+
homepage_uri: https://github.com/Pluvie/ruby-mangusta
|
43
|
+
source_code_uri: https://github.com/Pluvie/ruby-mangusta
|
44
|
+
post_install_message:
|
45
|
+
rdoc_options: []
|
46
|
+
require_paths:
|
47
|
+
- lib
|
48
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
49
|
+
requirements:
|
50
|
+
- - ">="
|
51
|
+
- !ruby/object:Gem::Version
|
52
|
+
version: 2.3.0
|
53
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
54
|
+
requirements:
|
55
|
+
- - ">="
|
56
|
+
- !ruby/object:Gem::Version
|
57
|
+
version: '0'
|
58
|
+
requirements: []
|
59
|
+
rubygems_version: 3.1.2
|
60
|
+
signing_key:
|
61
|
+
specification_version: 4
|
62
|
+
summary: Simple MongoDB ODM.
|
63
|
+
test_files: []
|