bottin/README.md

106 lines
4 KiB
Markdown

# agecem/bottin
Bottin de la masse étudiante, codé en Go. (Migration d'une application legacy en php)
Permet d'utiliser et de (rudimentairement) mettre à jour une base de donnée
(présentement uniquement `sqlite3`) de noms et de numéros étudiants.
Sert principalement à vérifier le statut de membre d'une personne en comparant avec son numéro étudiant du cégep.
Base pour les futures applications utilisant des bases de données similaires:
* Scan de présence pour Assemblée Générale (`agecem/bottin-ag`)
* Distribution d'Agendas en début de session (`agecem/bottin-agendas)
Inclue un `Dockerfile` pour déployer en tant que container.
Inclue un `Makefile` pour l'exécution de tâches communes.
## Repo
[agecem/bottin](https://git.agecem.com/agecem/bottin)
## Utilisation
```sh
# Voir les options de make
make help
# Bâtir localement une container image sur docker
make build
```
## Flags
L'application utilise un module pour afficher de l'information sur les différents flags existants.
```sh
# Pour voir l'aide de l'application
bottin -h
```
Exemple de résultat:
```
Run the bottin server
Usage:
bottin server [flags]
Flags:
--db-sqlite-path string Path to sqlite database (config: 'db.sqlite.path')
--db-type string Database type (config: 'db.type')
-h, --help help for server
--insert-batch-size int The amount of inserts to do per batch (config: 'import.insert_batch_size') (default 500)
--json-insert-path string The location of a json file containing Membres to insert.
--login-password string The password to login to the web ui. (config: 'login.password') (default "bottin")
--login-username string The username to login to the web ui. (config: 'login.username') (default "bottin")
--server-port int The port on which the web application will server content (config: 'server.port') (default 1312)
Global Flags:
--config string config file (default is $HOME/.bottin.yaml)
```
## Procédure avec docker-compose
Voir documentation de docker-compose
`docker-compose -h`
Démarrer container en mode detached
`docker-compose up -d`
Éteindre le container, sans toucher aux volumes
`docker-compose down`
Sur un container qui roule, utiliser `docker-compose run` pour mettre à jour la db (avec `--json-insert-path` ou éventuellement `bottin import`).
`docker-compose run bottin bottin server --json-insert-path examples/membres-test.json --config /etc/bottin/bottin.yaml`
## Exemples
### Sans viper
```sh
# Servir l'application sur le port 8080, en spécifiant les credentials à utiliser pour y accéder ainsi que le type et chemin d'accès d'une database.
bottin server --db-type 'sqlite' --db-sqlite-path '/chemin/vers/bottin-database.db' --login-username 'exemple' --login-password 'un_autre_mot_de_passe' --server-port 8080`
# Servir l'application en spécifiant le chemin d'accès d'une database (sqlite3 ici) ainsi qu'une liste de Membres à insérer lors à la base de donnée lors du démarrage.
#
# Important: l'importation ne fait qu'un unmarshal du fichier json et aucune vérification supplémentaire, ni même une vérification d'insertion de doublons dans la db. Fonctionalité à utiliser calmement.
bottin server --db-type 'sqlite' --db-sqlite-path '/chemin/vers/bottin-database.db' --json-insert-path '/chemin/vers/liste_de_membre.json'`
```
### Avec viper
1. Ajouter config en suivant documentation dans `help, -h, --help`
2. Appeler config avec flag global `--config /chemin/vers/config`.
*Note: L'endroit par défaut de la config est `$HOME/.bottin.yaml`, mais un autre emplacement peut être utilisé si désiré. `Dockerfile` utilise `/etc/bottin/bottin.yaml` comme défaut.*
La seule option qui n'est présentement pas disponible par config file est `--json-insert-path` afin de prévenir des doublons. Explication complète [dans la définition de flag](https://git.agecem.com/agecem/bottin/src/commit/0a3ba633cc2208cbfae1195770afcbdec9ace634/cmd/server.go#L99).