42 lines
2.1 KiB
C
42 lines
2.1 KiB
C
#define _POSIX_C_SOURCE 200809L
|
|
|
|
#include <sqlite3.h>
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <unistd.h>
|
|
|
|
#include "trainlog/database.h"
|
|
|
|
#define CHECK(x) do { if (!(x)) { fprintf(stderr,"CHECK failed at %s:%d: %s\n",__FILE__,__LINE__,#x); return 1; } } while (0)
|
|
|
|
static int scalar(sqlite3 *database, const char *sql)
|
|
{
|
|
sqlite3_stmt *statement=NULL;int value=-1;
|
|
if(sqlite3_prepare_v2(database,sql,-1,&statement,NULL)==SQLITE_OK && sqlite3_step(statement)==SQLITE_ROW)value=sqlite3_column_int(statement,0);
|
|
(void)sqlite3_finalize(statement);return value;
|
|
}
|
|
|
|
int main(void)
|
|
{
|
|
char path[]="/tmp/trainlog-schema-v21-XXXXXX";
|
|
int fd=mkstemp(path);TrainlogDatabase *database=NULL;sqlite3 *raw=NULL;size_t exercises=0U;
|
|
CHECK(fd>=0);CHECK(close(fd)==0);
|
|
CHECK(trainlog_database_open(path,&database)==TRAINLOG_STATUS_OK);
|
|
CHECK(trainlog_database_insert_exercise_profiled(database,
|
|
"ex_aaaaaaaa-aaaa-4aaa-8aaa-aaaaaaaaaaaa","Migration sentinel","migration sentinel",
|
|
TRAINLOG_TRACKING_REPS,TRAINLOG_RECORDING_SETS,0U)==TRAINLOG_STATUS_OK);
|
|
trainlog_database_close(database);database=NULL;
|
|
CHECK(sqlite3_open(path,&raw)==SQLITE_OK);
|
|
CHECK(sqlite3_exec(raw,"PRAGMA foreign_keys=OFF;DROP TABLE sync_causal_publications;DROP TABLE sync_acknowledgements;DROP TABLE sync_consumed_generations;DROP TABLE sync_generation_artifacts;DROP TABLE sync_generations;DROP TABLE sync_peer_identity;PRAGMA user_version=20;",NULL,NULL,NULL)==SQLITE_OK);
|
|
CHECK(sqlite3_close(raw)==SQLITE_OK);
|
|
CHECK(trainlog_database_open(path,&database)==TRAINLOG_STATUS_OK);
|
|
CHECK(trainlog_database_exercise_count(database,&exercises)==TRAINLOG_STATUS_OK);CHECK(exercises>0U);
|
|
trainlog_database_close(database);database=NULL;
|
|
CHECK(sqlite3_open(path,&raw)==SQLITE_OK);
|
|
CHECK(scalar(raw,"PRAGMA user_version")==21);
|
|
CHECK(scalar(raw,"SELECT COUNT(*) FROM sync_generations")==0);
|
|
CHECK(scalar(raw,"SELECT COUNT(*) FROM sync_consumed_generations")==0);
|
|
CHECK(scalar(raw,"SELECT COUNT(*) FROM sync_acknowledgements")==0);
|
|
CHECK(sqlite3_close(raw)==SQLITE_OK);CHECK(unlink(path)==0);
|
|
return 0;
|
|
}
|