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.
 
 
 

39 rivejä
1.0 KiB

  1. #pragma once
  2. namespace cpphibernate {
  3. namespace mariadb {
  4. /* driver_impl_t */
  5. template<typename T_schema>
  6. driver_impl_t::driver_impl_t(driver_t& p_owner, T_schema&& p_schema)
  7. : owner (p_owner)
  8. , schema(make_schema(std::forward<T_schema>(p_schema)))
  9. { }
  10. void driver_impl_t::init(bool recreate) const
  11. {
  12. auto * connection = owner.connection();
  13. if (!connection)
  14. throw exception("Cpphibernate mariadb driver is not connected to any database!");
  15. ::cppmariadb::transaction_lock trans(*connection);
  16. schema->init(init_context(*schema, *connection, recreate));
  17. trans.commit();
  18. }
  19. template<typename T_dataset>
  20. void driver_impl_t::create(T_dataset& dataset) const
  21. {
  22. auto * connection = owner.connection();
  23. if (!connection)
  24. throw exception("Cpphibernate mariadb driver is not connected to any database!");
  25. create_update_impl_t<T_dataset>::apply(
  26. create_update_context(*schema, *connection, dataset));
  27. }
  28. } }