You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

78 lines
2.8 KiB

2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
  1. #include <signal.h>
  2. #include <sqlite3.h>
  3. #include <stdio.h>
  4. #include <stdlib.h>
  5. #include <fstream>
  6. #include <functional>
  7. #include <iostream>
  8. #include <list>
  9. #include <map>
  10. #include <memory>
  11. #include <set>
  12. #include <sstream>
  13. #include <string>
  14. #include <vector>
  15. #include "iflytop/components/sqlite_orm/sqlite_orm.hpp"
  16. using namespace sqlite_orm;
  17. struct User {
  18. int id;
  19. std::string firstName;
  20. int lastName;
  21. std::string birthDate;
  22. std::unique_ptr<std::string> imageUrl;
  23. int typeId;
  24. };
  25. struct UserType {
  26. int id;
  27. std::string name;
  28. };
  29. int main(int argc, char const *argv[]) {
  30. sqlite3 *db;
  31. char *zErrMsg = 0;
  32. int rc;
  33. // rc = sqlite3_open("test.db", &db);
  34. // if (rc) {
  35. // fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db));
  36. // exit(0);
  37. // } else {
  38. // fprintf(stderr, "Opened database successfully\n");
  39. // }
  40. // sqlite3_close(db);
  41. {
  42. auto storage = make_storage("./db.sqlite", //
  43. make_table("users", //
  44. make_column("id", &User::id), //
  45. make_column("first_name", &User::firstName), //
  46. make_column("last_name", &User::lastName), //
  47. make_column("birth_date", &User::birthDate), //
  48. make_column("image_url", &User::imageUrl), //
  49. make_column("type_id", &User::typeId)), //
  50. make_table("user_types", //
  51. make_column("id", &UserType::id, primary_key().autoincrement()), //
  52. make_column("name", &UserType::name, default_value("name_placeholder"))));
  53. // storage.dump();
  54. // storage.sync_schema(
  55. storage.sync_schema();
  56. storage.filename();
  57. std::cout << "storage.filename():" << storage.filename() << std::endl;
  58. storage.sync_schema();
  59. storage.insert(User{1, "Nicola", 2, "1856", nullptr, 0});
  60. storage.insert(User{-1, "Linus", 2, "1969", nullptr, 0});
  61. storage.insert(User{-1, "Mark", 3, "1984", nullptr, 0});
  62. auto allEmployees = storage.get_all<User>();
  63. for (auto &employee : allEmployees) {
  64. std::cout << employee.id << ' ' << employee.firstName << ' ' << employee.lastName << std::endl;
  65. }
  66. // storage.sync_schema();
  67. }
  68. return 0;
  69. }