mangusta 0.1.0
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.
- 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: []
|