127 lines
9.4 KiB
Plaintext
127 lines
9.4 KiB
Plaintext
<mxfile host="65bd71144e">
|
|
<diagram id="database-schema" name="Database Schema">
|
|
<mxGraphModel dx="1200" dy="800" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1000" pageHeight="600" math="0" shadow="0">
|
|
<root>
|
|
<mxCell id="0"/>
|
|
<mxCell id="1" parent="0"/>
|
|
|
|
<!-- Title -->
|
|
<mxCell id="2" value="Database Schema - Admin Panel" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontSize=18;fontStyle=1" vertex="1" parent="1">
|
|
<mxGeometry x="250" y="20" width="500" height="30" as="geometry"/>
|
|
</mxCell>
|
|
|
|
<!-- admin_users -->
|
|
<mxCell id="3" value="admin_users" style="swimlane;fontStyle=1;childLayout=stackLayout;horizontal=1;startSize=26;fillColor=#dae8fc;strokeColor=#6c8ebf;fontSize=13;" vertex="1" parent="1">
|
|
<mxGeometry x="80" y="80" width="180" height="156" as="geometry"/>
|
|
</mxCell>
|
|
<mxCell id="4" value="🔑 id" style="text;align=left;verticalAlign=middle;spacingLeft=4;fontSize=11" vertex="1" parent="3">
|
|
<mxGeometry y="26" width="180" height="26" as="geometry"/>
|
|
</mxCell>
|
|
<mxCell id="5" value="username" style="text;align=left;verticalAlign=middle;spacingLeft=4;fontSize=11" vertex="1" parent="3">
|
|
<mxGeometry y="52" width="180" height="26" as="geometry"/>
|
|
</mxCell>
|
|
<mxCell id="6" value="email" style="text;align=left;verticalAlign=middle;spacingLeft=4;fontSize=11" vertex="1" parent="3">
|
|
<mxGeometry y="78" width="180" height="26" as="geometry"/>
|
|
</mxCell>
|
|
<mxCell id="7" value="password_hash" style="text;align=left;verticalAlign=middle;spacingLeft=4;fontSize=11" vertex="1" parent="3">
|
|
<mxGeometry y="104" width="180" height="26" as="geometry"/>
|
|
</mxCell>
|
|
<mxCell id="8" value="role" style="text;align=left;verticalAlign=middle;spacingLeft=4;fontSize=11" vertex="1" parent="3">
|
|
<mxGeometry y="130" width="180" height="26" as="geometry"/>
|
|
</mxCell>
|
|
|
|
<!-- subscription_plans -->
|
|
<mxCell id="9" value="subscription_plans" style="swimlane;fontStyle=1;childLayout=stackLayout;horizontal=1;startSize=26;fillColor=#d5e8d4;strokeColor=#82b366;fontSize=13;" vertex="1" parent="1">
|
|
<mxGeometry x="320" y="80" width="180" height="182" as="geometry"/>
|
|
</mxCell>
|
|
<mxCell id="10" value="🔑 id" style="text;align=left;verticalAlign=middle;spacingLeft=4;fontSize=11" vertex="1" parent="9">
|
|
<mxGeometry y="26" width="180" height="26" as="geometry"/>
|
|
</mxCell>
|
|
<mxCell id="11" value="name" style="text;align=left;verticalAlign=middle;spacingLeft=4;fontSize=11" vertex="1" parent="9">
|
|
<mxGeometry y="52" width="180" height="26" as="geometry"/>
|
|
</mxCell>
|
|
<mxCell id="12" value="slug" style="text;align=left;verticalAlign=middle;spacingLeft=4;fontSize=11" vertex="1" parent="9">
|
|
<mxGeometry y="78" width="180" height="26" as="geometry"/>
|
|
</mxCell>
|
|
<mxCell id="13" value="price_monthly" style="text;align=left;verticalAlign=middle;spacingLeft=4;fontSize=11" vertex="1" parent="9">
|
|
<mxGeometry y="104" width="180" height="26" as="geometry"/>
|
|
</mxCell>
|
|
<mxCell id="14" value="max_domains" style="text;align=left;verticalAlign=middle;spacingLeft=4;fontSize=11" vertex="1" parent="9">
|
|
<mxGeometry y="130" width="180" height="26" as="geometry"/>
|
|
</mxCell>
|
|
<mxCell id="15" value="features (JSON)" style="text;align=left;verticalAlign=middle;spacingLeft=4;fontSize=11" vertex="1" parent="9">
|
|
<mxGeometry y="156" width="180" height="26" as="geometry"/>
|
|
</mxCell>
|
|
|
|
<!-- cloudflare_accounts -->
|
|
<mxCell id="16" value="cloudflare_accounts" style="swimlane;fontStyle=1;childLayout=stackLayout;horizontal=1;startSize=26;fillColor=#ffe6cc;strokeColor=#d79b00;fontSize=13;" vertex="1" parent="1">
|
|
<mxGeometry x="560" y="80" width="180" height="182" as="geometry"/>
|
|
</mxCell>
|
|
<mxCell id="17" value="🔑 id" style="text;align=left;verticalAlign=middle;spacingLeft=4;fontSize=11" vertex="1" parent="16">
|
|
<mxGeometry y="26" width="180" height="26" as="geometry"/>
|
|
</mxCell>
|
|
<mxCell id="18" value="name" style="text;align=left;verticalAlign=middle;spacingLeft=4;fontSize=11" vertex="1" parent="16">
|
|
<mxGeometry y="52" width="180" height="26" as="geometry"/>
|
|
</mxCell>
|
|
<mxCell id="19" value="email" style="text;align=left;verticalAlign=middle;spacingLeft=4;fontSize=11" vertex="1" parent="16">
|
|
<mxGeometry y="78" width="180" height="26" as="geometry"/>
|
|
</mxCell>
|
|
<mxCell id="20" value="api_token_encrypted" style="text;align=left;verticalAlign=middle;spacingLeft=4;fontSize=11" vertex="1" parent="16">
|
|
<mxGeometry y="104" width="180" height="26" as="geometry"/>
|
|
</mxCell>
|
|
<mxCell id="21" value="max_domains" style="text;align=left;verticalAlign=middle;spacingLeft=4;fontSize=11" vertex="1" parent="16">
|
|
<mxGeometry y="130" width="180" height="26" as="geometry"/>
|
|
</mxCell>
|
|
<mxCell id="22" value="is_active" style="text;align=left;verticalAlign=middle;spacingLeft=4;fontSize=11" vertex="1" parent="16">
|
|
<mxGeometry y="156" width="180" height="26" as="geometry"/>
|
|
</mxCell>
|
|
|
|
<!-- audit_logs -->
|
|
<mxCell id="23" value="audit_logs" style="swimlane;fontStyle=1;childLayout=stackLayout;horizontal=1;startSize=26;fillColor=#fff2cc;strokeColor=#d6b656;fontSize=13;" vertex="1" parent="1">
|
|
<mxGeometry x="80" y="320" width="180" height="182" as="geometry"/>
|
|
</mxCell>
|
|
<mxCell id="24" value="🔑 id" style="text;align=left;verticalAlign=middle;spacingLeft=4;fontSize=11" vertex="1" parent="23">
|
|
<mxGeometry y="26" width="180" height="26" as="geometry"/>
|
|
</mxCell>
|
|
<mxCell id="25" value="🔗 admin_id (FK)" style="text;align=left;verticalAlign=middle;spacingLeft=4;fontSize=11;fontColor=#b85450;fontStyle=1" vertex="1" parent="23">
|
|
<mxGeometry y="52" width="180" height="26" as="geometry"/>
|
|
</mxCell>
|
|
<mxCell id="26" value="action" style="text;align=left;verticalAlign=middle;spacingLeft=4;fontSize=11" vertex="1" parent="23">
|
|
<mxGeometry y="78" width="180" height="26" as="geometry"/>
|
|
</mxCell>
|
|
<mxCell id="27" value="resource_type" style="text;align=left;verticalAlign=middle;spacingLeft=4;fontSize=11" vertex="1" parent="23">
|
|
<mxGeometry y="104" width="180" height="26" as="geometry"/>
|
|
</mxCell>
|
|
<mxCell id="28" value="resource_id" style="text;align=left;verticalAlign=middle;spacingLeft=4;fontSize=11" vertex="1" parent="23">
|
|
<mxGeometry y="130" width="180" height="26" as="geometry"/>
|
|
</mxCell>
|
|
<mxCell id="29" value="created_at" style="text;align=left;verticalAlign=middle;spacingLeft=4;fontSize=11" vertex="1" parent="23">
|
|
<mxGeometry y="156" width="180" height="26" as="geometry"/>
|
|
</mxCell>
|
|
|
|
<!-- Relationship: audit_logs -> admin_users -->
|
|
<mxCell id="30" value="" style="endArrow=classic;html=1;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;strokeWidth=2;strokeColor=#b85450;" edge="1" parent="1" source="23" target="3">
|
|
<mxGeometry relative="1" as="geometry"/>
|
|
</mxCell>
|
|
<mxCell id="31" value="1:N" style="edgeLabel;html=1;align=center;verticalAlign=middle;fontSize=12;fontStyle=1;fontColor=#b85450;" vertex="1" connectable="0" parent="30">
|
|
<mxGeometry x="-0.1" y="1" relative="1" as="geometry">
|
|
<mxPoint as="offset"/>
|
|
</mxGeometry>
|
|
</mxCell>
|
|
|
|
<!-- Legend -->
|
|
<mxCell id="32" value="Legend:" style="text;html=1;align=left;verticalAlign=middle;fontSize=12;fontStyle=1" vertex="1" parent="1">
|
|
<mxGeometry x="320" y="350" width="80" height="20" as="geometry"/>
|
|
</mxCell>
|
|
<mxCell id="33" value="🔑 = Primary Key" style="text;html=1;align=left;verticalAlign=middle;fontSize=11" vertex="1" parent="1">
|
|
<mxGeometry x="320" y="375" width="150" height="20" as="geometry"/>
|
|
</mxCell>
|
|
<mxCell id="34" value="🔗 = Foreign Key" style="text;html=1;align=left;verticalAlign=middle;fontSize=11" vertex="1" parent="1">
|
|
<mxGeometry x="320" y="395" width="150" height="20" as="geometry"/>
|
|
</mxCell>
|
|
</root>
|
|
</mxGraphModel>
|
|
</diagram>
|
|
</mxfile>
|
|
|