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 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