-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMolioDoc.php
114 lines (101 loc) · 4.45 KB
/
MolioDoc.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
<?php
use Ramsey\Uuid\UuidInterface;
class MolioDoc {
private SQLite3 $db;
function __construct(SQLite3 $db) {
$this->db = $db;
}
function addBygningsdelsbeskrivelse(Bygningsdelsbeskrivelse $bygningsdelsbeskrivelse): int {
$stmt = $this->db->prepare('
insert into bygningsdelsbeskrivelse (
name,
bygningsdelsbeskrivelse_guid,
basisbeskrivelse_version_guid
) values (:name, :bygningsdelsbeskrivelse_guid, :basisbeskrivelse_version_guid)
');
$stmt->bindValue(':name', $bygningsdelsbeskrivelse->name);
$stmt->bindValue(':bygningsdelsbeskrivelse_guid', $bygningsdelsbeskrivelse->bygningsdelsbeskrivelse_guid->getBytes(), SQLITE3_BLOB);
$stmt->bindValue(':basisbeskrivelse_version_guid', $bygningsdelsbeskrivelse->basisbeskrivelse_version_guid->getBytes(), SQLITE3_BLOB);
$result = $stmt->execute();
return $this->db->lastInsertRowID();
}
function addBygningsdelsbeskrivelseSection(BygningsdelsbeskrivelseSection $bygningsdelsbeskrivelseSection): int {
$stmt = $this->db->prepare('
insert into bygningsdelsbeskrivelse_section (
bygningsdelsbeskrivelse_id,
section_no,
heading,
text,
molio_section_guid,
parent_id
) values (
:bygningsdelsbeskrivelse_id,
:section_no,
:heading,
:text,
:molio_section_guid,
:parent_id
)
');
$stmt->bindValue(':bygningsdelsbeskrivelse_id', $bygningsdelsbeskrivelseSection->bygningsdelsbeskrivelseId);
$stmt->bindValue(':section_no', $bygningsdelsbeskrivelseSection->sectionNo, SQLITE3_INTEGER);
$stmt->bindValue(':heading', $bygningsdelsbeskrivelseSection->heading);
$stmt->bindValue(':text', $bygningsdelsbeskrivelseSection->text);
$stmt->bindValue(':molio_section_guid', $this->getNullableGuidBytes($bygningsdelsbeskrivelseSection->molioSectionGuid), SQLITE3_BLOB);
$stmt->bindValue(':parent_id', $bygningsdelsbeskrivelseSection->parentId, SQLITE3_INTEGER);
$result = $stmt->execute();
return $this->db->lastInsertRowID();
}
function addAttachment(Attachment $attachment): int {
$stmt = $this->db->prepare('
insert into attachment (name, mime_type, content)
values (:name, :mime_type, :content)
');
$stmt->bindValue(':name', $attachment->name);
$stmt->bindValue(':mime_type', $attachment->mimeType);
$stmt->bindValue(':content', $attachment->content, SQLITE3_BLOB);
$result = $stmt->execute();
return $this->db->lastInsertRowID();
}
function addBygningsdelsbeskrivelseSectionAttachment(int $bygningsdelsbeskrivelseSectionId, int $attachmentId): int {
$stmt = $this->db->prepare('
insert into bygningsdelsbeskrivelse_section_attachment (bygningsdelsbeskrivelse_section_id, attachment_id)
values (:bygningsdelsbeskrivelse_section_id, :attachment_id)
');
$stmt->bindValue(':bygningsdelsbeskrivelse_section_id', $bygningsdelsbeskrivelseSectionId, SQLITE3_INTEGER);
$stmt->bindValue(':attachment_id', $attachmentId, SQLITE3_INTEGER);
$result = $stmt->execute();
return $this->db->lastInsertRowID();
}
function getNullableGuidBytes(?UuidInterface $guid): ?string {
return $guid ? $guid->getBytes() : null;
}
}
class Attachment {
public string $name;
public string $mimeType;
public string $content;
function __construct(string $name, string $mimeType, string $content) {
$this->name = $name;
$this->mimeType = $mimeType;
$this->content = $content;
}
}
class Bygningsdelsbeskrivelse {
public string $name;
public UuidInterface $bygningsdelsbeskrivelse_guid;
public UuidInterface $basisbeskrivelse_version_guid;
}
class BygningsdelsbeskrivelseSection {
public int $bygningsdelsbeskrivelseId;
public int $sectionNo;
public string $heading;
public string $text = '';
public ?UuidInterface $molioSectionGuid = null;
public ?int $parentId = null;
function __construct(int $bygningsdelsbeskrivelseId, int $sectionNo, string $heading) {
$this->bygningsdelsbeskrivelseId = $bygningsdelsbeskrivelseId;
$this->sectionNo = $sectionNo;
$this->heading = $heading;
}
}