Skip to content
GitLab
Explorer
Connexion
Navigation principale
Rechercher ou aller à…
Projet
lektor
Gestion
Activité
Membres
Labels
Programmation
Tickets
Tableaux des tickets
Jalons
Code
Requêtes de fusion
Dépôt
Branches
Validations
Étiquettes
Graphe du dépôt
Comparer les révisions
Compilation
Pipelines
Jobs
Planifications de pipeline
Artéfacts
Aide
Aide
Support
Documentation de GitLab
Comparer les forfaits GitLab
Forum de la communauté
Contribuer à GitLab
Donner votre avis
Raccourcis clavier
?
Extraits de code
Groupes
Projets
Afficher davantage de fils d'Ariane
Kubat
lektor
Validations
0876281a
Vérifiée
Valider
0876281a
rédigé
5 years ago
par
Kubat
Parcourir les fichiers
Options
Téléchargements
Correctifs
Plain Diff
First version of the database delete sticker function
parent
917f5990
Aucune branche associée trouvée
Aucune étiquette associée trouvée
1 requête de fusion
!54
Resolve "Stickers"
Modifications
2
Masquer les modifications d'espaces
En ligne
Côte à côte
Affichage de
2 fichiers modifiés
inc/lektor/database.h
+2
-0
2 ajouts, 0 suppression
inc/lektor/database.h
src/database/stickers.c
+49
-4
49 ajouts, 4 suppressions
src/database/stickers.c
avec
51 ajouts
et
4 suppressions
inc/lektor/database.h
+
2
−
0
Voir le fichier @
0876281a
...
@@ -131,6 +131,8 @@ typedef bool (*database_sticker_callback_t)(void *args, const char *sticker, con
...
@@ -131,6 +131,8 @@ typedef bool (*database_sticker_callback_t)(void *args, const char *sticker, con
bool
database_sticker_create
(
sqlite3
*
db
,
const
char
*
name
);
bool
database_sticker_create
(
sqlite3
*
db
,
const
char
*
name
);
bool
database_sticker_delete
(
sqlite3
*
db
,
const
char
*
name
);
bool
database_sticker_delete
(
sqlite3
*
db
,
const
char
*
name
);
bool
database_sticker_delete_specify
(
sqlite3
*
sb
,
const
char
*
type
,
int
uri
,
const
char
*
name
/* Can be null */
);
bool
database_sticker_list
(
sqlite3
*
db
,
const
char
*
type
,
void
*
args
,
database_sticker_callback_t
call
);
bool
database_sticker_list
(
sqlite3
*
db
,
const
char
*
type
,
void
*
args
,
database_sticker_callback_t
call
);
bool
database_sticker_set
(
sqlite3
*
db
,
const
char
*
type
,
const
char
*
name
,
int
uri
,
int
value
);
bool
database_sticker_set
(
sqlite3
*
db
,
const
char
*
type
,
const
char
*
name
,
int
uri
,
int
value
);
bool
database_sticker_get
(
sqlite3
*
db
,
const
char
*
type
,
const
char
*
name
,
int
uri
,
void
*
args
,
bool
database_sticker_get
(
sqlite3
*
db
,
const
char
*
type
,
const
char
*
name
,
int
uri
,
void
*
args
,
...
...
Ce diff est replié.
Cliquez pour l'agrandir.
src/database/stickers.c
+
49
−
4
Voir le fichier @
0876281a
...
@@ -150,7 +150,7 @@ database_sticker_set(sqlite3 *db, const char *type, const char *name, int uri, i
...
@@ -150,7 +150,7 @@ database_sticker_set(sqlite3 *db, const char *type, const char *name, int uri, i
"SELECT ?, 'stickers'.id, ? "
"SELECT ?, 'stickers'.id, ? "
"FROM 'stickers'"
"FROM 'stickers'"
"WHERE 'stickers'.id = ?;
\n
"
;
"WHERE 'stickers'.id = ?;
\n
"
;
else
if
(
!
strcasecmp
(
type
,
"
song
"
))
else
if
(
!
strcasecmp
(
type
,
"
plt
"
))
SQL
=
SQL
=
"INSERT OR REPLACE INTO 'stickers.plt' (id, sticker, value) "
"INSERT OR REPLACE INTO 'stickers.plt' (id, sticker, value) "
"SELECT ?, 'stickers'.id, ? "
"SELECT ?, 'stickers'.id, ? "
...
@@ -193,12 +193,12 @@ database_sticker_get(sqlite3 *db, const char *type, const char *name, int uri, v
...
@@ -193,12 +193,12 @@ database_sticker_get(sqlite3 *db, const char *type, const char *name, int uri, v
"JOIN 'stickers.song'"
"JOIN 'stickers.song'"
" ON 'stickers'.id = 'stickers.song'.sticker"
" ON 'stickers'.id = 'stickers.song'.sticker"
" AND 'stickers'.name = ?;
\n
"
;
" AND 'stickers'.name = ?;
\n
"
;
else
if
(
!
strcasecmp
(
type
,
"
song
"
))
else
if
(
!
strcasecmp
(
type
,
"
plt
"
))
SQL
=
SQL
=
"SELECT value "
"SELECT value "
"FROM 'stickers' "
"FROM 'stickers' "
"JOIN 'stickers.
song
'"
"JOIN 'stickers.
plt
'"
" ON 'stickers'.id = 'stickers.
song
'.sticker"
" ON 'stickers'.id = 'stickers.
plt
'.sticker"
" AND 'stickers'.name = ?;
\n
"
;
" AND 'stickers'.name = ?;
\n
"
;
else
{
else
{
fprintf
(
stderr
,
" . database_sticker_get: Type '%s' is invalid
\n
"
,
type
);
fprintf
(
stderr
,
" . database_sticker_get: Type '%s' is invalid
\n
"
,
type
);
...
@@ -230,3 +230,48 @@ error:
...
@@ -230,3 +230,48 @@ error:
sqlite3_finalize
(
stmt
);
sqlite3_finalize
(
stmt
);
return
ret
;
return
ret
;
}
}
bool
database_sticker_delete_specify
(
sqlite3
*
db
,
const
char
*
type
,
int
uri
,
const
char
*
name
)
{
const
char
*
SQL
=
NULL
;
sqlite3_stmt
*
stmt
;
int
ret
=
false
;
/* Tout pouris, refaire ça (FIXME). */
if
(
!
strcasecmp
(
type
,
"song"
))
{
if
(
!
name
)
SQL
=
"DELETE FROM 'stickers.song' WHERE id = ?;"
;
else
SQL
=
"DELETE FROM 'stickers.song' "
"WHERE 'stickers.song'.id = ? "
"AND sticker = (SELECT id FROM 'stickers' WHERE name = ? LIMIT 1);"
;
}
else
if
(
!
strcasecmp
(
type
,
"plt"
))
{
if
(
!
name
)
SQL
=
"DELETE FROM 'stickers.plt' WHERE id = ?;"
;
else
SQL
=
"DELETE FROM 'stickers.plt' "
"WHERE 'stickers.plt'.id = ? "
"AND sticker = (SELECT id FROM 'stickers' WHERE name = ? LIMIT 1);"
;
}
else
{
fprintf
(
stderr
,
" . database_sticker_get: Type '%s' is invalid
\n
"
,
type
);
return
false
;
}
SQLITE_PREPARE
(
db
,
stmt
,
SQL
,
error
);
SQLITE_BIND_INT
(
db
,
stmt
,
1
,
uri
,
error
);
if
(
name
)
SQLITE_BIND_TEXT
(
db
,
stmt
,
2
,
name
,
error
);
if
(
!
(
ret
=
(
sqlite3_step
(
stmt
)
==
SQLITE_OK
)))
{
fprintf
(
stderr
,
" . database_sticker_delete_specify: Failed to delete sticker
\n
"
);
goto
error
;
}
ret
=
true
;
error:
sqlite3_finalize
(
stmt
);
return
ret
;
}
Ce diff est replié.
Cliquez pour l'agrandir.
Aperçu
0%
Chargement en cours
Veuillez réessayer
ou
joindre un nouveau fichier
.
Annuler
You are about to add
0
people
to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Enregistrer le commentaire
Annuler
Veuillez vous
inscrire
ou vous
se connecter
pour commenter