diff --git a/website/static/showcases/data.json b/website/static/showcases/data.json index 97d093339..e53b99912 100644 --- a/website/static/showcases/data.json +++ b/website/static/showcases/data.json @@ -1 +1 @@ -[{"title":"Avro Binding Schema ID","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources\\External Formats\\Avro\\Binding\\Schema ID","code":""},{"title":"Avro Binding Schema Set","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources\\External Formats\\Avro\\Binding\\Schema Set","code":""},{"title":"Avro Externalize","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources\\External Formats\\Avro\\Externalize","code":""},{"title":"Avro Functions","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources\\External Formats\\Avro\\Functions","code":""},{"title":"Avro Internalize","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources\\External Formats\\Avro\\Internalize","code":""},{"title":"Avro Model Generator","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources\\External Formats\\Avro\\Model Generator\\Model include\\exclude","code":""},{"title":"Daml Binding Schema ID","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources\\External Formats\\Daml\\Binding\\Schema ID","code":""},{"title":"Daml Binding Schema Set","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources\\External Formats\\Daml\\Binding\\Schema Set","code":""},{"title":"Daml Externalize","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources\\External Formats\\Daml\\Externalize","code":""},{"title":"Daml Functions","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources\\External Formats\\Daml\\Functions","code":""},{"title":"Daml Internalize","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources\\External Formats\\Daml\\Internalize","code":""},{"title":"Daml Model Generator","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources\\External Formats\\Daml\\Model Generator\\Model include\\exclude","code":""},{"title":"JSON Binding Schema ID","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources\\External Formats\\JSONSchema\\Binding\\Schema ID","code":""},{"title":"JSON Binding Schema Set","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources\\External Formats\\JSONSchema\\Binding\\Schema Set","code":""},{"title":"JSON Externalize","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources\\External Formats\\JSONSchema\\Externalize","code":""},{"title":"Json Functions","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources\\External Formats\\JSONSchema\\Functions","code":""},{"title":"JSON Internalize","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources\\External Formats\\JSONSchema\\Internalize","code":""},{"title":"JSON Model Generator","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources\\External Formats\\JSONSchema\\Model Generator\\Model include\\exclude","code":""},{"title":"Protobuf Binding Schema ID","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources\\External Formats\\Protobuf\\Binding\\Schema ID","code":""},{"title":"Protobuf Binding Schema Set","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources\\External Formats\\Protobuf\\Binding\\Schema Set","code":""},{"title":"Protobuf Externalize","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources\\External Formats\\Protobuf\\Externalize","code":""},{"title":"Protobuf Functions","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources\\External Formats\\Protobuf\\Functions","code":""},{"title":"Protobuf Internalize","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources\\External Formats\\Protobuf\\Internalize","code":""},{"title":"Protobuf Model Generator","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources\\External Formats\\Protobuf\\Model Generator\\Model include\\exclude","code":""},{"title":"Xml Binding Schema ID","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources\\External Formats\\XML\\Binding\\Schema ID","code":""},{"title":"Xml Binding Schema Set","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources\\External Formats\\XML\\Binding\\Schema Set","code":""},{"title":"Xml Externalize","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources\\External Formats\\XML\\Externalize","code":""},{"title":"Xml Functions","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources\\External Formats\\XML\\Functions","code":""},{"title":"Xml Internalize","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources\\External Formats\\XML\\Internalize","code":""},{"title":"Xml Model Generator","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources\\External Formats\\XML\\Model Generator\\Model include\\exclude","code":""},{"title":"Association - Embedded","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources\\Stores\\Model Store\\association\\embedded","code":""},{"title":"Association - Inheritance","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources\\Stores\\Model Store\\association\\inheritance","code":""},{"title":"Association - ClassMappingByClass","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources\\Stores\\Model Store\\classMappingByClass","code":""},{"title":"Association - ClassMappingFilterWithInnerJoin","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources\\Stores\\Model Store\\classMappingFilterWithInnerJoin","code":""},{"title":"DataType","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources\\Stores\\Model Store\\dataType","code":""},{"title":"Dates - datetime","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources\\Stores\\Model Store\\dates\\datetime","code":""},{"title":"Dates - strictdate","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources\\Stores\\Model Store\\dates\\strictdate","code":""},{"title":"Distinct","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources\\Stores\\Model Store\\distinct","code":""},{"title":"Dynajoin","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources\\Stores\\Model Store\\dynajoin","code":""},{"title":"Embedded - Advanced - Inline - Nested","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources\\Stores\\Model Store\\embedded\\inline\\nested","code":""},{"title":"Embedded - Advanced - Inline - targetId","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources\\Stores\\Model Store\\embedded\\inline\\targetId","code":""},{"title":"Enumeration","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources\\Stores\\Model Store\\enumeration","code":""},{"title":"Extend - all","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources\\Stores\\Model Store\\extend\\all","code":""},{"title":"Extend - distinct","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources\\Stores\\Model Store\\extend\\distinct","code":""},{"title":"Extend - embeddedPropertyMapping","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources\\Stores\\Model Store\\extend\\embeddedPropertyMapping","code":""},{"title":"Extend - filter","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources\\Stores\\Model Store\\extend\\filter","code":""},{"title":"Extend - groupBy","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources\\Stores\\Model Store\\extend\\groupBy","code":""},{"title":"Extent - inlineEmbeddedPropertyMapping","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources\\Stores\\Model Store\\extend\\inlineEmbeddedPropertyMapping","code":""},{"title":"Extend - mainTable","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources\\Stores\\Model Store\\extend\\mainTable","code":""},{"title":"Extend - model","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources\\Stores\\Model Store\\extend\\model","code":""},{"title":"Extend - primaryKey","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources\\Stores\\Model Store\\extend\\primaryKey","code":""},{"title":"Extend - propertyMapping","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources\\Stores\\Model Store\\extend\\propertyMapping","code":""},{"title":"Extend - store","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources\\Stores\\Model Store\\extend\\store","code":""},{"title":"Extend - storeSubstitution","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources\\Stores\\Model Store\\extend\\storeSubstitution","code":""},{"title":"Extend - Union","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources\\Stores\\Model Store\\extend\\union","code":""},{"title":"Extend - Filter","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources\\Stores\\Model Store\\filter","code":""},{"title":"GroupBy","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources\\Stores\\Model Store\\groupBy","code":""},{"title":"In","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources\\Stores\\Model Store\\in","code":""},{"title":"Include","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources\\Stores\\Model Store\\include","code":""},{"title":"Inheritance - Cross","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources\\Stores\\Model Store\\inheritance\\cross","code":""},{"title":"Inheritance - Relational - multiJoins","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources\\Stores\\Model Store\\inheritance\\relational\\multiJoins","code":""},{"title":"Inheritance - Relational - selfJoin","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources\\Stores\\Model Store\\inheritance\\relational\\selfJoin","code":""},{"title":"Inheritance - Relational - union","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources\\Stores\\Model Store\\inheritance\\relational\\union","code":""},{"title":"Innerjoin - Isolation","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources\\Stores\\Model Store\\innerJoin\\isolation","code":""},{"title":"Join","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources\\Stores\\Model Store\\join","code":""},{"title":"Merge","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources\\Stores\\Model Store\\merge","code":""},{"title":"Multigrain","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources\\Stores\\Model Store\\multigrain","code":""},{"title":"Propertyfunc - simple","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources\\Stores\\Model Store\\propertyfunc\\simple","code":""},{"title":"Propertyfunc - withjoin","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources\\Stores\\Model Store\\propertyfunc\\withjoin","code":""},{"title":"SelfJoin","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources\\Stores\\Model Store\\selfJoin","code":""},{"title":"SqlFunction","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources\\Stores\\Model Store\\sqlFunction","code":""},{"title":"Subtype","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources\\Stores\\Model Store\\subtype","code":""},{"title":"Tree","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources\\Stores\\Model Store\\tree","code":""},{"title":"Union - Extend","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources\\Stores\\Model Store\\union\\extend","code":""},{"title":"Union - MultipleChainedJoins","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources\\Stores\\Model Store\\union\\multipleChainedJoins","code":""},{"title":"Union - Optimized","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources\\Stores\\Model Store\\union\\optimized","code":""},{"title":"Union - Partial","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources\\Stores\\Model Store\\union\\partial","code":""},{"title":"Union - PartialForeignKeyUsage","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources\\Stores\\Model Store\\union\\partialForeignKeyUsage","code":""},{"title":"Union - SqlQueryMerging","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources\\Stores\\Model Store\\union\\sqlQueryMerging","code":""},{"title":"Relational Database Connection BigQuery with Default Credentials","description":"BigQuery connection using only default credentials. Does not include proxy.","documentation":"","path":"5-connect-data-to-datasources\\Stores\\Relational Store\\Connection\\BigQuery\\DefaultCredentials","code":"###Connection\nRelationalDatabaseConnection connection::mySimpleConnection\n{\n store: store::Store;\n type: BigQuery;\n specification: BigQuery\n {\n projectId: 'proj1';\n defaultDataset: 'dataset1';\n };\n auth: GCPApplicationDefaultCredentials;\n}\n"},{"title":"Relational Database Connection BigQuery with Default Credentials and Proxy","description":"BigQuery connection using only default credentials. Does include proxy.","documentation":"","path":"5-connect-data-to-datasources\\Stores\\Relational Store\\Connection\\BigQuery\\DefaultCredentialsWithProxy","code":"###Connection\nRelationalDatabaseConnection connection::mySimpleConnection\n{\n store: store::Store;\n type: BigQuery;\n specification: BigQuery\n {\n projectId: 'proj1';\n defaultDataset: 'dataset1';\n proxyHost: 'proxyHost1';\n proxyPort: 'proxyPort1';\n };\n auth: GCPApplicationDefaultCredentials;\n}\n"},{"title":"Relational Database Connection BigQuery with Identity Federation","description":"BigQuery connection using Identity Federation.","documentation":"","path":"5-connect-data-to-datasources\\Stores\\Relational Store\\Connection\\BigQuery\\IdentityFederation","code":"###Connection\nRelationalDatabaseConnection connection::mySimpleConnection\n{\n store: store::Store;\n type: BigQuery;\n specification: BigQuery\n {\n projectId: 'proj1';\n defaultDataset: 'dataset1';\n };\n auth: GCPWorkloadIdentityFederation\n {\n serviceAccountEmail: 'name';\n };\n}\n"},{"title":"Relational Database Connection BigQuery with Identity Federation additional scopes","description":"BigQuery connection using Identity Federation including additional scopes.","documentation":"","path":"5-connect-data-to-datasources\\Stores\\Relational Store\\Connection\\BigQuery\\IdentityFederationWithScopes","code":"###Connection\nRelationalDatabaseConnection connection::mySimpleConnection\n{\n store: store::Store;\n type: BigQuery;\n specification: BigQuery\n {\n projectId: 'proj1';\n defaultDataset: 'dataset1';\n };\n auth: GCPWorkloadIdentityFederation\n {\n serviceAccountEmail: 'name';\n additionalGcpScopes: [\n 'gcpScope',\n 'anotherGcpScope'\n ];\n };\n}\n"},{"title":"Relational Database Connection Databricks","description":"Examples of all valid Databricks connection specs","documentation":"","path":"5-connect-data-to-datasources\\Stores\\Relational Store\\Connection\\Databricks","code":"###Connection\nRelationalDatabaseConnection connection::mySimpleConnection\n{\n store: store::Store;\n type: Databricks;\n specification: Databricks\n {\n hostname: 'databricks.com';\n port: '443';\n protocol: 'https';\n httpPath: 'databricks/api/path';\n };\n auth: ApiToken\n {\n apiToken: 'databricks.api.token';\n };\n}"},{"title":"Relational Database Connection MemSQL","description":"Examples of all valid MemSQL connection specs","documentation":"","path":"5-connect-data-to-datasources\\Stores\\Relational Store\\Connection\\MemSQL","code":""},{"title":"Relational Database Connection Postgres","description":"Examples of all valid Postgres connection specs","documentation":"","path":"5-connect-data-to-datasources\\Stores\\Relational Store\\Connection\\Postgres","code":""},{"title":"Relational Database Connection Spanner","description":"Examples of all valid Spanner connection specs","documentation":"","path":"5-connect-data-to-datasources\\Stores\\Relational Store\\Connection\\Spanner","code":"###Connection\nRelationalDatabaseConnection connection::mySimpleConnection1\n{\n store: store::Store;\n type: Spanner;\n specification: Spanner\n {\n projectId: 'spanner-emulator-test-1';\n instanceId: 'test-instance-1';\n databaseId: 'test-db';\n proxyHost: 'localhost';\n proxyPort: 9010;\n };\n auth: GCPApplicationDefaultCredentials;\n}\n\nRelationalDatabaseConnection connection::mySimpleConnection2\n{\n store: store::Store;\n type: Spanner;\n specification: Spanner\n {\n projectId: 'spanner-emulator-test-1';\n instanceId: 'test-instance-1';\n databaseId: 'test-db';\n };\n auth: GCPApplicationDefaultCredentials;\n}\n\nRelationalDatabaseConnection connection::mySimpleConnection3\n{\n store: store::Store;\n type: Spanner;\n specification: Spanner\n {\n projectId: 'spanner-emulator-test-1';\n instanceId: 'test-instance-1';\n databaseId: 'test-db';\n };\n auth: DelegatedKerberos;\n}\n\nRelationalDatabaseConnection connection::mySimpleConnection4\n{\n store: store::Store;\n type: Spanner;\n specification: Spanner\n {\n projectId: 'spanner-emulator-test-1';\n instanceId: 'test-instance-1';\n databaseId: 'test-db';\n proxyHost: 'localhost';\n proxyPort: 9010;\n };\n auth: GCPWorkloadIdentityFederation\n {\n serviceAccountEmail: 'name';\n };\n}\n\nRelationalDatabaseConnection connection::mySimpleConnection5\n{\n store: store::Store;\n type: Spanner;\n specification: Spanner\n {\n projectId: 'spanner-emulator-test-1';\n instanceId: 'test-instance-1';\n databaseId: 'test-db';\n proxyHost: 'localhost';\n proxyPort: 9010;\n };\n auth: GCPWorkloadIdentityFederation\n {\n serviceAccountEmail: 'name';\n additionalGcpScopes: [\n 'gcpScope',\n 'anotherGcpScope'\n ];\n };\n}"},{"title":"Relational Database Connection SQL Server","description":"Examples of all valid SQL Server connection specs","documentation":"","path":"5-connect-data-to-datasources\\Stores\\Relational Store\\Connection\\SQL Server","code":""},{"title":"Relational Database Connection Trino","description":"Examples of all valid Trino connection specs","documentation":"","path":"5-connect-data-to-datasources\\Stores\\Relational Store\\Connection\\Trino","code":"###Connection\nRelationalDatabaseConnection connection::TrinoConnection\n{\n store: store::Store;\n type: Trino;\n specification: Trino\n {\n host: 'host';\n port: 1234;\n catalog: 'tpch';\n schema: 'tiny';\n clientTags: 'cg::vega';\n sslSpecification:\n {\n ssl: false;\n trustStorePathVaultReference: 'abc12cde';\n trustStorePasswordVaultReference: 'abc12cde';\n };\n };\n auth: TrinoDelegatedKerberos\n {\n kerberosUseCanonicalHostname: false;\n kerberosRemoteServiceName: 'HTTP';\n };\n}"},{"title":"Basic Relational Database Specification","description":"Example of database specification with no explicit schema or joins","documentation":"","path":"5-connect-data-to-datasources\\Stores\\Relational Store\\Database Specification\\Basic","code":"###Relational\nDatabase store::SimpleDB\n(\n // There is an implicit 'default' schema \n Table People\n (\n id INTEGER PRIMARY KEY,\n name VARCHAR(200),\n firm_id INTEGER\n )\n Table Firms\n (\n id INTEGER PRIMARY KEY,\n legal_name VARCHAR(200)\n )\n)\n"},{"title":"Relational Database Specification with Filter","description":"Example of database specification with Filter","documentation":"","path":"5-connect-data-to-datasources\\Stores\\Relational Store\\Database Specification\\Filter","code":"###Relational\nDatabase store::SimpleDB\n(\n // There is an implicit 'default' schema \n Table People\n (\n id INTEGER PRIMARY KEY,\n name VARCHAR(200),\n firm_id INTEGER\n )\n Table Firms\n (\n id INTEGER PRIMARY KEY,\n legal_name VARCHAR(200)\n )\n\n // Filters at the database level can be shared with several mappings\n Filter largePersonIds(People.id > 100)\n)\n"},{"title":"Basic Relational Database Specification with Includes","description":"Example of database specification with other Database definitions included","documentation":"","path":"5-connect-data-to-datasources\\Stores\\Relational Store\\Database Specification\\Include","code":"###Relational\nDatabase store::SimpleDB\n(\n include store::IncludedDB\n\n // Definitions in included DB are available here\n Table People\n (\n id INTEGER PRIMARY KEY,\n name VARCHAR(200),\n firm_id INTEGER\n )\n Table Firms\n (\n id INTEGER PRIMARY KEY,\n legal_name VARCHAR(200)\n )\n)\n\nDatabase store::IncludedDB\n(\n Table PeoplePart2\n (\n id INTEGER PRIMARY KEY,\n name VARCHAR(200),\n firm_id INTEGER\n )\n)"},{"title":"Relational Database Specification with Milestoning","description":"Example of database specification with Milestoning","documentation":"","path":"5-connect-data-to-datasources\\Stores\\Relational Store\\Database Specification\\Join\\Basic","code":"###Relational\nDatabase store::SimpleDB\n(\n Table People\n (\n id INTEGER PRIMARY KEY,\n name VARCHAR(200),\n firm_id INTEGER\n )\n Table Firms\n (\n id INTEGER PRIMARY KEY,\n legal_name VARCHAR(200)\n )\n\n Join PersonCompany(People.firm_id = Firms.id)\n // Joins can also be defined across schemas\n)\n"},{"title":"Relational Database Specification with Join placeholder","description":"Example of database specification with join placeholder.","documentation":"TODO: explain what this feature is useful for.","path":"5-connect-data-to-datasources\\Stores\\Relational Store\\Database Specification\\Join\\Self Join","code":"###Relational\nDatabase store::SimpleDB\n(\n Table People\n (\n id INTEGER PRIMARY KEY,\n name VARCHAR(200),\n firm_id INTEGER\n )\n Table Firms\n (\n id INTEGER PRIMARY KEY,\n legal_name VARCHAR(200)\n )\n\n Join PersonCompany(People.id = {target}.firm_id)\n)\n"},{"title":"Relational Database Specification with Bitemporal Milestoning","description":"Example of database specification with Bitemporal Milestoning.","documentation":"","path":"5-connect-data-to-datasources\\Stores\\Relational Store\\Database Specification\\Milestoning\\Bitemporal","code":"###Relational\nDatabase store::MilestonedDB\n(\n Table BiTemporalProductTable\n (\n milestoning\n (\n processing(PROCESSING_IN = in_z, PROCESSING_OUT = out_z, INFINITY_DATE = %9999-12-31T00:00:00.0000),\n business(BUS_FROM = from_z, BUS_THRU = thru_z, INFINITY_DATE = %9999-12-31T00:00:00.0000)\n )\n\n id INTEGER PRIMARY KEY,\n type VARCHAR(200),\n in_z DATE,\n out_z DATE,\n from_z DATE,\n thru_z DATE\n )\n)"},{"title":"Relational Database Specification with Business Milestoning","description":"Example of database specification with Business Milestoning.","documentation":"","path":"5-connect-data-to-datasources\\Stores\\Relational Store\\Database Specification\\Milestoning\\Business","code":"###Relational\nDatabase store::MilestonedDB\n(\n Table ProductTable\n (\n milestoning\n (\n // A subset of the following options can be used with the minimal being BUS_FROM and BUS_THRU\n business(BUS_FROM = from_z, BUS_THRU = thru_z, THRU_IS_INCLUSIVE = true, INFINITY_DATE = %9999-12-31T00:00:00.0000)\n )\n\n id INTEGER PRIMARY KEY,\n name VARCHAR(200) PRIMARY KEY,\n type VARCHAR(200),\n exchange VARCHAR(200),\n classificationSystemId INTEGER,\n referenceSystemName VARCHAR(200),\n externalReferenceSystemName VARCHAR(200),\n from_z DATE,\n thru_z DATE\n )\n Table ProductTableWithBusinessSnapshotMilestoning\n (\n milestoning\n (\n business(BUS_SNAPSHOT_DATE = snapshotDate)\n )\n\n id INTEGER PRIMARY KEY,\n name VARCHAR(200),\n type VARCHAR(200),\n snapshotDate DATE\n )\n)\n"},{"title":"Relational Database Specification with Processing Milestoning","description":"Example of database specification with Temporal Milestoning.","documentation":"","path":"5-connect-data-to-datasources\\Stores\\Relational Store\\Database Specification\\Milestoning\\Processing","code":"###Relational\nDatabase store::MilestonedDB\n(\n Table BiTemporalProductTableWithProcessingMilestoning\n (\n milestoning\n (\n // The minimal set of options is PROCESSING_IN and PROCESSING_OUT\n processing(PROCESSING_IN = in_z, PROCESSING_OUT = out_z, OUT_IS_INCLUSIVE = true, INFINITY_DATE = %9999-12-31T00:00:00.0000)\n )\n\n id INTEGER PRIMARY KEY,\n name VARCHAR(200),\n type VARCHAR(200),\n in_z DATE,\n out_z DATE\n )\n)\n"},{"title":"Relational Database Specification with explicit Schema","description":"Example of database specification with explicit schema","documentation":"","path":"5-connect-data-to-datasources\\Stores\\Relational Store\\Database Specification\\Schema","code":"###Relational\nDatabase store::SimpleDB\n(\n Schema SimpleSchema\n (\n Table People\n (\n id INTEGER PRIMARY KEY,\n name VARCHAR(200),\n firm_id INTEGER\n )\n Table Firms\n (\n id INTEGER PRIMARY KEY,\n legal_name VARCHAR(200)\n )\n )\n // Joins go outside the schema\n)\n"},{"title":"Relational Database Specification with Views","description":"Example of database specification with Views.","documentation":"Views are effectively transformations at the database level. They have the same syntax as Mappings but have a few different features.\nTODO: include a description on why views are required.","path":"5-connect-data-to-datasources\\Stores\\Relational Store\\Database Specification\\View","code":"###Relational\nDatabase store::SimpleDB\n(\n Schema SimpleSchema\n (\n Table People\n (\n id INTEGER PRIMARY KEY,\n name VARCHAR(200),\n firm_id INTEGER\n )\n Table Firms\n (\n id INTEGER PRIMARY KEY,\n legal_name VARCHAR(200)\n )\n\n View ImportantPeople\n (\n id: SimpleSchema.People.id PRIMARY KEY,\n name: SimpleSchema.People.name\n )\n )\n)\n"},{"title":"Relational Database Distinct Mapping","description":"A simple example of a mapping containing a distinct operator.","documentation":"","path":"5-connect-data-to-datasources\\Stores\\Relational Store\\Mapping\\Distinct","code":"###Mapping\nimport models::*;\nimport stores::*;\nMapping mapping::SimpleDistinctMapping\n(\n Person: Relational\n {\n ~distinct\n name: [SimpleDB]People.name\n }\n)\n\n\n###Pure\nClass models::Person\n{\n name: String[1];\n}\n\n\n###Relational\nDatabase stores::SimpleDB\n(\n Table People\n (\n id INTEGER PRIMARY KEY,\n name VARCHAR(100)\n )\n)\n"},{"title":"Relational Database Embedded Inline Mapping","description":"An example of an inline mapping.","documentation":"","path":"5-connect-data-to-datasources\\Stores\\Relational Store\\Mapping\\Embedded\\Inline","code":"###Mapping\nimport models::*;\nimport stores::*;\nMapping mapping::SimpleInlineMapping\n(\n Person[normalPerson]: Relational\n {\n name: [SimpleDB]People.name,\n address() Inline[USAddress],\n hobby\n (\n name: [SimpleDB]People.hobby_name\n )\n }\n Address[USAddress]: Relational\n {\n ~mainTable [SimpleDB]Addresses\n street_address: [SimpleDB]Addresses.street_address,\n zip: [SimpleDB]US_Zips.zip_code\n }\n)\n\n\n###Pure\nimport models::*;\nClass models::Person\n{\n name: String[1];\n address: Address[1];\n hobby: Hobby[1];\n}\n\nClass models::Hobby\n{\n name: String[1];\n}\n\nClass models::Address\n{\n street_address: String[1];\n zip: String[1];\n}\n\n\n###Relational\nDatabase stores::SimpleDB\n(\n Table People\n (\n id INTEGER PRIMARY KEY,\n name VARCHAR(200),\n hobby_name VARCHAR(100)\n )\n Table Addresses\n (\n street_address VARCHAR(200)\n )\n Table US_Zips\n (\n zip_code CHAR(5)\n )\n)\n"},{"title":"Relational Database Otherwise Mapping","description":"A simple example of a mapping containing the otherwise operator.","documentation":"","path":"5-connect-data-to-datasources\\Stores\\Relational Store\\Mapping\\Embedded\\Otherwise","code":"###Mapping\nimport models::*;\nimport stores::*;\nMapping mapping::SimpleOtherwiseMapping\n(\n Person: Relational\n {\n name: [SimpleDB]People.name,\n pet\n (\n name: [SimpleDB]People.pet_name\n ) Otherwise ([backupPetMapping]: [SimpleDB]@PetOwner)\n }\n Pet[backupPetMapping]: Relational\n {\n name: [SimpleDB]Pets.name\n }\n)\n\n\n###Pure\nimport models::*;\nClass models::Person\n{\n name: String[1];\n pet: Pet[1];\n}\n\nClass models::Pet\n{\n name: String[1];\n}\n\n\n###Relational\nDatabase stores::SimpleDB\n(\n Table People\n (\n id INTEGER PRIMARY KEY,\n name VARCHAR(200),\n pet_id INTEGER,\n pet_name VARCHAR(50)\n )\n Table Pets\n (\n id INTEGER PRIMARY KEY,\n name VARCHAR(50)\n )\n\n Join PetOwner(People.pet_id = Pets.id)\n)\n"},{"title":"Relational Database Mapping with Inheritance","description":"A simple example of a mapping that demonstrates inheritance through the extends keyword.","documentation":"","path":"5-connect-data-to-datasources\\Stores\\Relational Store\\Mapping\\Extends","code":"###Mapping\nimport models::*;\nimport stores::*;\nMapping mapping::SimpleInheritanceMapping\n(\n Person[basePerson]: Relational\n {\n name: [SimpleDB]People.name\n }\n PromotableWorker[promotableWorker] extends [basePerson]: Relational\n {\n available_promotion_titles: [SimpleDB]Promotions.title\n }\n)\n\n\n###Pure\nimport models::*;\nClass models::Person\n{\n name: String[1];\n}\n\nClass models::PromotableWorker\n{\n available_promotion_titles: String[1..*];\n}\n\n\n###Relational\nDatabase stores::SimpleDB\n(\n Table People\n (\n id INTEGER PRIMARY KEY,\n name VARCHAR(200)\n )\n Table Promotions\n (\n title VARCHAR(50)\n )\n)\n"},{"title":"Relational Database Filter Mapping","description":"A simple example of a mapping that uses a filter.","documentation":"","path":"5-connect-data-to-datasources\\Stores\\Relational Store\\Mapping\\Filter","code":"###Mapping\nimport models::*;\nimport stores::*;\nMapping mapping::SimpleFilterMapping\n(\n Person: Relational\n {\n ~filter [SimpleDB]longNameFilter\n name: [SimpleDB]People.name\n }\n)\n\n\n###Pure\nimport models::*;\nClass models::Person\n{\n name: String[1];\n}\n\n\n###Relational\nDatabase stores::SimpleDB\n(\n Table People\n (\n id INTEGER PRIMARY KEY,\n name VARCHAR(200)\n )\n\n Filter longNameFilter(length(People.name) >= 100)\n)\n"},{"title":"Relational Database GroupBy Mapping","description":"A simple example of a mapping using the groupBy operator.","documentation":"","path":"5-connect-data-to-datasources\\Stores\\Relational Store\\Mapping\\GroupBy","code":"###Mapping\nimport models::*;\nimport stores::*;\nMapping mapping::SimpleGroupByMapping\n(\n Person: Relational\n {\n ~groupBy\n (\n [SimpleDB]People.firm_id\n )\n name: [SimpleDB]People.name\n }\n)\n\n\n###Pure\nimport models::*;\nClass models::Person\n{\n name: String[1];\n}\n\nClass models::Firm\n{\n name: String[1];\n}\n\n\n###Relational\nDatabase stores::SimpleDB\n(\n Table People\n (\n id INTEGER PRIMARY KEY,\n name VARCHAR(200),\n firm_id INTEGER\n )\n Table Firms\n (\n id INTEGER PRIMARY KEY,\n name VARCHAR(200)\n )\n)\n"},{"title":"Relational Database Mapping with Includes","description":"An example of a Mapping with include statements.","documentation":"","path":"5-connect-data-to-datasources\\Stores\\Relational Store\\Mapping\\Include\\Basic","code":"###Mapping\nimport models::*;\nimport stores::*;\nimport mappings::*;\nMapping mappings::IncludeMapping\n(\n include mapping BaseMapping\n\n Person: Relational\n {\n name: [SimpleDB]People.name\n }\n)\n\nMapping mappings::BaseMapping\n(\n Firm: Relational\n {\n name: [SimpleDB]Firms.name\n }\n)\n\n\n###Pure\nimport models::*;\nClass models::Person\n{\n name: String[1];\n}\n\nClass models::Firm\n{\n name: String[1];\n}\n\n\n###Relational\nDatabase stores::SimpleDB\n(\n Table People\n (\n id INTEGER PRIMARY KEY,\n name VARCHAR(200),\n firm_id INTEGER\n )\n Table Firms\n (\n id INTEGER PRIMARY KEY,\n name VARCHAR(200)\n )\n\n Join FirmPerson(People.firm_id = Firms.id)\n)\n"},{"title":"Relational Database Mapping with Store Substitution","description":"An example of a Mapping using store substitution across mappings.","documentation":"Store substitution changes the store used in the included mapping.","path":"5-connect-data-to-datasources\\Stores\\Relational Store\\Mapping\\Include\\Store Substitution","code":"###Mapping\nimport models::*;\nimport stores::*;\nimport mappings::*;\nMapping mappings::IncludeSubstitutionMapping\n(\n include mapping BaseMapping[SimpleDB->ComplexDB]\n\n Person: Relational\n {\n name: [ComplexDB]People.name\n }\n)\n\nMapping mappings::BaseMapping\n(\n Firm: Relational\n {\n name: [SimpleDB]Firms.name\n }\n)\n\n\n###Pure\nimport models::*;\nClass models::Person\n{\n name: String[1];\n}\n\nClass models::Firm\n{\n name: String[1];\n}\n\n\n###Relational\nDatabase stores::SimpleDB\n(\n Table Firms\n (\n id INTEGER PRIMARY KEY,\n name VARCHAR(200)\n )\n)\n\nDatabase stores::ComplexDB\n(\n Table People\n (\n id INTEGER PRIMARY KEY,\n name VARCHAR(200)\n )\n Table Firms\n (\n id INTEGER PRIMARY KEY,\n name VARCHAR(200),\n firm_sector VARCHAR(50)\n )\n)"},{"title":"Relational Database Mapping with Joins","description":"A simple example of a mapping with a join.","documentation":"","path":"5-connect-data-to-datasources\\Stores\\Relational Store\\Mapping\\Joins\\Basic","code":"###Mapping\nimport models::*;\nimport stores::*;\nMapping mapping::SimpleJoinMapping\n(\n Person: Relational\n {\n name: [SimpleDB]People.name,\n firm: [SimpleDB]@FirmPerson,\n pet_name: [SimpleDB]@PersonPet | [SimpleDB]Pets.name\n }\n)\n\n\n###Pure\nimport models::*;\nClass models::Person\n{\n name: String[1];\n firm: Firm[1];\n pet_name: String[1];\n}\n\nClass models::Firm\n{\n name: String[1];\n}\n\nClass models::Pet\n{\n name: String[1];\n}\n\n\n###Relational\nDatabase stores::SimpleDB\n(\n Table People\n (\n id INTEGER PRIMARY KEY,\n name VARCHAR(200),\n firm_id INTEGER,\n pet_id INTEGER\n )\n Table Firms\n (\n id INTEGER PRIMARY KEY,\n name VARCHAR(200)\n )\n Table Pets\n (\n id INTEGER PRIMARY KEY,\n name VARCHAR(50)\n )\n\n Join FirmPerson(People.firm_id = Firms.id)\n Join PersonPet(People.pet_id = Pets.id)\n)\n"},{"title":"Relational Database Mapping with Chained Joins","description":"An example of a Mapping with Chained joins including setting join type.","documentation":"","path":"5-connect-data-to-datasources\\Stores\\Relational Store\\Mapping\\Joins\\Chained","code":"###Mapping\nimport models::*;\nimport stores::*;\nMapping mappings::ChainedJoinMapping\n(\n Person: Relational\n {\n name: [SimpleDB]People.name,\n firm: [SimpleDB]@FirmPerson,\n good_pet_name: [SimpleDB]@PersonPet > (INNER) [SimpleDB]@GoodPets | [SimpleDB]Pets.name\n }\n)\n\n\n###Pure\nimport models::*;\nClass models::Person\n{\n name: String[1];\n firm: Firm[1];\n good_pet_name: String[1];\n}\n\nClass models::Firm\n{\n name: String[1];\n}\n\nClass models::Pet\n{\n name: String[1];\n}\n\n\n###Relational\nDatabase stores::SimpleDB\n(\n Table People\n (\n id INTEGER PRIMARY KEY,\n name VARCHAR(200),\n firm_id INTEGER,\n pet_id INTEGER\n )\n Table Firms\n (\n id INTEGER PRIMARY KEY,\n name VARCHAR(200)\n )\n Table Pets\n (\n id INTEGER PRIMARY KEY,\n name VARCHAR(50)\n )\n Table GoodPets\n (\n id INTEGER PRIMARY KEY,\n name VARCHAR(50)\n )\n\n Join FirmPerson(People.firm_id = Firms.id)\n Join PersonPet(People.pet_id = Pets.id)\n Join GoodPets(Pets.id = GoodPets.id)\n)\n"},{"title":"Relational Database Mapping with Scoped Block","description":"An example of a Mapping using a scoped block for readability.","documentation":"","path":"5-connect-data-to-datasources\\Stores\\Relational Store\\Mapping\\Scope","code":"###Mapping\nimport stores::*;\nimport models::*;\nMapping mappings::SimpleScopedMapping\n(\n Person: Relational\n {\n // scope([SimpleDB]SimpleSchema.People) can be used to extract the prefix\n // it is just syntactic sugar and will be string replaced.\n name: [SimpleDB]SimpleSchema.People.name\n }\n)\n\n\n###Pure\nClass models::Person\n{\n name: String[1];\n}\n\n\n###Relational\nDatabase stores::SimpleDB\n(\n Schema SimpleSchema\n (\n Table People\n (\n id INTEGER PRIMARY KEY,\n name VARCHAR(200)\n )\n )\n)"},{"title":"Service Store","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources\\Stores\\Service Store","code":""},{"title":"Function Activators","documentation":"TODO: Some dummy description","path":"8-create-and-manage-data-model-apis\\Function Activators","code":""}] \ No newline at end of file +[{"title":"Avro Binding Schema ID","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources/External Formats/Avro/Binding/Schema ID","code":""},{"title":"Avro Binding Schema Set","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources/External Formats/Avro/Binding/Schema Set","code":""},{"title":"Avro Externalize","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources/External Formats/Avro/Externalize","code":""},{"title":"Avro Functions","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources/External Formats/Avro/Functions","code":""},{"title":"Avro Internalize","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources/External Formats/Avro/Internalize","code":""},{"title":"Avro Model Generator","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources/External Formats/Avro/Model Generator/Model include/exclude","code":""},{"title":"Daml Binding Schema ID","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources/External Formats/Daml/Binding/Schema ID","code":""},{"title":"Daml Binding Schema Set","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources/External Formats/Daml/Binding/Schema Set","code":""},{"title":"Daml Externalize","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources/External Formats/Daml/Externalize","code":""},{"title":"Daml Functions","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources/External Formats/Daml/Functions","code":""},{"title":"Daml Internalize","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources/External Formats/Daml/Internalize","code":""},{"title":"Daml Model Generator","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources/External Formats/Daml/Model Generator/Model include/exclude","code":""},{"title":"JSON Binding Schema ID","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources/External Formats/JSONSchema/Binding/Schema ID","code":""},{"title":"JSON Binding Schema Set","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources/External Formats/JSONSchema/Binding/Schema Set","code":""},{"title":"JSON Externalize","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources/External Formats/JSONSchema/Externalize","code":""},{"title":"Json Functions","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources/External Formats/JSONSchema/Functions","code":""},{"title":"JSON Internalize","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources/External Formats/JSONSchema/Internalize","code":""},{"title":"JSON Model Generator","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources/External Formats/JSONSchema/Model Generator/Model include/exclude","code":""},{"title":"Protobuf Binding Schema ID","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources/External Formats/Protobuf/Binding/Schema ID","code":""},{"title":"Protobuf Binding Schema Set","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources/External Formats/Protobuf/Binding/Schema Set","code":""},{"title":"Protobuf Externalize","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources/External Formats/Protobuf/Externalize","code":""},{"title":"Protobuf Functions","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources/External Formats/Protobuf/Functions","code":""},{"title":"Protobuf Internalize","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources/External Formats/Protobuf/Internalize","code":""},{"title":"Protobuf Model Generator","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources/External Formats/Protobuf/Model Generator/Model include/exclude","code":""},{"title":"Xml Binding Schema ID","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources/External Formats/XML/Binding/Schema ID","code":""},{"title":"Xml Binding Schema Set","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources/External Formats/XML/Binding/Schema Set","code":""},{"title":"Xml Externalize","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources/External Formats/XML/Externalize","code":""},{"title":"Xml Functions","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources/External Formats/XML/Functions","code":""},{"title":"Xml Internalize","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources/External Formats/XML/Internalize","code":""},{"title":"Xml Model Generator","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources/External Formats/XML/Model Generator/Model include/exclude","code":""},{"title":"Association - Embedded","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources/Stores/Model Store/association/embedded","code":""},{"title":"Association - Inheritance","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources/Stores/Model Store/association/inheritance","code":""},{"title":"Association - ClassMappingByClass","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources/Stores/Model Store/classMappingByClass","code":""},{"title":"Association - ClassMappingFilterWithInnerJoin","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources/Stores/Model Store/classMappingFilterWithInnerJoin","code":""},{"title":"DataType","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources/Stores/Model Store/dataType","code":""},{"title":"Dates - datetime","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources/Stores/Model Store/dates/datetime","code":""},{"title":"Dates - strictdate","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources/Stores/Model Store/dates/strictdate","code":""},{"title":"Distinct","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources/Stores/Model Store/distinct","code":""},{"title":"Dynajoin","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources/Stores/Model Store/dynajoin","code":""},{"title":"Embedded - Advanced - Inline - Nested","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources/Stores/Model Store/embedded/inline/nested","code":""},{"title":"Embedded - Advanced - Inline - targetId","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources/Stores/Model Store/embedded/inline/targetId","code":""},{"title":"Enumeration","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources/Stores/Model Store/enumeration","code":""},{"title":"Extend - all","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources/Stores/Model Store/extend/all","code":""},{"title":"Extend - distinct","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources/Stores/Model Store/extend/distinct","code":""},{"title":"Extend - embeddedPropertyMapping","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources/Stores/Model Store/extend/embeddedPropertyMapping","code":""},{"title":"Extend - filter","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources/Stores/Model Store/extend/filter","code":""},{"title":"Extend - groupBy","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources/Stores/Model Store/extend/groupBy","code":""},{"title":"Extent - inlineEmbeddedPropertyMapping","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources/Stores/Model Store/extend/inlineEmbeddedPropertyMapping","code":""},{"title":"Extend - mainTable","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources/Stores/Model Store/extend/mainTable","code":""},{"title":"Extend - model","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources/Stores/Model Store/extend/model","code":""},{"title":"Extend - primaryKey","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources/Stores/Model Store/extend/primaryKey","code":""},{"title":"Extend - propertyMapping","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources/Stores/Model Store/extend/propertyMapping","code":""},{"title":"Extend - store","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources/Stores/Model Store/extend/store","code":""},{"title":"Extend - storeSubstitution","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources/Stores/Model Store/extend/storeSubstitution","code":""},{"title":"Extend - Union","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources/Stores/Model Store/extend/union","code":""},{"title":"Extend - Filter","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources/Stores/Model Store/filter","code":""},{"title":"GroupBy","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources/Stores/Model Store/groupBy","code":""},{"title":"In","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources/Stores/Model Store/in","code":""},{"title":"Include","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources/Stores/Model Store/include","code":""},{"title":"Inheritance - Cross","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources/Stores/Model Store/inheritance/cross","code":""},{"title":"Inheritance - Relational - multiJoins","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources/Stores/Model Store/inheritance/relational/multiJoins","code":""},{"title":"Inheritance - Relational - selfJoin","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources/Stores/Model Store/inheritance/relational/selfJoin","code":""},{"title":"Inheritance - Relational - union","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources/Stores/Model Store/inheritance/relational/union","code":""},{"title":"Innerjoin - Isolation","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources/Stores/Model Store/innerJoin/isolation","code":""},{"title":"Join","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources/Stores/Model Store/join","code":""},{"title":"Merge","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources/Stores/Model Store/merge","code":""},{"title":"Multigrain","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources/Stores/Model Store/multigrain","code":""},{"title":"Propertyfunc - simple","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources/Stores/Model Store/propertyfunc/simple","code":""},{"title":"Propertyfunc - withjoin","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources/Stores/Model Store/propertyfunc/withjoin","code":""},{"title":"SelfJoin","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources/Stores/Model Store/selfJoin","code":""},{"title":"SqlFunction","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources/Stores/Model Store/sqlFunction","code":""},{"title":"Subtype","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources/Stores/Model Store/subtype","code":""},{"title":"Tree","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources/Stores/Model Store/tree","code":""},{"title":"Union - Extend","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources/Stores/Model Store/union/extend","code":""},{"title":"Union - MultipleChainedJoins","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources/Stores/Model Store/union/multipleChainedJoins","code":""},{"title":"Union - Optimized","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources/Stores/Model Store/union/optimized","code":""},{"title":"Union - Partial","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources/Stores/Model Store/union/partial","code":""},{"title":"Union - PartialForeignKeyUsage","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources/Stores/Model Store/union/partialForeignKeyUsage","code":""},{"title":"Union - SqlQueryMerging","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources/Stores/Model Store/union/sqlQueryMerging","code":""},{"title":"Relational Database Connection BigQuery with Default Credentials","description":"BigQuery connection using only default credentials. Does not include proxy.","documentation":"","path":"5-connect-data-to-datasources/Stores/Relational Store/Connection/BigQuery/DefaultCredentials","code":"###Connection\nRelationalDatabaseConnection connection::mySimpleConnection\n{\n store: store::Store;\n type: BigQuery;\n specification: BigQuery\n {\n projectId: 'proj1';\n defaultDataset: 'dataset1';\n };\n auth: GCPApplicationDefaultCredentials;\n}\n"},{"title":"Relational Database Connection BigQuery with Default Credentials and Proxy","description":"BigQuery connection using only default credentials. Does include proxy.","documentation":"","path":"5-connect-data-to-datasources/Stores/Relational Store/Connection/BigQuery/DefaultCredentialsWithProxy","code":"###Connection\nRelationalDatabaseConnection connection::mySimpleConnection\n{\n store: store::Store;\n type: BigQuery;\n specification: BigQuery\n {\n projectId: 'proj1';\n defaultDataset: 'dataset1';\n proxyHost: 'proxyHost1';\n proxyPort: 'proxyPort1';\n };\n auth: GCPApplicationDefaultCredentials;\n}\n"},{"title":"Relational Database Connection BigQuery with Identity Federation","description":"BigQuery connection using Identity Federation.","documentation":"","path":"5-connect-data-to-datasources/Stores/Relational Store/Connection/BigQuery/IdentityFederation","code":"###Connection\nRelationalDatabaseConnection connection::mySimpleConnection\n{\n store: store::Store;\n type: BigQuery;\n specification: BigQuery\n {\n projectId: 'proj1';\n defaultDataset: 'dataset1';\n };\n auth: GCPWorkloadIdentityFederation\n {\n serviceAccountEmail: 'name';\n };\n}\n"},{"title":"Relational Database Connection BigQuery with Identity Federation additional scopes","description":"BigQuery connection using Identity Federation including additional scopes.","documentation":"","path":"5-connect-data-to-datasources/Stores/Relational Store/Connection/BigQuery/IdentityFederationWithScopes","code":"###Connection\nRelationalDatabaseConnection connection::mySimpleConnection\n{\n store: store::Store;\n type: BigQuery;\n specification: BigQuery\n {\n projectId: 'proj1';\n defaultDataset: 'dataset1';\n };\n auth: GCPWorkloadIdentityFederation\n {\n serviceAccountEmail: 'name';\n additionalGcpScopes: [\n 'gcpScope',\n 'anotherGcpScope'\n ];\n };\n}\n"},{"title":"Relational Database Connection Databricks","description":"Examples of all valid Databricks connection specs","documentation":"","path":"5-connect-data-to-datasources/Stores/Relational Store/Connection/Databricks","code":"###Connection\nRelationalDatabaseConnection connection::mySimpleConnection\n{\n store: store::Store;\n type: Databricks;\n specification: Databricks\n {\n hostname: 'databricks.com';\n port: '443';\n protocol: 'https';\n httpPath: 'databricks/api/path';\n };\n auth: ApiToken\n {\n apiToken: 'databricks.api.token';\n };\n}"},{"title":"Relational Database Connection MemSQL","description":"Examples of all valid MemSQL connection specs","documentation":"","path":"5-connect-data-to-datasources/Stores/Relational Store/Connection/MemSQL","code":""},{"title":"Relational Database Connection Postgres","description":"Examples of all valid Postgres connection specs","documentation":"","path":"5-connect-data-to-datasources/Stores/Relational Store/Connection/Postgres","code":""},{"title":"Relational Database Connection SQL Server","description":"Examples of all valid SQL Server connection specs","documentation":"","path":"5-connect-data-to-datasources/Stores/Relational Store/Connection/SQL Server","code":""},{"title":"Relational Database Connection Spanner","description":"Examples of all valid Spanner connection specs","documentation":"","path":"5-connect-data-to-datasources/Stores/Relational Store/Connection/Spanner","code":"###Connection\nRelationalDatabaseConnection connection::mySimpleConnection1\n{\n store: store::Store;\n type: Spanner;\n specification: Spanner\n {\n projectId: 'spanner-emulator-test-1';\n instanceId: 'test-instance-1';\n databaseId: 'test-db';\n proxyHost: 'localhost';\n proxyPort: 9010;\n };\n auth: GCPApplicationDefaultCredentials;\n}\n\nRelationalDatabaseConnection connection::mySimpleConnection2\n{\n store: store::Store;\n type: Spanner;\n specification: Spanner\n {\n projectId: 'spanner-emulator-test-1';\n instanceId: 'test-instance-1';\n databaseId: 'test-db';\n };\n auth: GCPApplicationDefaultCredentials;\n}\n\nRelationalDatabaseConnection connection::mySimpleConnection3\n{\n store: store::Store;\n type: Spanner;\n specification: Spanner\n {\n projectId: 'spanner-emulator-test-1';\n instanceId: 'test-instance-1';\n databaseId: 'test-db';\n };\n auth: DelegatedKerberos;\n}\n\nRelationalDatabaseConnection connection::mySimpleConnection4\n{\n store: store::Store;\n type: Spanner;\n specification: Spanner\n {\n projectId: 'spanner-emulator-test-1';\n instanceId: 'test-instance-1';\n databaseId: 'test-db';\n proxyHost: 'localhost';\n proxyPort: 9010;\n };\n auth: GCPWorkloadIdentityFederation\n {\n serviceAccountEmail: 'name';\n };\n}\n\nRelationalDatabaseConnection connection::mySimpleConnection5\n{\n store: store::Store;\n type: Spanner;\n specification: Spanner\n {\n projectId: 'spanner-emulator-test-1';\n instanceId: 'test-instance-1';\n databaseId: 'test-db';\n proxyHost: 'localhost';\n proxyPort: 9010;\n };\n auth: GCPWorkloadIdentityFederation\n {\n serviceAccountEmail: 'name';\n additionalGcpScopes: [\n 'gcpScope',\n 'anotherGcpScope'\n ];\n };\n}"},{"title":"Relational Database Connection Trino","description":"Examples of all valid Trino connection specs","documentation":"","path":"5-connect-data-to-datasources/Stores/Relational Store/Connection/Trino","code":"###Connection\nRelationalDatabaseConnection connection::TrinoConnection\n{\n store: store::Store;\n type: Trino;\n specification: Trino\n {\n host: 'host';\n port: 1234;\n catalog: 'tpch';\n schema: 'tiny';\n clientTags: 'cg::vega';\n sslSpecification:\n {\n ssl: false;\n trustStorePathVaultReference: 'abc12cde';\n trustStorePasswordVaultReference: 'abc12cde';\n };\n };\n auth: TrinoDelegatedKerberos\n {\n kerberosUseCanonicalHostname: false;\n kerberosRemoteServiceName: 'HTTP';\n };\n}"},{"title":"Basic Relational Database Specification","description":"Example of database specification with no explicit schema or joins","documentation":"","path":"5-connect-data-to-datasources/Stores/Relational Store/Database Specification/Basic","code":"###Relational\nDatabase store::SimpleDB\n(\n // There is an implicit 'default' schema \n Table People\n (\n id INTEGER PRIMARY KEY,\n name VARCHAR(200),\n firm_id INTEGER\n )\n Table Firms\n (\n id INTEGER PRIMARY KEY,\n legal_name VARCHAR(200)\n )\n)\n"},{"title":"Relational Database Specification with Filter","description":"Example of database specification with Filter","documentation":"","path":"5-connect-data-to-datasources/Stores/Relational Store/Database Specification/Filter","code":"###Relational\nDatabase store::SimpleDB\n(\n // There is an implicit 'default' schema \n Table People\n (\n id INTEGER PRIMARY KEY,\n name VARCHAR(200),\n firm_id INTEGER\n )\n Table Firms\n (\n id INTEGER PRIMARY KEY,\n legal_name VARCHAR(200)\n )\n\n // Filters at the database level can be shared with several mappings\n Filter largePersonIds(People.id > 100)\n)\n"},{"title":"Basic Relational Database Specification with Includes","description":"Example of database specification with other Database definitions included","documentation":"","path":"5-connect-data-to-datasources/Stores/Relational Store/Database Specification/Include","code":"###Relational\nDatabase store::SimpleDB\n(\n include store::IncludedDB\n\n // Definitions in included DB are available here\n Table People\n (\n id INTEGER PRIMARY KEY,\n name VARCHAR(200),\n firm_id INTEGER\n )\n Table Firms\n (\n id INTEGER PRIMARY KEY,\n legal_name VARCHAR(200)\n )\n)\n\nDatabase store::IncludedDB\n(\n Table PeoplePart2\n (\n id INTEGER PRIMARY KEY,\n name VARCHAR(200),\n firm_id INTEGER\n )\n)"},{"title":"Relational Database Specification with Milestoning","description":"Example of database specification with Milestoning","documentation":"","path":"5-connect-data-to-datasources/Stores/Relational Store/Database Specification/Join/Basic","code":"###Relational\nDatabase store::SimpleDB\n(\n Table People\n (\n id INTEGER PRIMARY KEY,\n name VARCHAR(200),\n firm_id INTEGER\n )\n Table Firms\n (\n id INTEGER PRIMARY KEY,\n legal_name VARCHAR(200)\n )\n\n Join PersonCompany(People.firm_id = Firms.id)\n // Joins can also be defined across schemas\n)\n"},{"title":"Relational Database Specification with Join placeholder","description":"Example of database specification with join placeholder.","documentation":"TODO: explain what this feature is useful for.","path":"5-connect-data-to-datasources/Stores/Relational Store/Database Specification/Join/Self Join","code":"###Relational\nDatabase store::SimpleDB\n(\n Table People\n (\n id INTEGER PRIMARY KEY,\n name VARCHAR(200),\n firm_id INTEGER\n )\n Table Firms\n (\n id INTEGER PRIMARY KEY,\n legal_name VARCHAR(200)\n )\n\n Join PersonCompany(People.id = {target}.firm_id)\n)\n"},{"title":"Relational Database Specification with Bitemporal Milestoning","description":"Example of database specification with Bitemporal Milestoning.","documentation":"","path":"5-connect-data-to-datasources/Stores/Relational Store/Database Specification/Milestoning/Bitemporal","code":"###Relational\nDatabase store::MilestonedDB\n(\n Table BiTemporalProductTable\n (\n milestoning\n (\n processing(PROCESSING_IN = in_z, PROCESSING_OUT = out_z, INFINITY_DATE = %9999-12-31T00:00:00.0000),\n business(BUS_FROM = from_z, BUS_THRU = thru_z, INFINITY_DATE = %9999-12-31T00:00:00.0000)\n )\n\n id INTEGER PRIMARY KEY,\n type VARCHAR(200),\n in_z DATE,\n out_z DATE,\n from_z DATE,\n thru_z DATE\n )\n)"},{"title":"Relational Database Specification with Business Milestoning","description":"Example of database specification with Business Milestoning.","documentation":"","path":"5-connect-data-to-datasources/Stores/Relational Store/Database Specification/Milestoning/Business","code":"###Relational\nDatabase store::MilestonedDB\n(\n Table ProductTable\n (\n milestoning\n (\n // A subset of the following options can be used with the minimal being BUS_FROM and BUS_THRU\n business(BUS_FROM = from_z, BUS_THRU = thru_z, THRU_IS_INCLUSIVE = true, INFINITY_DATE = %9999-12-31T00:00:00.0000)\n )\n\n id INTEGER PRIMARY KEY,\n name VARCHAR(200) PRIMARY KEY,\n type VARCHAR(200),\n exchange VARCHAR(200),\n classificationSystemId INTEGER,\n referenceSystemName VARCHAR(200),\n externalReferenceSystemName VARCHAR(200),\n from_z DATE,\n thru_z DATE\n )\n Table ProductTableWithBusinessSnapshotMilestoning\n (\n milestoning\n (\n business(BUS_SNAPSHOT_DATE = snapshotDate)\n )\n\n id INTEGER PRIMARY KEY,\n name VARCHAR(200),\n type VARCHAR(200),\n snapshotDate DATE\n )\n)\n"},{"title":"Relational Database Specification with Processing Milestoning","description":"Example of database specification with Temporal Milestoning.","documentation":"","path":"5-connect-data-to-datasources/Stores/Relational Store/Database Specification/Milestoning/Processing","code":"###Relational\nDatabase store::MilestonedDB\n(\n Table BiTemporalProductTableWithProcessingMilestoning\n (\n milestoning\n (\n // The minimal set of options is PROCESSING_IN and PROCESSING_OUT\n processing(PROCESSING_IN = in_z, PROCESSING_OUT = out_z, OUT_IS_INCLUSIVE = true, INFINITY_DATE = %9999-12-31T00:00:00.0000)\n )\n\n id INTEGER PRIMARY KEY,\n name VARCHAR(200),\n type VARCHAR(200),\n in_z DATE,\n out_z DATE\n )\n)\n"},{"title":"Relational Database Specification with explicit Schema","description":"Example of database specification with explicit schema","documentation":"","path":"5-connect-data-to-datasources/Stores/Relational Store/Database Specification/Schema","code":"###Relational\nDatabase store::SimpleDB\n(\n Schema SimpleSchema\n (\n Table People\n (\n id INTEGER PRIMARY KEY,\n name VARCHAR(200),\n firm_id INTEGER\n )\n Table Firms\n (\n id INTEGER PRIMARY KEY,\n legal_name VARCHAR(200)\n )\n )\n // Joins go outside the schema\n)\n"},{"title":"Relational Database Specification with Views","description":"Example of database specification with Views.","documentation":"Views are effectively transformations at the database level. They have the same syntax as Mappings but have a few different features.\nTODO: include a description on why views are required.","path":"5-connect-data-to-datasources/Stores/Relational Store/Database Specification/View","code":"###Relational\nDatabase store::SimpleDB\n(\n Schema SimpleSchema\n (\n Table People\n (\n id INTEGER PRIMARY KEY,\n name VARCHAR(200),\n firm_id INTEGER\n )\n Table Firms\n (\n id INTEGER PRIMARY KEY,\n legal_name VARCHAR(200)\n )\n\n View ImportantPeople\n (\n id: SimpleSchema.People.id PRIMARY KEY,\n name: SimpleSchema.People.name\n )\n )\n)\n"},{"title":"Relational Database Distinct Mapping","description":"A simple example of a mapping containing a distinct operator.","documentation":"","path":"5-connect-data-to-datasources/Stores/Relational Store/Mapping/Distinct","code":"###Mapping\nimport models::*;\nimport stores::*;\nMapping mapping::SimpleDistinctMapping\n(\n Person: Relational\n {\n ~distinct\n name: [SimpleDB]People.name\n }\n)\n\n\n###Pure\nClass models::Person\n{\n name: String[1];\n}\n\n\n###Relational\nDatabase stores::SimpleDB\n(\n Table People\n (\n id INTEGER PRIMARY KEY,\n name VARCHAR(100)\n )\n)\n"},{"title":"Relational Database Embedded Inline Mapping","description":"An example of an inline mapping.","documentation":"","path":"5-connect-data-to-datasources/Stores/Relational Store/Mapping/Embedded/Inline","code":"###Mapping\nimport models::*;\nimport stores::*;\nMapping mapping::SimpleInlineMapping\n(\n Person[normalPerson]: Relational\n {\n name: [SimpleDB]People.name,\n address() Inline[USAddress],\n hobby\n (\n name: [SimpleDB]People.hobby_name\n )\n }\n Address[USAddress]: Relational\n {\n ~mainTable [SimpleDB]Addresses\n street_address: [SimpleDB]Addresses.street_address,\n zip: [SimpleDB]US_Zips.zip_code\n }\n)\n\n\n###Pure\nimport models::*;\nClass models::Person\n{\n name: String[1];\n address: Address[1];\n hobby: Hobby[1];\n}\n\nClass models::Hobby\n{\n name: String[1];\n}\n\nClass models::Address\n{\n street_address: String[1];\n zip: String[1];\n}\n\n\n###Relational\nDatabase stores::SimpleDB\n(\n Table People\n (\n id INTEGER PRIMARY KEY,\n name VARCHAR(200),\n hobby_name VARCHAR(100)\n )\n Table Addresses\n (\n street_address VARCHAR(200)\n )\n Table US_Zips\n (\n zip_code CHAR(5)\n )\n)\n"},{"title":"Relational Database Otherwise Mapping","description":"A simple example of a mapping containing the otherwise operator.","documentation":"","path":"5-connect-data-to-datasources/Stores/Relational Store/Mapping/Embedded/Otherwise","code":"###Mapping\nimport models::*;\nimport stores::*;\nMapping mapping::SimpleOtherwiseMapping\n(\n Person: Relational\n {\n name: [SimpleDB]People.name,\n pet\n (\n name: [SimpleDB]People.pet_name\n ) Otherwise ([backupPetMapping]: [SimpleDB]@PetOwner)\n }\n Pet[backupPetMapping]: Relational\n {\n name: [SimpleDB]Pets.name\n }\n)\n\n\n###Pure\nimport models::*;\nClass models::Person\n{\n name: String[1];\n pet: Pet[1];\n}\n\nClass models::Pet\n{\n name: String[1];\n}\n\n\n###Relational\nDatabase stores::SimpleDB\n(\n Table People\n (\n id INTEGER PRIMARY KEY,\n name VARCHAR(200),\n pet_id INTEGER,\n pet_name VARCHAR(50)\n )\n Table Pets\n (\n id INTEGER PRIMARY KEY,\n name VARCHAR(50)\n )\n\n Join PetOwner(People.pet_id = Pets.id)\n)\n"},{"title":"Relational Database Mapping with Inheritance","description":"A simple example of a mapping that demonstrates inheritance through the extends keyword.","documentation":"","path":"5-connect-data-to-datasources/Stores/Relational Store/Mapping/Extends","code":"###Mapping\nimport models::*;\nimport stores::*;\nMapping mapping::SimpleInheritanceMapping\n(\n Person[basePerson]: Relational\n {\n name: [SimpleDB]People.name\n }\n PromotableWorker[promotableWorker] extends [basePerson]: Relational\n {\n available_promotion_titles: [SimpleDB]Promotions.title\n }\n)\n\n\n###Pure\nimport models::*;\nClass models::Person\n{\n name: String[1];\n}\n\nClass models::PromotableWorker\n{\n available_promotion_titles: String[1..*];\n}\n\n\n###Relational\nDatabase stores::SimpleDB\n(\n Table People\n (\n id INTEGER PRIMARY KEY,\n name VARCHAR(200)\n )\n Table Promotions\n (\n title VARCHAR(50)\n )\n)\n"},{"title":"Relational Database Filter Mapping","description":"A simple example of a mapping that uses a filter.","documentation":"","path":"5-connect-data-to-datasources/Stores/Relational Store/Mapping/Filter","code":"###Mapping\nimport models::*;\nimport stores::*;\nMapping mapping::SimpleFilterMapping\n(\n Person: Relational\n {\n ~filter [SimpleDB]longNameFilter\n name: [SimpleDB]People.name\n }\n)\n\n\n###Pure\nimport models::*;\nClass models::Person\n{\n name: String[1];\n}\n\n\n###Relational\nDatabase stores::SimpleDB\n(\n Table People\n (\n id INTEGER PRIMARY KEY,\n name VARCHAR(200)\n )\n\n Filter longNameFilter(length(People.name) >= 100)\n)\n"},{"title":"Relational Database GroupBy Mapping","description":"A simple example of a mapping using the groupBy operator.","documentation":"","path":"5-connect-data-to-datasources/Stores/Relational Store/Mapping/GroupBy","code":"###Mapping\nimport models::*;\nimport stores::*;\nMapping mapping::SimpleGroupByMapping\n(\n Person: Relational\n {\n ~groupBy\n (\n [SimpleDB]People.firm_id\n )\n name: [SimpleDB]People.name\n }\n)\n\n\n###Pure\nimport models::*;\nClass models::Person\n{\n name: String[1];\n}\n\nClass models::Firm\n{\n name: String[1];\n}\n\n\n###Relational\nDatabase stores::SimpleDB\n(\n Table People\n (\n id INTEGER PRIMARY KEY,\n name VARCHAR(200),\n firm_id INTEGER\n )\n Table Firms\n (\n id INTEGER PRIMARY KEY,\n name VARCHAR(200)\n )\n)\n"},{"title":"Relational Database Mapping with Includes","description":"An example of a Mapping with include statements.","documentation":"","path":"5-connect-data-to-datasources/Stores/Relational Store/Mapping/Include/Basic","code":"###Mapping\nimport models::*;\nimport stores::*;\nimport mappings::*;\nMapping mappings::IncludeMapping\n(\n include mapping BaseMapping\n\n Person: Relational\n {\n name: [SimpleDB]People.name\n }\n)\n\nMapping mappings::BaseMapping\n(\n Firm: Relational\n {\n name: [SimpleDB]Firms.name\n }\n)\n\n\n###Pure\nimport models::*;\nClass models::Person\n{\n name: String[1];\n}\n\nClass models::Firm\n{\n name: String[1];\n}\n\n\n###Relational\nDatabase stores::SimpleDB\n(\n Table People\n (\n id INTEGER PRIMARY KEY,\n name VARCHAR(200),\n firm_id INTEGER\n )\n Table Firms\n (\n id INTEGER PRIMARY KEY,\n name VARCHAR(200)\n )\n\n Join FirmPerson(People.firm_id = Firms.id)\n)\n"},{"title":"Relational Database Mapping with Store Substitution","description":"An example of a Mapping using store substitution across mappings.","documentation":"Store substitution changes the store used in the included mapping.","path":"5-connect-data-to-datasources/Stores/Relational Store/Mapping/Include/Store Substitution","code":"###Mapping\nimport models::*;\nimport stores::*;\nimport mappings::*;\nMapping mappings::IncludeSubstitutionMapping\n(\n include mapping BaseMapping[SimpleDB->ComplexDB]\n\n Person: Relational\n {\n name: [ComplexDB]People.name\n }\n)\n\nMapping mappings::BaseMapping\n(\n Firm: Relational\n {\n name: [SimpleDB]Firms.name\n }\n)\n\n\n###Pure\nimport models::*;\nClass models::Person\n{\n name: String[1];\n}\n\nClass models::Firm\n{\n name: String[1];\n}\n\n\n###Relational\nDatabase stores::SimpleDB\n(\n Table Firms\n (\n id INTEGER PRIMARY KEY,\n name VARCHAR(200)\n )\n)\n\nDatabase stores::ComplexDB\n(\n Table People\n (\n id INTEGER PRIMARY KEY,\n name VARCHAR(200)\n )\n Table Firms\n (\n id INTEGER PRIMARY KEY,\n name VARCHAR(200),\n firm_sector VARCHAR(50)\n )\n)"},{"title":"Relational Database Mapping with Joins","description":"A simple example of a mapping with a join.","documentation":"","path":"5-connect-data-to-datasources/Stores/Relational Store/Mapping/Joins/Basic","code":"###Mapping\nimport models::*;\nimport stores::*;\nMapping mapping::SimpleJoinMapping\n(\n Person: Relational\n {\n name: [SimpleDB]People.name,\n firm: [SimpleDB]@FirmPerson,\n pet_name: [SimpleDB]@PersonPet | [SimpleDB]Pets.name\n }\n)\n\n\n###Pure\nimport models::*;\nClass models::Person\n{\n name: String[1];\n firm: Firm[1];\n pet_name: String[1];\n}\n\nClass models::Firm\n{\n name: String[1];\n}\n\nClass models::Pet\n{\n name: String[1];\n}\n\n\n###Relational\nDatabase stores::SimpleDB\n(\n Table People\n (\n id INTEGER PRIMARY KEY,\n name VARCHAR(200),\n firm_id INTEGER,\n pet_id INTEGER\n )\n Table Firms\n (\n id INTEGER PRIMARY KEY,\n name VARCHAR(200)\n )\n Table Pets\n (\n id INTEGER PRIMARY KEY,\n name VARCHAR(50)\n )\n\n Join FirmPerson(People.firm_id = Firms.id)\n Join PersonPet(People.pet_id = Pets.id)\n)\n"},{"title":"Relational Database Mapping with Chained Joins","description":"An example of a Mapping with Chained joins including setting join type.","documentation":"","path":"5-connect-data-to-datasources/Stores/Relational Store/Mapping/Joins/Chained","code":"###Mapping\nimport models::*;\nimport stores::*;\nMapping mappings::ChainedJoinMapping\n(\n Person: Relational\n {\n name: [SimpleDB]People.name,\n firm: [SimpleDB]@FirmPerson,\n good_pet_name: [SimpleDB]@PersonPet > (INNER) [SimpleDB]@GoodPets | [SimpleDB]Pets.name\n }\n)\n\n\n###Pure\nimport models::*;\nClass models::Person\n{\n name: String[1];\n firm: Firm[1];\n good_pet_name: String[1];\n}\n\nClass models::Firm\n{\n name: String[1];\n}\n\nClass models::Pet\n{\n name: String[1];\n}\n\n\n###Relational\nDatabase stores::SimpleDB\n(\n Table People\n (\n id INTEGER PRIMARY KEY,\n name VARCHAR(200),\n firm_id INTEGER,\n pet_id INTEGER\n )\n Table Firms\n (\n id INTEGER PRIMARY KEY,\n name VARCHAR(200)\n )\n Table Pets\n (\n id INTEGER PRIMARY KEY,\n name VARCHAR(50)\n )\n Table GoodPets\n (\n id INTEGER PRIMARY KEY,\n name VARCHAR(50)\n )\n\n Join FirmPerson(People.firm_id = Firms.id)\n Join PersonPet(People.pet_id = Pets.id)\n Join GoodPets(Pets.id = GoodPets.id)\n)\n"},{"title":"Relational Database Mapping with Scoped Block","description":"An example of a Mapping using a scoped block for readability.","documentation":"","path":"5-connect-data-to-datasources/Stores/Relational Store/Mapping/Scope","code":"###Mapping\nimport stores::*;\nimport models::*;\nMapping mappings::SimpleScopedMapping\n(\n Person: Relational\n {\n // scope([SimpleDB]SimpleSchema.People) can be used to extract the prefix\n // it is just syntactic sugar and will be string replaced.\n name: [SimpleDB]SimpleSchema.People.name\n }\n)\n\n\n###Pure\nClass models::Person\n{\n name: String[1];\n}\n\n\n###Relational\nDatabase stores::SimpleDB\n(\n Schema SimpleSchema\n (\n Table People\n (\n id INTEGER PRIMARY KEY,\n name VARCHAR(200)\n )\n )\n)"},{"title":"Service Store","documentation":"TODO: Some dummy description","path":"5-connect-data-to-datasources/Stores/Service Store","code":""},{"title":"Function Activators","documentation":"TODO: Some dummy description","path":"8-create-and-manage-data-model-apis/Function Activators","code":""}] \ No newline at end of file