mangusta 0.1.0 → 0.1.1
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/Gemfile +1 -1
- data/lib/mangusta/documento/campo.ir +2 -2
- data/lib/mangusta/documento/relazione.ir +48 -0
- data/lib/mangusta/documento.ir +51 -6
- data/lib/mangusta/load.rb +1 -0
- data/lib/mangusta/ripostiglio.ir +17 -12
- data/lib/mangusta/utilit/303/240/convertitori.ir +6 -2
- data/lib/mangusta/versione.ir +1 -1
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 52c51916f6df1afc0374cf53eb092e69424ba9a4366adecbd5d2202a786a090a
|
4
|
+
data.tar.gz: acf09a4c2242c6de2b817a01825d9dc967c4462e61740fb208e51c4c4674a93c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b926b6f868da4ca9139a475adc3050f32167e22bdb0bc06754ecda4e54dd0be6098c8204cc6a2a57fd2f1502e9a8aeec52c7742c5bea2c6d1cd3c05625245714
|
7
|
+
data.tar.gz: 85368babdaab34a77cc10da793582115ece00c6fd2036c2b02a89a15d829c5214c5a0da6c7eb420cb5aae45d2ff15665ccaf0dd28a19967cc2b9168c29568dae
|
data/Gemfile
CHANGED
@@ -9,9 +9,9 @@ modulo Mangusta
|
|
9
9
|
|
10
10
|
##
|
11
11
|
# Imposta nome e valore iniziale.
|
12
|
-
definisci inizializzatore(nome, **
|
12
|
+
definisci inizializzatore(nome, **parametri)
|
13
13
|
se_stesso.nome = nome
|
14
|
-
se_stesso.valore_iniziale =
|
14
|
+
se_stesso.valore_iniziale = parametri.ottieni(:valore_iniziale, nullo)
|
15
15
|
fine
|
16
16
|
|
17
17
|
##
|
@@ -0,0 +1,48 @@
|
|
1
|
+
modulo Mangusta
|
2
|
+
modulo Documento
|
3
|
+
classe Relazione
|
4
|
+
|
5
|
+
accessore :nome
|
6
|
+
accessore :tipologia
|
7
|
+
accessore :nome_chiave
|
8
|
+
accessore :nome_ripostiglio
|
9
|
+
|
10
|
+
definisci inizializzatore(tipologia, nome, **parametri)
|
11
|
+
alza "È necessario specificare una chiave :ripostiglio per la relazione" se
|
12
|
+
parametri.ottieni(:ripostiglio, nullo).nullo?
|
13
|
+
|
14
|
+
se_stesso.nome = nome
|
15
|
+
se_stesso.tipologia = tipologia
|
16
|
+
se_stesso.nome_ripostiglio = parametri.ottieni(:ripostiglio)
|
17
|
+
se_stesso.nome_chiave = parametri.ottieni(:nome_chiave) || "id_#{nome}".in_simbolo
|
18
|
+
fine
|
19
|
+
|
20
|
+
##
|
21
|
+
# Risolve il documento o i documenti relazionati.
|
22
|
+
definisci risolvi(documento)
|
23
|
+
considera tipologia
|
24
|
+
quando :appartiene_a allora _risolvi_appartiene_a(documento)
|
25
|
+
altrimenti
|
26
|
+
alza "La relazione `#{tipologia}` non è supportata"
|
27
|
+
fine
|
28
|
+
fine
|
29
|
+
|
30
|
+
privati
|
31
|
+
|
32
|
+
##
|
33
|
+
# Puntatore al ripostiglio dove risolvere la relazione.
|
34
|
+
definisci _ripostiglio
|
35
|
+
Oggetto.ottieni_costante(se_stesso.nome_ripostiglio)
|
36
|
+
fine
|
37
|
+
|
38
|
+
##
|
39
|
+
# Risolve la relazione di appartenenza.
|
40
|
+
definisci _risolvi_appartiene_a(documento)
|
41
|
+
id_documento_relazionato = documento.manda se_stesso.nome_chiave
|
42
|
+
ritorna nullo se id_documento_relazionato.nullo?
|
43
|
+
_ripostiglio.cerca_per_id id_documento_relazionato
|
44
|
+
fine
|
45
|
+
|
46
|
+
fine
|
47
|
+
fine
|
48
|
+
fine
|
data/lib/mangusta/documento.ir
CHANGED
@@ -41,6 +41,7 @@ modulo Mangusta
|
|
41
41
|
fine
|
42
42
|
|
43
43
|
_genera_nuovo_id se ottieni_valore_campo(:_id).nullo?
|
44
|
+
_memorizza_attributi_originali **attributi
|
44
45
|
fine
|
45
46
|
|
46
47
|
##
|
@@ -61,6 +62,13 @@ modulo Mangusta
|
|
61
62
|
imposta_variabile_istanza "@#{nome_campo}", valore_campo
|
62
63
|
fine
|
63
64
|
|
65
|
+
##
|
66
|
+
# Accede al valore dell'attributo originale del documento,
|
67
|
+
# passando oltre gli accessori, per accedere a campi non modellati.
|
68
|
+
definisci [](attributo)
|
69
|
+
@_attributi_originali.ottieni attributo
|
70
|
+
fine
|
71
|
+
|
64
72
|
privati
|
65
73
|
|
66
74
|
##
|
@@ -79,6 +87,13 @@ modulo Mangusta
|
|
79
87
|
imposta_valore_campo :_id, BSON::ObjectId.new
|
80
88
|
fine
|
81
89
|
|
90
|
+
##
|
91
|
+
# Memorizza gli attiributi originali del documento.
|
92
|
+
definisci _memorizza_attributi_originali(**attributi)
|
93
|
+
@_attributi_originali = attributi
|
94
|
+
fine
|
95
|
+
|
96
|
+
|
82
97
|
##
|
83
98
|
# Codice da eseguire quando questo modulo verrà incluso.
|
84
99
|
definisci se_stesso.included(classe_documento)
|
@@ -86,19 +101,27 @@ modulo Mangusta
|
|
86
101
|
classe_documento.class_eval esegui
|
87
102
|
classe << se_stesso
|
88
103
|
accessore :campi
|
104
|
+
accessore :relazioni
|
89
105
|
|
90
106
|
##
|
91
107
|
# Aggiunge metodo di classe `campo` per creare nuovi campi.
|
92
|
-
definisci campo(nome, **
|
93
|
-
_memorizza_campo nome, **
|
108
|
+
definisci campo(nome, **parametri)
|
109
|
+
_memorizza_campo nome, **parametri
|
110
|
+
fine
|
111
|
+
|
112
|
+
##
|
113
|
+
# Aggiunge un metodo di classe `appartiene_a` per generare relazioni
|
114
|
+
# di appartenenza.
|
115
|
+
definisci appartiene_a(nome, **parametri)
|
116
|
+
_memorizza_relazione :appartiene_a, nome, **parametri
|
94
117
|
fine
|
95
118
|
|
96
119
|
privati
|
97
120
|
|
98
121
|
##
|
99
122
|
# Memorizza un nuovo campo.
|
100
|
-
def _memorizza_campo(nome, **
|
101
|
-
se_stesso.campi << Mangusta::Documento::Campo.nuovo(nome, **
|
123
|
+
def _memorizza_campo(nome, **parametri)
|
124
|
+
se_stesso.campi << Mangusta::Documento::Campo.nuovo(nome, **parametri)
|
102
125
|
|
103
126
|
definisci_metodo nome esegui
|
104
127
|
ottieni_variabile_istanza "@#{nome}"
|
@@ -109,12 +132,34 @@ modulo Mangusta
|
|
109
132
|
fine
|
110
133
|
fine
|
111
134
|
|
135
|
+
##
|
136
|
+
# Memorizza una nuova relazione.
|
137
|
+
def _memorizza_relazione(tipologia, nome, **parametri)
|
138
|
+
nuova_relazione = Mangusta::Documento::Relazione.nuova(tipologia, nome, **parametri)
|
139
|
+
se_stesso.relazioni << nuova_relazione
|
140
|
+
|
141
|
+
considera tipologia
|
142
|
+
quando :appartiene_a
|
143
|
+
_memorizza_campo nuova_relazione.nome_chiave
|
144
|
+
fine
|
145
|
+
|
146
|
+
definisci_metodo nome esegui
|
147
|
+
nuova_relazione.risolvi se_stesso
|
148
|
+
fine
|
149
|
+
|
150
|
+
definisci_metodo "#{nome}=" esegui |valore|
|
151
|
+
nuova_relazione.aggiorna se_stesso
|
152
|
+
fine
|
153
|
+
fine
|
154
|
+
|
112
155
|
fine
|
113
156
|
fine
|
114
157
|
|
115
|
-
# Aggiunge campo `id` e imposta campi a [].
|
158
|
+
# Aggiunge campo `id` e imposta campi e relazioni a [].
|
116
159
|
classe_documento.class_eval esegui
|
117
|
-
se_stesso.campi
|
160
|
+
se_stesso.campi = []
|
161
|
+
se_stesso.relazioni = []
|
162
|
+
|
118
163
|
_memorizza_campo :_id
|
119
164
|
fine
|
120
165
|
|
@@ -0,0 +1 @@
|
|
1
|
+
richiedi_relativo "../mangusta"
|
data/lib/mangusta/ripostiglio.ir
CHANGED
@@ -33,7 +33,6 @@ modulo Mangusta
|
|
33
33
|
classe_documento.class_eval esegui
|
34
34
|
classe << se_stesso
|
35
35
|
|
36
|
-
accessore :_collezione
|
37
36
|
accessore :_nome_collezione
|
38
37
|
accessore :_classe_documento
|
39
38
|
|
@@ -41,7 +40,6 @@ modulo Mangusta
|
|
41
40
|
# Metodo per definire su che collezione agire.
|
42
41
|
definisci collezione(nome)
|
43
42
|
se_stesso._nome_collezione = nome
|
44
|
-
se_stesso._collezione = Mangusta.connessione[nome]
|
45
43
|
fine
|
46
44
|
|
47
45
|
##
|
@@ -77,21 +75,21 @@ modulo Mangusta
|
|
77
75
|
|
78
76
|
##
|
79
77
|
# Deposita un documento.
|
80
|
-
definisci
|
78
|
+
definisci inserisci(documento)
|
81
79
|
documento_in_json = Mangusta::Utilità.converti_in_json(documento)
|
82
|
-
|
80
|
+
_collezione.inserisci_uno documento_in_json
|
83
81
|
documento
|
84
82
|
fine
|
85
83
|
|
86
84
|
##
|
87
85
|
# Deposita molti documenti.
|
88
|
-
definisci
|
86
|
+
definisci inserisci_molti(documenti)
|
89
87
|
alza "L'argomento passato non è una lista" a_meno_che documenti.risponde_a? :mappa
|
90
88
|
documenti_in_json = documenti.mappa { |documento| Mangusta::Utilità.converti_in_json(documento) }
|
91
|
-
|
89
|
+
_collezione.inserisci_molti documenti_in_json
|
92
90
|
documenti
|
93
91
|
fine
|
94
|
-
alias :
|
92
|
+
alias :inserisci_molte :inserisci_molti
|
95
93
|
|
96
94
|
##
|
97
95
|
# Aggiorna un documento.
|
@@ -101,7 +99,7 @@ modulo Mangusta
|
|
101
99
|
|
102
100
|
id_documento = documento.risponde_a?(:_id) ? documento._id : documento
|
103
101
|
id_documento = BSON::ObjectId id_documento
|
104
|
-
|
102
|
+
_collezione.aggiorna_uno Mappa[_id: id_documento], Mappa["$set" => valori_da_aggiornare]
|
105
103
|
cerca_per_id(id_documento)
|
106
104
|
fine
|
107
105
|
|
@@ -122,7 +120,7 @@ modulo Mangusta
|
|
122
120
|
ricerca = Mappa[_id: filtro_lista_id_documenti]
|
123
121
|
fine
|
124
122
|
|
125
|
-
risultato_aggiornamento =
|
123
|
+
risultato_aggiornamento = _collezione.aggiorna_molti ricerca,
|
126
124
|
Mappa["$set": valori_da_aggiornare]
|
127
125
|
risultato_aggiornamento.modified_count
|
128
126
|
fine
|
@@ -136,14 +134,14 @@ modulo Mangusta
|
|
136
134
|
|
137
135
|
id_documento = documento.risponde_a?(:_id) ? documento._id : documento
|
138
136
|
id_documento = BSON::ObjectId id_documento
|
139
|
-
risultato_cancellazione =
|
137
|
+
risultato_cancellazione = _collezione.cancella_uno Mappa[_id: id_documento]
|
140
138
|
risultato_cancellazione.deleted_count
|
141
139
|
fine
|
142
140
|
|
143
141
|
##
|
144
142
|
# Cancella molti documenti.
|
145
143
|
def cancella_molti(documenti)
|
146
|
-
risultato_cancellazione =
|
144
|
+
risultato_cancellazione = _collezione.cancella_uno Mappa[_id: id_documento]
|
147
145
|
risultato_cancellazione.deleted_count
|
148
146
|
fine
|
149
147
|
alias :cancella_molte :cancella_molti
|
@@ -151,12 +149,19 @@ modulo Mangusta
|
|
151
149
|
##
|
152
150
|
# Cancella tutti i documenti.
|
153
151
|
definisci cancella_tutti
|
154
|
-
risultato_cancellazione =
|
152
|
+
risultato_cancellazione = _collezione.cancella_molti
|
155
153
|
risultato_cancellazione.deleted_count
|
156
154
|
fine
|
157
155
|
|
158
156
|
privati
|
159
157
|
|
158
|
+
##
|
159
|
+
# Connette alla collezione.
|
160
|
+
definisci _collezione
|
161
|
+
alza "Mangusta non è ancora stato connesso ad una base dati" se Mangusta.connessione.nulla?
|
162
|
+
Mangusta.connessione[se_stesso._nome_collezione]
|
163
|
+
fine
|
164
|
+
|
160
165
|
##
|
161
166
|
# Ritorna un risultato ricerca.
|
162
167
|
definisci _risultato_ricerca(**parametri)
|
@@ -7,14 +7,18 @@ modulo Mangusta
|
|
7
7
|
|
8
8
|
documento_convertito = Mappa.nuova
|
9
9
|
documento.campi.per_ognuno esegui |campo|
|
10
|
-
|
10
|
+
valore_campo = documento.ottieni_valore_campo(campo.nome)
|
11
|
+
prossimo se valore_campo.nullo?
|
12
|
+
documento_convertito.deposita campo.nome, valore_campo
|
11
13
|
fine
|
12
14
|
documento_convertito
|
13
15
|
fine
|
14
16
|
|
15
17
|
definisci se_stessa.converti_in_documento(documento_in_json, classe_documento)
|
16
18
|
ritorna nullo se documento_in_json.nullo?
|
17
|
-
|
19
|
+
classe_documento ||= "Oggetto"
|
20
|
+
|
21
|
+
Oggetto.ottieni_costante(classe_documento).nuovo **documento_in_json
|
18
22
|
fine
|
19
23
|
|
20
24
|
fine
|
data/lib/mangusta/versione.ir
CHANGED
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.1.
|
4
|
+
version: 0.1.1
|
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-03-
|
11
|
+
date: 2020-03-30 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: Simple MongoDB ODM. Yay!
|
14
14
|
email:
|
@@ -30,6 +30,8 @@ files:
|
|
30
30
|
- lib/mangusta/core_ext/mongo.rb
|
31
31
|
- lib/mangusta/documento.ir
|
32
32
|
- lib/mangusta/documento/campo.ir
|
33
|
+
- lib/mangusta/documento/relazione.ir
|
34
|
+
- lib/mangusta/load.rb
|
33
35
|
- lib/mangusta/ripostiglio.ir
|
34
36
|
- lib/mangusta/ripostiglio/risultato_ricerca.ir
|
35
37
|
- lib/mangusta/utilità/convertitori.ir
|