Random map layouts with modular rooms

I have built these rooms, as shown below.
image

I want to be able to connect these rooms in a maze-like fashion, by attaching the rooms to each other with :SetPrimaryPartCFrame(). I plan on doing this by setting up a map layout in a modulescript. Keep in mind that I don’t want to have to set up these rooms manually, with move and rotate tools.

The problem is, how would I order the ModuleScript and handle the logic in the generation script?

Here is one of my previous attempts:

local MapLayouts = {
	Heart = {
		-- first room to connect to the beginning room
		"Curve",
		-- second room to connect to the previous room
		"Hallway",
		-- third room
		"Hallway",
		-- fourth room to connect to the hallway. i'm turning this into a dictionary
		-- so i can connect multiple rooms to this room.
		FourWayIntersection = {
			ThreeWayIntersection = {
				
			},
			"Hallway", -- how do i connect rooms to these rooms??? more dictionaries??????? how would I even handle this in the generation script??
			"Hallway",
		}
	}
}