mangusta 0.5.0 → 0.5.5
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 +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
|