Skip to content

Instantly share code, notes, and snippets.

View julp's full-sized avatar

julp julp

View GitHub Profile
@julp
julp / XXX.md
Last active July 28, 2023 09:22
[OC] Requête SQL complexe (4 jointures LEFT sur la même table)
@julp
julp / X.md
Last active February 10, 2023 17:30
[OC] Passer un formulaire protégé par token CSRF avec cURL
@julp
julp / README.md
Last active December 30, 2022 21:39
PostgreSQL: migrate a primary key from serial (or whatever) to UUID

Just change the value of the _TABLE_NAME variable (constant):

DO $$
    DECLARE
        _fk TEXT[];
        _primary_key TEXT;
        _column TEXT;
        _foreign_keys TEXT[];
        _TABLE_NAME CONSTANT TEXT NOT NULL := 'the name name of the table to migrate';
@julp
julp / README.md
Last active July 4, 2022 17:42
Gestion de planning/rendez-vous/créneaux horaires

Gestion de planning/rendez-vous/créneaux horaires

Détail de l'approche

Mon approche consiste à pré-générer dans une table la liste de tous les créneaux (table slots) possibles. C'est beaucoup plus efficace et facile ensuite à exploiter car chercher un créneau disponible est une simple requête SQL (jointure LEFT JOIN). Cette pré-génération doit être exécutée en cron (ou au moins en CLI), ce n'est pas grave si elle devait mettre une heure à s'exécuter, surtout que c'est une tâche qui est faite d'avance, l'important c'est que l'application ne soit pas lente pour vos clients à trouver un créneau disponible (sinon elle risque de tomber à la moindre charge - utilisateurs simultanés). Imaginez, sans ce prémâchage sur lequel se baser, comment trouver un rendez-vous disponible ? En tenant compte des jours + horaires d'ouverture ainsi que des jours fériés : ça demanderait beaucoup de calculs et possiblement beaucoup d'allers/retours PHP/base de données pour chaque recherche :/

Avantages de ces slots précal

@julp
julp / xxx.md
Last active May 3, 2020 13:41
[OC] Expression régulière pour parser des joueurs de foot
@julp
julp / dynamic_sql.php
Last active February 18, 2020 18:59
Dynamic SQL queries
<?php
// ev = escape value
function ev(object $dbh, $value) {
if (is_null($value)) {
return 'NULL';
} else if (is_int($value)) {
return $value;
} else if ($value instanceof \DateTimeImmutable) {
$value = $value->format('Y-m-d');
# /!\ no return here /!\