2021-04-15 18:30:52 +00:00
|
|
|
# Analisi del database
|
|
|
|
|
|
|
|
## Glossario generale
|
|
|
|
|
2021-04-15 23:59:29 +00:00
|
|
|
> [Vedi `glossary.md`](glossary.md)
|
2021-04-15 18:30:52 +00:00
|
|
|
|
|
|
|
|
|
|
|
## Glossario specifico
|
|
|
|
|
|
|
|
| Entità | Attributi | Interazioni |
|
|
|
|
|-------------------|-------------------------------------------------------|-----------------------------|
|
|
|
|
| **User** | email, username, password | Repository |
|
|
|
|
| **Repository** | id, name, start, end, status | User, Tweet, Alert, Keyword |
|
2021-04-17 12:58:20 +00:00
|
|
|
| **Tweet** | snowflake, content, location, poster | Repository, Condition |
|
2021-04-15 18:30:52 +00:00
|
|
|
| **Condition** | id, type, param | BoolOperation |
|
2021-04-17 12:58:20 +00:00
|
|
|
| **BoolOperation** | id, operation, condition_id, alert_id, node_1, node_2 | Alert, BoolOperation, Condition|
|
|
|
|
| **Alert** | id, repository_id, name, limit, window_size | BoolOperation, Norifica, Repository|
|
|
|
|
| **Notifica** | id, ora, alert_id | Alert|
|
2021-04-15 18:30:52 +00:00
|
|
|
|
|
|
|
|
|
|
|
## Elementi
|
|
|
|
|
|
|
|
### User
|
|
|
|
|
|
|
|
> Username: Steffo
|
|
|
|
> Email: ste.pigozzi@gmail.com
|
|
|
|
> Password: ···········
|
|
|
|
|
|
|
|
L'utilizzatore della piattaforma, colui che ha accesso ai dati.
|
|
|
|
|
|
|
|
L'utente possiede una `email` per ricevere gli [Alert](#alert), una `password` per accedere al servizio e un `username`
|
|
|
|
per essere più facilmente riconoscibile.
|
|
|
|
|
|
|
|
Un utente può avere più [Repository](#repository) sotto il suo controllo.
|
|
|
|
|
|
|
|
|
|
|
|
### Repository
|
|
|
|
|
|
|
|
> Repository "Modena e dintorni"
|
|
|
|
|
|
|
|
Un insieme di [Tweet](#tweet) che soddisfano una o più [Condition](#condition).
|
|
|
|
|
|
|
|
Ha un proprietario che può cambiarne le impostazioni, ma possono essere visibili a più [Users](#user).
|
|
|
|
|
|
|
|
Un repository può avere diversi [Alert](#alert).
|
|
|
|
|
|
|
|
|
|
|
|
### Tweet
|
|
|
|
|
|
|
|
> Tweet di @USteffo:
|
|
|
|
> "Testo di sopra #PdS2021"
|
|
|
|
|
|
|
|
Un post su Twitter, che viene salvato su NEST se soddisfa le [Condition](#condition)
|
|
|
|
richieste da uno o più [Repository](#repository).
|
|
|
|
|
|
|
|
I Tweet sono identificati da un particolare tipo di identificatore chiamato `snowflake`.
|
|
|
|
|
|
|
|
Contiene informazioni relative al `poster` del tweet, il suo `content` e opzionalmente informazioni sulla `location`
|
|
|
|
in cui è stato scritto.
|
|
|
|
|
|
|
|
|
|
|
|
### Condition
|
|
|
|
|
|
|
|
> Tweet contenenti #PdS2021
|
|
|
|
|
|
|
|
> Tweet postati a Modena
|
|
|
|
|
|
|
|
> Tweet postati tra le 21:00 e le 23:00 del 15 Aprile
|
|
|
|
|
|
|
|
Un predicato usato per effettuare ricerca e filtraggio di [Tweet](#tweet).
|
|
|
|
|
|
|
|
Può essere di diversi tipi:
|
|
|
|
- `HASHTAG`: richiede che un tweet contenga un determinato hashtag
|
|
|
|
- `LOCATION`: richiede che un tweet venga inviato in una specifica location
|
|
|
|
- `TIME`: richiede che un tweet venga inviato in un dato lasso di tempo
|
|
|
|
|
|
|
|
Viene utilizzato all'interno di [Repository](#repository) e [Alert](#alert) per definire le condizioni in cui catturare
|
|
|
|
tweet o allertare l'utente.
|
|
|
|
|
|
|
|
È possibile unire più condizioni con una o più [BoolOperation](#booloperation).
|
|
|
|
|
|
|
|
|
|
|
|
### BoolOperation
|
|
|
|
|
|
|
|
> Tweet contenenti #Modena **OR** Tweet postati a Modena
|
|
|
|
|
|
|
|
> Tweet postati tra le 21:00 e le 23:00 del 15 Aprile **AND** Tweet contenenti #PdS2021
|
|
|
|
|
|
|
|
Un nodo di albero binario usato per combinare più [Condition](#condition).
|
|
|
|
|
|
|
|
Le foglie fanno riferimento a una [Condition](#condition), mentre i rami fanno riferimento ad altre
|
|
|
|
[BoolOperation](#booloperation).
|
|
|
|
|
|
|
|
Supporta le seguenti operazioni:
|
|
|
|
- `AND`: intersezione
|
|
|
|
- `OR`: unione
|
|
|
|
|
|
|
|
|
|
|
|
### Alert
|
|
|
|
|
|
|
|
Un elemento di un [Repository](#repository) a cui è legata una [BoolOperation](#booloperation).
|
|
|
|
|
|
|
|
Se i [Tweet](#tweet) di un [Repository](#repository) che rispettano la [BoolOperation](#booloperation) superano un certo
|
|
|
|
`limit` in un lasso di tempo, si attiva e notifica l'utente.
|
2021-04-17 12:58:20 +00:00
|
|
|
|
|
|
|
|
|
|
|
### Notifica
|
|
|
|
|
|
|
|
Una notifica legata ad un Alert che viene creata quando l'alert viene innescato.
|