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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3025be0dedcde244996c477c8e879032a60a2e872aed4667f0858df3aec06be5
4
- data.tar.gz: 71c12d3fcd5bb8887527ea04bc6b767fdbcdf94e54a29613a9b4b60df3f2731b
3
+ metadata.gz: 99217eb229680a1d860e308ff317896adac49859203e58a27193fe97cc64b18f
4
+ data.tar.gz: 1524da01c2bb759df42aed57b1d70277e9e6ef8f068be8f8dfea8e5c49823504
5
5
  SHA512:
6
- metadata.gz: da37743a7de44df5814952d6e06df610cecb001b6cd9e989a54c3ca87a4ee99957a2809ee63fd0b3b188dcc94afb169e64361e31d4558a927835ff08078209e3
7
- data.tar.gz: df54fe5798baedc2a4492dfb5498965d053fd53e2ff380a49eb1c66d193c3f36fce57335a162cd93fa68bae21fa01b37bc58230685437bcada5a42dbdcbfe38b
6
+ metadata.gz: 61a989d77e0e858aa30d076c38508b1a35dddaf3d0eff56f90b39b0ac113bbfd39565091ba095b0f8f2cb90c9b99d0d9fec15469cdee658d9f706cda51a00ef1
7
+ data.tar.gz: 63c85e352a41173ecb14bb332e667745431bdc5a42474043f4f0926b75b9886147149142c1b6e5e6a2a86f54d5793dffcc1c1c6e9a530a3bf4edb2e2b1c7cc1d
@@ -70,10 +70,13 @@ modulo Mangusta
70
70
 
71
71
  ##
72
72
  # Espone il documento come JSON.
73
- definisci esponi(*chiavi_richieste, **relazioni_richieste)
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.esiste?
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
- "#<#{se_stesso.classe} #{se_stesso.esponi}>"
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)
@@ -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.esiste?
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
- Mangusta.connessione[se_stesso.nome_collezione]
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.esponi
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(&:esponi)
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
@@ -1,3 +1,3 @@
1
1
  modulo Mangusta
2
- VERSIONE = "0.5.0"
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.0
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-06-11 00:00:00.000000000 Z
11
+ date: 2020-07-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: italian-ruby