Giter VIP home page Giter VIP logo

yaml_db's Introduction

yamlDB

Group 16: Léo Legron, Pierre Piron, Quentin Brunet

Development environment

XCode version

Check your Xcode version is > 9.0

Working directory

  • Go to Product > Scheme > Edit Scheme...
  • Click on options tab
  • Check use custom working directory checkbox
  • Select the path to databases in your project directory
  • Save

Database samples

Note: We use 4 spaces indentation

You can find both reference and demo files here : documentation/samples/databases/

Useful resources

yaml_db's People

Contributors

qboot avatar pironp avatar leolgrn avatar

Watchers

James Cloos avatar  avatar  avatar

yaml_db's Issues

Parse user input

Scanner la saisie de l'utilisateur et décomposer la chaîne reçue pour pointer vers les bonnes fonctions (pour l'instant simplement faire un printf de la fonction attendue).

Par exemple :
Input : CREATE DATABASE base1;doit afficher createDatabase(base1);

Pour la création d'une table les colonnes de la table sont un tableau de tableau [nom de la colonne, type de la colonne] donc la fonction createTable attend un nom est un double pointeur.

CREATE DATABASE base1;
DROP DATABASE base1;
SHOW DATABASES;
USE base1;
CREATE TABLE people (id int, name string, gender, int, address string, weight float);
DROP TABLE people;
SHOW TABLES;

GTK Interface

  • Se familiariser avec la bibliothèque GTK
  • L'ajouter au projet une fois que t'es chaud dessus 😛

ALTER TABLE capability

Pouvoir modifier la structure d'une table :

  • dropColumn() supprimer une colonne
  • addColumn() ajouter une colonne
  • renameColumn() renommer une colonne
  • modifyColumn() modifier une colonne (le type par exemple)

Ces fonctions doivent modifier toutes les datas de la table en conséquence.

LibYAML

LibYAML - A C library for parsing and emitting YAML.

Sans l'inclure directement dans notre projet (on a pas le droit ^^), on peut s'en inspirer pour gérer notre parsing.

https://github.com/yaml/libyaml

SQL Joins

Faire les jointures SQL 😁 ! Good luck haha

Save integer and float values without quotes

Use functions like atof, strtoimax, strtol, or strtof to convert string to int/float

  • Save values without quotes
  • Update parse data functions : use comma delimiter instead of quote delimiter

DOCUMENTATION

Récapitulatif des commandes :

CREATE DATABASE db_name;
USE db_name;
CREATE TABLE table_name (col1 type, col2 type, ...);
INSERT INTO table_name (col1, col2) VALUES (val1, val2);
INSERT INTO table_name (val1, val2);
UPDATE table_name SET col1 = val1, col2 = val2 WHERE id = 1 OR name = quentin;
DELETE FROM table_name WHERE id = 1 AND name != quentin OR age = 22;
DROP TABLE table_name;
DROP DATABASE db_name;
EXIT; QUIT;

Toutes les commandes doivent être écrites en majuscules.

Globalement l'utilisateur est assez libre. Il peut aussi bien écrire id = 1 ou bien id=1.
De la même manière, l'utilisateur peut écrire VALUES(val1,val2) ou VALUES (val1, val2).

La commande INSERT INTO fonctionne soit avec les noms de colonne explicites et dans ce cas vous pouvez n'en précisez que certaines soit avec les noms des colonnes implicites, auquel cas il faudra qu'elles aient toutes une valeur définie.

Les valeurs n'ont pas besoin d'être encadrées par des quotes "" ou ''. Cependant, si vous jugez cela nécessaire et uniquement si la valeur attendue est une string. Vous pouvez l'encadrer avec les quotes de votre choix. Pour échapper une quote, vous pouvez utiliser le backslash : "mon \"test\"".

La commande WHERE accepte autant de conditions que vous voulez. Cependant, elle a une limitation : elle n'accepte (pour le moment) pas de conditions complexes. Vous ne pouvez donc pas prioriser plusieurs conditions à l'aide de parenthèses.
Par exemple : WHERE (id = 1 AND name = quentin) OR age = 22; ne fonctionnera pas.

@PironP n'hésite pas à éditer mon message pour ajouter tes commandes SELECT.

HELP command

Faire une commande yaml_db > HELP; qui liste toutes les commandes disponibles avec un exemple d'utilisation à chaque fois.

Add read capability

Coder l'équivalent du SELECT en SQL.
Parser un fichier yaml (par exemple person.yml) pour en extraire chaque enregistrement.
Faire plusieurs fonctions pour :

  • findAllRecords(db_name, table_name)
  • findRecords(db_name, table_name, record_name, record_value)

Peut-être passer un tableau de records en paramètre si le SELECT comporte un WHERE avec plusieurs conditions ? I don't know 😊

Add create table capability

  • Faire les fonctions pour créer/supprimer une table
  • Faire une fonction createRecord() pour créer/supprimer un enregistrement
  • Mettre à jour la fonction dropDatabase() pour supprimer les fichiers liés à cette base

Replace tab by 4 spaces

Tab is forbidden in yaml.

Tabs have been outlawed since they are treated differently by different editors and tools. And since indentation is so critical to proper interpretation of YAML, this issue is just too tricky to even attempt. Indeed Guido van Rossum of Python has acknowledged that allowing TABs in Python source is a headache for many people and that were he to design Python again, he would forbid them.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.