|
| 1 | +locals { |
| 2 | + source = var.instance.spec.source |
| 3 | + source_ifc = lookup(local.source, "interfaces", {}) |
| 4 | + |
| 5 | + source_reader = lookup(local.source_ifc, "reader", {}) |
| 6 | + source_writer = lookup(local.source_ifc, "writer", {}) |
| 7 | + |
| 8 | + # Optional logical database override. When set, the connection_string is rebuilt |
| 9 | + # to target this database on the same physical host/port; otherwise the source's |
| 10 | + # connection_string and database are re-emitted unchanged. |
| 11 | + override_database = lookup(var.instance.spec, "database_name", null) |
| 12 | + |
| 13 | + reader_host = lookup(local.source_reader, "host", null) |
| 14 | + reader_port = lookup(local.source_reader, "port", null) |
| 15 | + writer_host = lookup(local.source_writer, "host", null) |
| 16 | + writer_port = lookup(local.source_writer, "port", null) |
| 17 | + |
| 18 | + reader_database = local.override_database != null ? local.override_database : lookup(local.source_reader, "database", null) |
| 19 | + writer_database = local.override_database != null ? local.override_database : lookup(local.source_writer, "database", null) |
| 20 | + |
| 21 | + reader_connection_string = local.override_database != null ? format( |
| 22 | + "mysql://%s:%s/%s", |
| 23 | + local.reader_host, |
| 24 | + local.reader_port, |
| 25 | + local.override_database |
| 26 | + ) : lookup(local.source_reader, "connection_string", null) |
| 27 | + |
| 28 | + writer_connection_string = local.override_database != null ? format( |
| 29 | + "mysql://%s:%s/%s", |
| 30 | + local.writer_host, |
| 31 | + local.writer_port, |
| 32 | + local.override_database |
| 33 | + ) : lookup(local.source_writer, "connection_string", null) |
| 34 | + |
| 35 | + # Re-emit the @facets/mysql contract from the source. |
| 36 | + output_attributes = lookup(local.source, "attributes", {}) |
| 37 | + |
| 38 | + output_interfaces = { |
| 39 | + reader = { |
| 40 | + host = local.reader_host |
| 41 | + port = local.reader_port |
| 42 | + username = lookup(local.source_reader, "username", null) |
| 43 | + password = lookup(local.source_reader, "password", null) |
| 44 | + database = local.reader_database |
| 45 | + connection_string = local.reader_connection_string |
| 46 | + secrets = lookup(local.source_reader, "secrets", ["password", "connection_string"]) |
| 47 | + } |
| 48 | + writer = { |
| 49 | + host = local.writer_host |
| 50 | + port = local.writer_port |
| 51 | + username = lookup(local.source_writer, "username", null) |
| 52 | + password = lookup(local.source_writer, "password", null) |
| 53 | + database = local.writer_database |
| 54 | + connection_string = local.writer_connection_string |
| 55 | + secrets = lookup(local.source_writer, "secrets", ["password", "connection_string"]) |
| 56 | + } |
| 57 | + } |
| 58 | +} |
0 commit comments