mangusta 0.5.0 → 0.5.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/mangusta/documento.ir +5 -2
- data/lib/mangusta/documento/campo.ir +2 -2
- data/lib/mangusta/documento/espositore.ir +1 -1
- data/lib/mangusta/documento/metodi_condivisi.ir +13 -2
- data/lib/mangusta/documento/metodi_di_classe.ir +9 -0
- data/lib/mangusta/documento/relazione.ir +17 -2
- data/lib/mangusta/ripostiglio.ir +15 -5
- data/lib/mangusta/versione.ir +2 -2
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 99217eb229680a1d860e308ff317896adac49859203e58a27193fe97cc64b18f
|
4
|
+
data.tar.gz: 1524da01c2bb759df42aed57b1d70277e9e6ef8f068be8f8dfea8e5c49823504
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 61a989d77e0e858aa30d076c38508b1a35dddaf3d0eff56f90b39b0ac113bbfd39565091ba095b0f8f2cb90c9b99d0d9fec15469cdee658d9f706cda51a00ef1
|
7
|
+
data.tar.gz: 63c85e352a41173ecb14bb332e667745431bdc5a42474043f4f0926b75b9886147149142c1b6e5e6a2a86f54d5793dffcc1c1c6e9a530a3bf4edb2e2b1c7cc1d
|
data/lib/mangusta/documento.ir
CHANGED
@@ -70,10 +70,13 @@ modulo Mangusta
|
|
70
70
|
|
71
71
|
##
|
72
72
|
# Espone il documento come JSON.
|
73
|
-
definisci
|
73
|
+
definisci _esponi(*chiavi_richieste, **relazioni_richieste)
|
74
74
|
espositore = Mangusta::Documento::Espositore.nuovo se_stesso, *chiavi_richieste, **relazioni_richieste
|
75
75
|
espositore.esponi
|
76
76
|
fine
|
77
|
+
definisci esponi(*chiavi_richieste, **relazioni_richieste)
|
78
|
+
_esponi *chiavi_richieste, **relazioni_richieste
|
79
|
+
fine
|
77
80
|
alias :in_mappa :esponi
|
78
81
|
|
79
82
|
##
|
@@ -115,4 +118,4 @@ modulo Mangusta
|
|
115
118
|
fine
|
116
119
|
|
117
120
|
fine
|
118
|
-
fine
|
121
|
+
fine
|
@@ -21,7 +21,7 @@ modulo Mangusta
|
|
21
21
|
##
|
22
22
|
# Determina se il campo è stato creato con un valore iniziale.
|
23
23
|
definisci ha_valore_iniziale?
|
24
|
-
se_stesso.valore_iniziale
|
24
|
+
se_stesso.valore_iniziale != nullo
|
25
25
|
fine
|
26
26
|
|
27
27
|
##
|
@@ -56,4 +56,4 @@ modulo Mangusta
|
|
56
56
|
|
57
57
|
fine
|
58
58
|
fine
|
59
|
-
fine
|
59
|
+
fine
|
@@ -130,7 +130,7 @@ modulo Mangusta
|
|
130
130
|
|
131
131
|
campi_relazione_filtrati = @filtrati_richiesti.prendi relazione.nome
|
132
132
|
considera relazione.tipologia
|
133
|
-
quando :appartiene_a
|
133
|
+
quando :ha_un, :appartiene_a
|
134
134
|
documento_esposto.deposita relazione.nome, valore_relazione.esponi(*campi_relazione_filtrati)
|
135
135
|
quando :ha_molti, :ha_e_appartiene_a_molti
|
136
136
|
documento_esposto.deposita relazione.nome, valore_relazione
|
@@ -14,10 +14,21 @@ modulo Mangusta
|
|
14
14
|
se_stesso == documento
|
15
15
|
fine
|
16
16
|
|
17
|
+
##
|
18
|
+
# Rappresentazione univoca del documento.
|
19
|
+
# Utilizzato dal metodo `rimuovi_duplicati` di una Lista.
|
20
|
+
definisci hash
|
21
|
+
_id.in_stringa.hash
|
22
|
+
fine
|
23
|
+
|
17
24
|
##
|
18
25
|
# Ottiene la rappresentazione per stampa dell'oggetto.
|
19
26
|
definisci inspect
|
20
|
-
|
27
|
+
se definito? AwesomePrint
|
28
|
+
ai
|
29
|
+
altrimenti
|
30
|
+
"#<#{se_stesso.classe} #{se_stesso.esponi}>"
|
31
|
+
fine
|
21
32
|
fine
|
22
33
|
definisci ai(opzioni = Mappa.nuova)
|
23
34
|
se definito? AwesomePrint
|
@@ -30,4 +41,4 @@ modulo Mangusta
|
|
30
41
|
|
31
42
|
fine
|
32
43
|
fine
|
33
|
-
fine
|
44
|
+
fine
|
@@ -15,6 +15,15 @@ modulo Mangusta
|
|
15
15
|
_definisci_relazione nome, :appartiene_a, **opzioni
|
16
16
|
fine
|
17
17
|
|
18
|
+
##
|
19
|
+
# Aggiunge un metodo di classe `ha_un` per definire una relazione
|
20
|
+
# di appartenenza di un documento.
|
21
|
+
definisci ha_un(nome, **opzioni)
|
22
|
+
_definisci_relazione nome, :ha_un, **opzioni
|
23
|
+
fine
|
24
|
+
alias :ha_uno :ha_un
|
25
|
+
alias :ha_una :ha_un
|
26
|
+
|
18
27
|
##
|
19
28
|
# Aggiunge un metodo di classe `ha_molti` per definire una relazione
|
20
29
|
# di appartenenza di molti documenti.
|
@@ -26,13 +26,13 @@ modulo Mangusta
|
|
26
26
|
se_stessa.nome_campo_relazionato = parametri.prendi :nome_campo_relazionato, nullo
|
27
27
|
|
28
28
|
alza NonValida, "la relazione `#{tipologia}` non è supportata" se
|
29
|
-
tipologia.non_in? [ :appartiene_a, :ha_molti, :ha_e_appartiene_a_molti ]
|
29
|
+
tipologia.non_in? [ :appartiene_a, :ha_un, :ha_molti, :ha_e_appartiene_a_molti ]
|
30
30
|
alza NonValida, "è necessario specificare una chiave :ripostiglio per la relazione" se
|
31
31
|
nome_ripostiglio.nullo?
|
32
32
|
alza NonValida, "è necessario specificare una chiave :nome_campo per la relazione" se
|
33
33
|
nome_campo.nullo? e tipologia.in? [ :appartiene_a, :ha_e_appartiene_a_molti ]
|
34
34
|
alza NonValida, "è necessario specificare una chiave :nome_campo_relazionato per la relazione" se
|
35
|
-
nome_campo_relazionato.nullo? e tipologia.in? [ :ha_molti, :ha_e_appartiene_a_molti ]
|
35
|
+
nome_campo_relazionato.nullo? e tipologia.in? [ :ha_un, :ha_molti, :ha_e_appartiene_a_molti ]
|
36
36
|
fine
|
37
37
|
|
38
38
|
##
|
@@ -57,6 +57,7 @@ modulo Mangusta
|
|
57
57
|
# Risolve una relazione.
|
58
58
|
definisci risolvi(documento)
|
59
59
|
considera tipologia
|
60
|
+
quando :ha_un allora _risolvi_ha_un documento
|
60
61
|
quando :ha_molti allora _risolvi_ha_molti documento
|
61
62
|
quando :appartiene_a allora _risolvi_appartiene_a documento
|
62
63
|
quando :ha_e_appartiene_a_molti allora _risolvi_ha_e_appartiene_a_molti documento
|
@@ -68,6 +69,7 @@ modulo Mangusta
|
|
68
69
|
# Assegna una relazione.
|
69
70
|
definisci assegna(documento, valore)
|
70
71
|
considera tipologia
|
72
|
+
quando :ha_un allora ritorna
|
71
73
|
quando :ha_molti allora ritorna
|
72
74
|
quando :appartiene_a allora _assegna_appartiene_a documento, valore
|
73
75
|
quando :ha_e_appartiene_a_molti allora _assegna_ha_e_appartiene_a_molti documento, valore
|
@@ -78,6 +80,7 @@ modulo Mangusta
|
|
78
80
|
# Propaga la relazione con il valore passato.
|
79
81
|
definisci propaga(documento)
|
80
82
|
considera tipologia
|
83
|
+
quando :ha_un allora ritorna
|
81
84
|
quando :ha_molti allora ritorna
|
82
85
|
quando :appartiene_a allora ritorna
|
83
86
|
quando :ha_e_appartiene_a_molti allora _propaga_ha_e_appartiene_a_molti documento
|
@@ -86,6 +89,18 @@ modulo Mangusta
|
|
86
89
|
|
87
90
|
privati
|
88
91
|
|
92
|
+
##
|
93
|
+
# Risolve la relazione di `ha un`.
|
94
|
+
definisci _risolvi_ha_un(documento)
|
95
|
+
se @documenti_in_memoria.esiste?
|
96
|
+
@documenti_in_memoria.trova esegui |documento_relazionato|
|
97
|
+
documento_relazionato.manda(nome_campo_relazionato) == documento._id
|
98
|
+
fine
|
99
|
+
altrimenti
|
100
|
+
ripostiglio.cerca(nome_campo_relazionato => documento._id).primo
|
101
|
+
fine
|
102
|
+
fine
|
103
|
+
|
89
104
|
##
|
90
105
|
# Risolve la relazione di `ha molti`.
|
91
106
|
definisci _risolvi_ha_molti(documento)
|
data/lib/mangusta/ripostiglio.ir
CHANGED
@@ -41,6 +41,7 @@ modulo Mangusta
|
|
41
41
|
estendi Mangusta::Ripostiglio::MetodiDiClasse::Persistenza
|
42
42
|
|
43
43
|
classe << se_stesso
|
44
|
+
accessore :nome_base_dati
|
44
45
|
accessore :nome_collezione
|
45
46
|
accessore :nome_classe_documento
|
46
47
|
accessore :classe_documento
|
@@ -55,14 +56,23 @@ modulo Mangusta
|
|
55
56
|
##
|
56
57
|
# Ritorna l'oggetto collezione agganciato a questo ripostiglio.
|
57
58
|
# Se chiamato con argomento, imposta la collezione all'argomento passato.
|
58
|
-
definisci collezione(nome_collezione_da_impostare = nullo)
|
59
|
-
se nome_collezione_da_impostare.
|
59
|
+
definisci collezione(nome_collezione_da_impostare = nullo, base_dati: nullo)
|
60
|
+
se nome_collezione_da_impostare.specificato?
|
60
61
|
se_stesso.nome_collezione = nome_collezione_da_impostare
|
62
|
+
se_stesso.nome_base_dati = base_dati se base_dati.specificata?
|
61
63
|
ritorna nome_collezione
|
62
64
|
fine
|
63
65
|
|
64
66
|
alza "Mangusta non è ancora stato connesso ad una base dati" se Mangusta.connessione.nulla?
|
65
|
-
|
67
|
+
|
68
|
+
se se_stesso.nome_base_dati.specificato?
|
69
|
+
basi_dati = Mangusta.connessione.list_mongo_databases
|
70
|
+
base_dati = basi_dati.trova { |base_dati| base_dati.name == se_stesso.nome_base_dati }
|
71
|
+
alza "la base dati `#{se_stesso.nome_base_dati}` non esiste" se basi_dati.non_esiste?
|
72
|
+
base_dati[se_stesso.nome_collezione]
|
73
|
+
altrimenti
|
74
|
+
Mangusta.connessione[se_stesso.nome_collezione]
|
75
|
+
fine
|
66
76
|
fine
|
67
77
|
|
68
78
|
##
|
@@ -166,7 +176,7 @@ modulo Mangusta
|
|
166
176
|
# Inserisce un documento nella collezione.
|
167
177
|
definisci inserisci(documento)
|
168
178
|
se documento.è_un? classe_documento
|
169
|
-
collezione.inserisci_uno documento.
|
179
|
+
collezione.inserisci_uno documento._esponi
|
170
180
|
documento_da_ritornare = documento
|
171
181
|
altrimenti_se documento.è_una? Mappa
|
172
182
|
collezione.inserisci_uno documento
|
@@ -185,7 +195,7 @@ modulo Mangusta
|
|
185
195
|
alza "i documenti da inserire devono essere una Lista" se documenti.non_è_una? Lista
|
186
196
|
|
187
197
|
se documenti.tutti? { |documento| documento.è_un? classe_documento }
|
188
|
-
collezione.inserisci_molti documenti.mappa(&:
|
198
|
+
collezione.inserisci_molti documenti.mappa(&:_esponi)
|
189
199
|
altrimenti_se documenti.tutti? { |documento| documento.è_una? Mappa }
|
190
200
|
collezione.inserisci_molti documenti
|
191
201
|
altrimenti
|
data/lib/mangusta/versione.ir
CHANGED
@@ -1,3 +1,3 @@
|
|
1
1
|
modulo Mangusta
|
2
|
-
VERSIONE = "0.5.
|
3
|
-
fine
|
2
|
+
VERSIONE = "0.5.5"
|
3
|
+
fine
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mangusta
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Francesco Ballardin
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-07-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: italian-ruby
|