Skip to content

Instantly share code, notes, and snippets.

@Superlokkus
Last active September 7, 2015 12:13
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Superlokkus/44d69167ca1a82e150e9 to your computer and use it in GitHub Desktop.
Save Superlokkus/44d69167ca1a82e150e9 to your computer and use it in GitHub Desktop.
Inverse pragma using composite value types
struct measurement_set;
#pragma db value
struct measurement_parameter_key{
#pragma db column("measurement_set_id") type("uniqueidentifier") not_null
boost::uuids::uuid measurement_set_id;
#pragma db column("parameter_name") type("nvarchar(32)") not_null
std::wstring parameter_name;
};
#pragma db object table("measurement_parameter")
struct measurement_parameter{
#pragma db id
measurement_parameter_key measurement_set_id;
/* Other members*/
};
#pragma db object table("measurement_set")
struct measurement_set {
#pragma db column("measurement_id") type("uniqueidentifier") id not_null
boost::uuids::uuid measurement_id;
#pragma db inverse(measurement_set_id.measurement_set_id)
//^ odb parser: error: ')' expected at the end of db pragma inverse
std::set<measurement_parameter> parameters;
/* Other members*/
};
create table measurement_set(
measurement_id uniqueidentifier primary key
)
create table measurement_parameter(
measurement_set_id uniqueidentifier not null foreign key references measurement_set(id_col),
parameter_name nvarchar(32) not null,
--other columns
constraint pk primary key(measurement_set_id,parameter_name)
)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment