Database
The "database" is a bunch of "tables", each stored into flat files of YAML format.
Yaml files are into path_data with the following naming pattern table.<table_name>.yaml
Example of this demo file table.persons.yaml :
# # Example of "simple" table of persons # YAML is easy to maintain # - id: 1 name: Andromache gender: Female language: Spanish - id: 2 name: Karen gender: Female language: Filipino - id: 3 name: Weber gender: Male language: Albanian - id: 4 name: Kiel gender: Male language: Haitian Creole - id: 5 name: Gottfried gender: Male language: Filipino - id: 6 name: Addy gender: Female language: Persian - id: 7 name: Robby gender: Female language: Hiri Motu - id: 8 name: Agata gender: Female language: Nepali - id: 9 name: Inness gender: Male language: Filipino - id: 10 name: Lindon gender: Male language: Somali - id: 11 name: Antonetta gender: Female language: Tamil - id: 12 name: Erminia gender: Female language: Burmese - id: 13 name: Dunn gender: Male language: Hungarian - id: 14 name: Chariot gender: Male language: Aymara - id: 15 name: Nappie gender: Male language: Lithuanian - id: 16 name: Matias gender: Male language: Ndebele - id: 17 name: Carmela gender: Female language: Icelandic - id: 18 name: Colene gender: Female language: Luxembourgish - id: 19 name: Rayna gender: Female language: Dutch - id: 20 name: Cart gender: Male language: Macedonian - id: 21 name: Cecelia gender: Female language: Filipino - id: 22 name: Catriona gender: Female language: Pashto - id: 23 name: Conrade gender: Male language: Kannada - id: 24 name: Terencio gender: Male language: French - id: 25 name: Sarah gender: Female language: Marathi - id: 26 name: Patrizius gender: Male language: Fijian - id: 27 name: Bunni gender: Female language: Dhivehi - id: 28 name: Tillie gender: Female language: Finnish - id: 29 name: Nil gender: Male language: Swahili - id: 30 name: Salome gender: Female language: Hiri Motu - id: 31 name: Alexio gender: Male language: Papiamento - id: 32 name: Iggie gender: Male language: Montenegrin - id: 33 name: Jody gender: Male language: Gagauz - id: 34 name: Ingeborg gender: Female language: Icelandic - id: 35 name: Isak gender: Male language: Latvian - id: 36 name: Benyamin gender: Male language: Dhivehi - id: 37 name: Jemie gender: Female language: Oriya - id: 38 name: Kimbell gender: Male language: Tok Pisin - id: 39 name: Tallie gender: Female language: Oriya - id: 40 name: Leonore gender: Female language: Bulgarian - id: 41 name: Burr gender: Male language: New Zealand Sign Language - id: 42 name: Conni gender: Female language: Aymara - id: 43 name: Godfree gender: Male language: Italian - id: 44 name: Humfrid gender: Male language: Greek - id: 45 name: Care gender: Male language: Quechua - id: 46 name: Ambrosius gender: Male language: Bengali - id: 47 name: Eveleen gender: Female language: Chinese - id: 48 name: Jonie gender: Female language: Polish - id: 49 name: Robinetta gender: Female language: GuaranĂ - id: 50 name: Yulma gender: Male language: Montenegrin - id: 51 name: Chen gender: Male language: English - id: 52 name: Finn gender: Male language: Hebrew - id: 53 name: Floyd gender: Male language: Papiamento - id: 54 name: Umberto gender: Male language: Nepali - id: 55 name: Xerxes gender: Male language: Greek - id: 56 name: Inez gender: Female language: Dhivehi - id: 57 name: Jane gender: Female language: Northern Sotho - id: 58 name: Seka gender: Female language: Punjabi - id: 59 name: Addie gender: Male language: Kashmiri - id: 60 name: Nikolai gender: Male language: Pashto - id: 61 name: Tess gender: Female language: Bulgarian - id: 62 name: Ricoriki gender: Male language: Indonesian - id: 63 name: Cheston gender: Male language: Chinese - id: 64 name: Arny gender: Male language: Korean - id: 65 name: Emylee gender: Female language: Assamese - id: 66 name: Michal gender: Male language: Persian - id: 67 name: Mimi gender: Female language: Thai - id: 68 name: Onfre gender: Male language: Dari - id: 69 name: Davy gender: Male language: Icelandic - id: 70 name: Joey gender: Male language: Amharic - id: 71 name: Baily gender: Male language: Telugu - id: 72 name: Marcos gender: Male language: Ndebele - id: 73 name: Linus gender: Male language: Dutch - id: 74 name: Hill gender: Male language: Latvian - id: 75 name: Anet gender: Female language: Gagauz - id: 76 name: Hilton gender: Male language: Italian - id: 77 name: Kakalina gender: Female language: Tsonga - id: 78 name: Fransisco gender: Male language: Chinese - id: 79 name: Hyman gender: Male language: Arabic - id: 80 name: Bryan gender: Male language: Aymara - id: 81 name: Zollie gender: Male language: Dutch - id: 82 name: Daphna gender: Female language: Portuguese - id: 83 name: Jane gender: Female language: Dhivehi - id: 84 name: Germayne gender: Male language: Thai - id: 85 name: Violette gender: Female language: New Zealand Sign Language - id: 86 name: Ty gender: Male language: Kannada - id: 87 name: Hayward gender: Male language: Bosnian - id: 88 name: Tani gender: Female language: New Zealand Sign Language - id: 89 name: Hali gender: Female language: Pashto - id: 90 name: Elysee gender: Female language: Croatian - id: 91 name: Lita gender: Female language: Moldovan - id: 92 name: Therese gender: Female language: Arabic - id: 93 name: Bertie gender: Male language: Tetum - id: 94 name: Clayton gender: Male language: Kazakh - id: 95 name: Augustine gender: Male language: Romanian - id: 96 name: Orly gender: Female language: Korean - id: 97 name: Missie gender: Female language: Haitian Creole - id: 98 name: Clara gender: Female language: Dzongkha - id: 99 name: Martainn gender: Male language: Icelandic - id: 100 name: Cherice gender: Female language: Gagauz
It is based on arnapou/pfdb
library which allows you to search, group, sort and also modify data.
Anything that is doable in PHP code is doable in twig through the object app.db.
Find an item from its id
The element with id 5
{{ app.db.table('persons').get(5) | json_encode(constant('JSON_PRETTY_PRINT')) | raw }}
{
"id": 5,
"name": "Gottfried",
"gender": "Male",
"language": "Filipino"
}
Listing
5 lines from 10th
{% for person in app.db.table('persons').find.limit(10, 5) %}
| 11 | Antonetta | Female | Tamil |
| 12 | Erminia | Female | Burmese |
| 13 | Dunn | Male | Hungarian |
| 14 | Chariot | Male | Aymara |
| 15 | Nappie | Male | Lithuanian |
Finding and sorting
Names which contains "an" than sorted by name
{% for person in app.db.table('persons').find(app.db.expr.contains('name', 'an')).sort('name') %}
| 80 | Bryan | Male | Aymara |
| 78 | Fransisco | Male | Chinese |
| 79 | Hyman | Male | Arabic |
| 57 | Jane | Female | Northern Sotho |
| 83 | Jane | Female | Dhivehi |
| 88 | Tani | Female | New Zealand Sign Language |