Compare commits
516 Commits
dev-moritz
...
reset-main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ecdce5b279 | ||
|
|
c0d4ede483 | ||
|
|
3fa207ea9c | ||
|
|
2a302a4b59 | ||
|
|
42e0907bb9 | ||
|
|
a20aa88096 | ||
|
|
aef820f448 | ||
|
|
f487b25aa1 | ||
|
|
babd929f6a | ||
|
|
1d27e2bd67 | ||
|
|
2abb143cfe | ||
|
|
5289273fc2 | ||
|
|
32d8e2383e | ||
|
|
f9538e770a | ||
|
|
05b2711f7f | ||
|
|
703f06c7a7 | ||
|
|
6d8dcb1b0e | ||
|
|
1e883866ed | ||
|
|
17f2983c3a | ||
|
|
607dfed53f | ||
|
|
0f20fc1184 | ||
|
|
a8202ff10d | ||
|
|
e06c8273e8 | ||
|
|
63fda2ce72 | ||
|
|
7d3b0396c7 | ||
|
|
21c47a5310 | ||
|
|
2086ac3d9c | ||
|
|
c3ffc0446a | ||
|
|
33411d8473 | ||
|
|
528d4a33eb | ||
|
|
1332b8e798 | ||
|
|
f1bb2fc55c | ||
|
|
ef7e0a1df9 | ||
|
|
e8083462e2 | ||
|
|
86f8a9fba7 | ||
|
|
b7f9649036 | ||
|
|
3acf581775 | ||
|
|
18227c7beb | ||
|
|
0811e2dd16 | ||
|
|
f305d2f6eb | ||
|
|
c2ea0bcd37 | ||
|
|
6b0b88e9ac | ||
|
|
221e94a8d7 | ||
|
|
371b8422ce | ||
|
|
4b43aa3e8f | ||
|
|
d72a93fbff | ||
|
|
ba51f36a8e | ||
|
|
1fa3faff52 | ||
|
|
820da9a235 | ||
|
|
91485aa009 | ||
|
|
c8c6238583 | ||
|
|
624fd3c045 | ||
|
|
7b0fdbf5f8 | ||
|
|
1f4e2eb4ce | ||
|
|
0b89320007 | ||
|
|
074ee8b463 | ||
|
|
55ff99a4ca | ||
|
|
009e1a8cad | ||
|
|
6c108f0455 | ||
|
|
09cd167a70 | ||
|
|
4239bc7917 | ||
|
|
77665af171 | ||
|
|
2a51b96b24 | ||
|
|
559dfe38e6 | ||
|
|
2dadfebccf | ||
|
|
0bc4fd6670 | ||
|
|
516e854616 | ||
|
|
912970923f | ||
|
|
4e5ee5174f | ||
|
|
51e9a5c97c | ||
|
|
09c4f5b06e | ||
|
|
aff26d7e16 | ||
|
|
49920caecc | ||
|
|
5f9c010d09 | ||
|
|
edce3ca5a3 | ||
|
|
d0c4b32a2c | ||
|
|
3acd5c5170 | ||
|
|
79e8c9e19a | ||
|
|
cc2a92a2a5 | ||
|
|
f0e1126dbb | ||
|
|
8804346424 | ||
|
|
a194e8a17e | ||
|
|
f0dbb2a1af | ||
|
|
6fb22d2ee0 | ||
|
|
78523171e9 | ||
|
|
cfdfef039e | ||
|
|
fecbf8948b | ||
|
|
40d33532c8 | ||
|
|
69d40eb52b | ||
|
|
4c79e8cb67 | ||
|
|
3fa4ede71f | ||
|
|
15b818acdb | ||
|
|
fa4c4d16d0 | ||
|
|
5997037328 | ||
|
|
29c63a585d | ||
|
|
71f5093a49 | ||
|
|
be94bd482c | ||
|
|
14e1d89024 | ||
|
|
c8b41458e1 | ||
|
|
e2e576e4fe | ||
|
|
2f35b8c403 | ||
|
|
5ea258705c | ||
|
|
f4dbe590df | ||
|
|
f4bbc979f9 | ||
|
|
8175b97073 | ||
|
|
085cf9783b | ||
|
|
f80b04ee77 | ||
|
|
e1a83aed77 | ||
|
|
9acf9e1e50 | ||
|
|
75ade8ebaa | ||
|
|
0117f94c07 | ||
|
|
00772317e7 | ||
|
|
efc1e8329a | ||
|
|
fc9fca0ee6 | ||
|
|
5d66eb10ca | ||
|
|
84a3a2dd39 | ||
|
|
a9c2b5c173 | ||
|
|
1678ac64b8 | ||
|
|
83b618b59d | ||
|
|
302ae192ac | ||
|
|
3af32c0153 | ||
|
|
9f64f8a3c2 | ||
|
|
048c1fc4d4 | ||
|
|
6f00b66013 | ||
|
|
d42209c3a0 | ||
|
|
7ce6e1d7a0 | ||
|
|
666b94bfad | ||
|
|
a597947e80 | ||
|
|
51a8cc576b | ||
|
|
9901688668 | ||
|
|
c39efcdbf0 | ||
|
|
01cd027e09 | ||
|
|
e3f7214af2 | ||
|
|
f77a013767 | ||
|
|
8b3e6b80c4 | ||
|
|
9706a839d6 | ||
|
|
d38bd8a6ad | ||
|
|
9e7f1da680 | ||
|
|
499cbfb47d | ||
|
|
7c7e76ca82 | ||
|
|
a57c97f59d | ||
|
|
91872ee3d3 | ||
|
|
5cf9892da0 | ||
|
|
2db7508859 | ||
|
|
06eb1dff34 | ||
|
|
bba1fc0b47 | ||
|
|
113f40ebb1 | ||
|
|
147b1ff44f | ||
|
|
dee9afcda4 | ||
|
|
bf5cc87510 | ||
|
|
fb6b88c499 | ||
|
|
b1d5cde032 | ||
|
|
cb7b1f0c41 | ||
|
|
6c0ab35f91 | ||
|
|
219ffc7fbb | ||
|
|
973fd76d1a | ||
|
|
915898c26f | ||
|
|
8277eb100c | ||
|
|
aea651c7f7 | ||
|
|
959fcd7f3b | ||
|
|
8d73143932 | ||
|
|
e01de6f03e | ||
|
|
27027c0f0e | ||
|
|
90522e1f81 | ||
|
|
7ef726c7c2 | ||
|
|
ba459c2ef4 | ||
|
|
89256c8ab1 | ||
|
|
34af0d655f | ||
|
|
1c282c0d9a | ||
|
|
34a1f1015b | ||
|
|
661a75ee9c | ||
|
|
afd9ef16df | ||
|
|
48d94b08ad | ||
|
|
310794a049 | ||
|
|
cd7fce3b1b | ||
|
|
d47651b5a1 | ||
|
|
8e9dfc5153 | ||
|
|
de94e1ba6d | ||
|
|
5b6c0c7d97 | ||
|
|
d9dfa18e28 | ||
|
|
c66d7dd260 | ||
|
|
215640f57a | ||
|
|
539e7a6b36 | ||
|
|
5a1c02e6f5 | ||
|
|
45da8032de | ||
|
|
8703b3b633 | ||
|
|
69298f2c71 | ||
|
|
ab5f9d71d3 | ||
|
|
1cbb01c8e7 | ||
|
|
2d3db305db | ||
|
|
50b53e8bba | ||
|
|
65ccda0ac0 | ||
|
|
c25928cd18 | ||
|
|
6a0ffe25f2 | ||
|
|
850b0bfff8 | ||
|
|
a4f1e10f0e | ||
|
|
6bcad2fecc | ||
|
|
93f22bfe5d | ||
|
|
3f2d62e125 | ||
|
|
f85a61dcff | ||
|
|
5388b4eb91 | ||
|
|
02f70e84fc | ||
|
|
e0faf0bced | ||
|
|
3a66e21ebd | ||
|
|
4ecbeab1da | ||
|
|
9c34ac833c | ||
|
|
fc3f4b0e3e | ||
|
|
64978b7e65 | ||
|
|
4378f25642 | ||
|
|
9ad163a469 | ||
|
|
2a47b8f482 | ||
|
|
5084346b28 | ||
|
|
2391629b36 | ||
|
|
8964c9f533 | ||
|
|
2000e8b80e | ||
|
|
00015b30cd | ||
|
|
b4af4ad667 | ||
|
|
6b255232c6 | ||
|
|
54b9ff8ce5 | ||
|
|
b7f4f9e8a4 | ||
|
|
f4647ebd53 | ||
|
|
ed4f5fdf37 | ||
|
|
5f5cdc5728 | ||
|
|
0b93b2d230 | ||
|
|
7f213930b1 | ||
|
|
76240ce840 | ||
|
|
011f4b37ba | ||
|
|
691df89535 | ||
|
|
bbb0fcaa8f | ||
|
|
e741af6901 | ||
|
|
68dd22e509 | ||
|
|
2a1e3568af | ||
|
|
cf68652880 | ||
|
|
b1d2a40534 | ||
|
|
c588f69b0c | ||
|
|
8b489a94cc | ||
|
|
9b50053007 | ||
|
|
4979a1d112 | ||
|
|
08a26cbc2d | ||
|
|
51f6909aaf | ||
|
|
deb73f0e3c | ||
|
|
c93a78066c | ||
|
|
e69362536e | ||
|
|
a1e5945d73 | ||
|
|
c3c7fd313f | ||
|
|
c4de916057 | ||
|
|
096f325292 | ||
|
|
0333f9315a | ||
|
|
a5894a3285 | ||
|
|
d0e0f4aa27 | ||
|
|
f174cf8428 | ||
|
|
fc35f35f5f | ||
|
|
ad53e45c15 | ||
|
|
7b3166ad3a | ||
|
|
0e07d9784e | ||
|
|
a1b6681eeb | ||
|
|
ba96a54d2e | ||
|
|
aa429d0a0d | ||
|
|
a10c46d8cb | ||
|
|
4a59c69f68 | ||
|
|
d1ab64780b | ||
|
|
534b26080d | ||
|
|
1c0a391c16 | ||
|
|
142a1e2988 | ||
|
|
6214d2dd02 | ||
|
|
8b3c4b3b76 | ||
|
|
e867a74478 | ||
|
|
9b61b66890 | ||
|
|
25da5c9bb0 | ||
|
|
9b33755cdd | ||
|
|
d7f57a4d04 | ||
|
|
daf3307e2a | ||
|
|
3becee4b4f | ||
|
|
512dd0ecdf | ||
|
|
b466794e16 | ||
|
|
eed6d9b3bd | ||
|
|
6576609166 | ||
|
|
15b5ff8ac4 | ||
|
|
14ac72f8d2 | ||
|
|
76b7ccf5ec | ||
|
|
38079d6df4 | ||
|
|
5d6962b283 | ||
|
|
a860b133c9 | ||
|
|
4bf250734a | ||
|
|
af26efe23a | ||
|
|
5f35cf6f96 | ||
|
|
aea0732c42 | ||
|
|
49b090ea52 | ||
|
|
7c987f6581 | ||
|
|
1b96822f0b | ||
|
|
476ce29c57 | ||
|
|
d0c693a0fe | ||
|
|
096000d001 | ||
|
|
12a85136b3 | ||
|
|
567ad2cc12 | ||
|
|
0d4736f1f0 | ||
|
|
59e08e66fb | ||
|
|
3606fbd856 | ||
|
|
e3b1490493 | ||
|
|
5d2a3b4c30 | ||
|
|
41f8f9903e | ||
|
|
83690789ac | ||
|
|
bdc4f7bf0a | ||
|
|
6178dcd229 | ||
|
|
e9c4e3d0c3 | ||
|
|
1852c1071b | ||
|
|
bc1e84b4d2 | ||
|
|
d591a8700e | ||
|
|
8886a37630 | ||
|
|
924d3e8513 | ||
|
|
57a43f64d7 | ||
|
|
1a9c57546f | ||
|
|
f223373f4f | ||
|
|
2fac04a148 | ||
|
|
f328a8262f | ||
|
|
253b3d664f | ||
|
|
1c29b57d08 | ||
|
|
ad7abeba05 | ||
|
|
cc2b9bdbf1 | ||
|
|
dee753ddba | ||
|
|
af50e6ffad | ||
|
|
e825377ff1 | ||
|
|
1484f54fe2 | ||
|
|
80b88df992 | ||
|
|
35db825e6a | ||
|
|
f4aeff329a | ||
|
|
d7acd67326 | ||
|
|
ee7b1e4471 | ||
|
|
778d0435f3 | ||
|
|
74a6844981 | ||
|
|
8f9f79a02d | ||
|
|
4a81a08157 | ||
|
|
1bfa3276d6 | ||
|
|
afa97cbae9 | ||
|
|
85ba433452 | ||
|
|
f8f53d0ac9 | ||
|
|
e4888849b1 | ||
|
|
cdb8b500bc | ||
|
|
106c420447 | ||
|
|
83c6aa8550 | ||
|
|
f262710f59 | ||
|
|
04d69a4e95 | ||
|
|
e96ac71d1d | ||
|
|
399b43149b | ||
|
|
693b9968e9 | ||
|
|
4edd73de52 | ||
|
|
e7a554cac0 | ||
|
|
a973586a2b | ||
|
|
c682dc4409 | ||
|
|
f404f5a1fe | ||
|
|
3678cd7b37 | ||
|
|
14196bf66c | ||
|
|
3f5f1cebe7 | ||
|
|
8fc6a88f58 | ||
|
|
591c5ec9e6 | ||
|
|
57c05b8672 | ||
|
|
e6fdf39e00 | ||
|
|
fabef77366 | ||
|
|
b14d80d101 | ||
|
|
a04a71df23 | ||
|
|
eb4d67d04e | ||
|
|
0e5a74725e | ||
|
|
fdbe165343 | ||
|
|
a40a809e12 | ||
|
|
69e169362b | ||
|
|
6cf8910839 | ||
|
|
fb706c5999 | ||
|
|
b5d6ba731e | ||
|
|
224697fd06 | ||
|
|
065e9a5e14 | ||
|
|
999cfbc7cb | ||
|
|
5f075814dd | ||
|
|
dfcd3e359c | ||
|
|
67aaee6f09 | ||
|
|
c05d02b002 | ||
|
|
412d2dc7ef | ||
|
|
d3ca67399c | ||
|
|
21e87339b9 | ||
|
|
fa18a0f94e | ||
|
|
d050fcecec | ||
|
|
aa6effcc90 | ||
|
|
785e0f78ff | ||
|
|
c4942affe8 | ||
|
|
8ee620935e | ||
|
|
5ffcb4b3ff | ||
|
|
2a5416673b | ||
|
|
21446bf4e8 | ||
|
|
45ee28c332 | ||
|
|
c0df0d73af | ||
|
|
1ce0164e70 | ||
|
|
9d4359ea89 | ||
|
|
2eb44a9bb3 | ||
|
|
6242fc9ef8 | ||
|
|
270fcc329f | ||
|
|
0e50cbe118 | ||
|
|
47767e4316 | ||
|
|
37339da412 | ||
|
|
91704f6037 | ||
|
|
c9e372ce53 | ||
|
|
226e9a6d77 | ||
|
|
b2121ec76e | ||
|
|
77eaa41cc3 | ||
|
|
2e1ec82d77 | ||
|
|
8669b6d7ff | ||
|
|
192e71ac60 | ||
|
|
095655e9e8 | ||
|
|
fb14dbd6bc | ||
|
|
7c56d036fd | ||
|
|
fa272cf0f3 | ||
|
|
6a51b0b02f | ||
|
|
d6e137d50f | ||
|
|
6e49ba328e | ||
|
|
d31a958df7 | ||
|
|
993d58c170 | ||
|
|
d1e3b51635 | ||
|
|
1df144e5b2 | ||
|
|
3e160b3af1 | ||
|
|
26ea187a09 | ||
|
|
45e8ebb29d | ||
|
|
85fe01bc60 | ||
|
|
cba9d7a0e0 | ||
|
|
d672c957f9 | ||
|
|
685cb114f8 | ||
|
|
86532ec251 | ||
|
|
b283013116 | ||
|
|
927f0157be | ||
|
|
eac6f0c035 | ||
|
|
727ea1c924 | ||
|
|
d538f754c4 | ||
|
|
4d801eef4c | ||
|
|
dd60f42d7b | ||
|
|
8049af9f17 | ||
|
|
39476ac5d5 | ||
|
|
dc0dfff31f | ||
|
|
d228908430 | ||
|
|
d73b0af435 | ||
|
|
2f04be6da9 | ||
|
|
a38fea3955 | ||
|
|
850a51569f | ||
|
|
22ada149f4 | ||
|
|
051f758566 | ||
|
|
5bee70f95a | ||
|
|
bfcc44dbe2 | ||
|
|
cde5661e30 | ||
|
|
902743f0d9 | ||
|
|
52e07ea0bf | ||
|
|
daec65e051 | ||
|
|
7986adc9c6 | ||
|
|
0686f2930b | ||
|
|
faa8f2c673 | ||
|
|
69566f1c74 | ||
|
|
198912c792 | ||
|
|
df00cb88e2 | ||
|
|
b2f86696cc | ||
|
|
2b0fda66f1 | ||
|
|
47533d5794 | ||
|
|
78248ba0a4 | ||
|
|
b3b59591be | ||
|
|
c3da028ed7 | ||
|
|
feb3145169 | ||
|
|
003882a16a | ||
|
|
137cef3114 | ||
|
|
0777fc39eb | ||
|
|
9359ee0432 | ||
|
|
c8ba17fab3 | ||
|
|
faf9ef8b0b | ||
|
|
404f5845a4 | ||
|
|
8486421f12 | ||
|
|
3abaa89107 | ||
|
|
1af751042c | ||
|
|
0daa65bd94 | ||
|
|
c4350ec75a | ||
|
|
9951179b2a | ||
|
|
7f6430f20f | ||
|
|
5f8d30a5a3 | ||
|
|
f18b5ca03c | ||
|
|
74f05d404c | ||
|
|
8935479fad | ||
|
|
23cadae581 | ||
|
|
b6db5cde51 | ||
|
|
a9ab3daa6f | ||
|
|
0d0f6c8851 | ||
|
|
8ac9005e8b | ||
|
|
ae970e376e | ||
|
|
c6ab7adba3 | ||
|
|
dbd70febdb | ||
|
|
2acd91f270 | ||
|
|
0381a6f473 | ||
|
|
e86c4d94b8 | ||
|
|
8d1f95ec89 | ||
|
|
89ce919802 | ||
|
|
ed5b71f8bf | ||
|
|
0927883055 | ||
|
|
2ac1e3f436 | ||
|
|
66297101ff | ||
|
|
6e2f29c673 | ||
|
|
a4fe9b4f80 | ||
|
|
fe3b2809d9 | ||
|
|
e61481c1b0 | ||
|
|
8b3371cf26 | ||
|
|
e48753f9bd | ||
|
|
8b3578aa74 | ||
|
|
094b40e604 | ||
|
|
843c417f19 | ||
|
|
f4ba7c8111 | ||
|
|
01d3312989 | ||
|
|
60a0f3af70 | ||
|
|
de8e68e21b | ||
|
|
158752b16d | ||
|
|
b1feb53b79 | ||
|
|
28ece60c76 | ||
|
|
30f699297c | ||
|
|
91fd0ec516 | ||
|
|
c6c7d5bc14 | ||
|
|
06f05104ab | ||
|
|
23c95dab63 |
16
.env
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
# Environment variables declared in this file are automatically made available to Prisma.
|
||||||
|
# See the documentation for more detail: https://pris.ly/d/prisma-schema#accessing-environment-variables-from-the-schema
|
||||||
|
|
||||||
|
# Prisma supports the native connection string format for PostgreSQL, MySQL, SQLite, SQL Server, MongoDB and CockroachDB.
|
||||||
|
# See the documentation for all the connection string options: https://pris.ly/d/connection-strings
|
||||||
|
|
||||||
|
POSTGRES_DB=main
|
||||||
|
POSTGRES_HOST=localhost
|
||||||
|
POSTGRES_PORT=5432
|
||||||
|
POSTGRES_USER=main
|
||||||
|
POSTGRES_PASSWORD=hHMP8cd^N3SnzGRR
|
||||||
|
|
||||||
|
DB_CONTAINER_NAME=database
|
||||||
|
|
||||||
|
POSTGRES_DATABASE_URL="postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${POSTGRES_HOST}:${POSTGRES_PORT}/${POSTGRES_DB}"
|
||||||
|
POSTGRES_DATABASE_URL_EXTERNAL="postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${DB_CONTAINER_NAME}:${POSTGRES_PORT}/${POSTGRES_DB}"
|
||||||
7
.github/workflows/dev-pipeline.yml
vendored
@@ -11,6 +11,10 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v2
|
||||||
|
- name: Install Bun
|
||||||
|
run: |
|
||||||
|
curl -fsSL https://bun.sh/install | bash
|
||||||
|
|
||||||
- uses: appleboy/ssh-action@master
|
- uses: appleboy/ssh-action@master
|
||||||
with:
|
with:
|
||||||
host: ${{ secrets.DEV_HOST }}
|
host: ${{ secrets.DEV_HOST }}
|
||||||
@@ -18,6 +22,9 @@ jobs:
|
|||||||
password: ${{ secrets.DEV_PASSWORD }}
|
password: ${{ secrets.DEV_PASSWORD }}
|
||||||
port: 22
|
port: 22
|
||||||
script: |
|
script: |
|
||||||
|
export PATH=$HOME/.bun/bin:$PATH
|
||||||
|
export PATH=$HOME/.nvm/versions/node/v22.14.0/bin:$PATH
|
||||||
|
echo $PATH
|
||||||
cd ~/online-energieausweis
|
cd ~/online-energieausweis
|
||||||
git reset --hard origin/main
|
git reset --hard origin/main
|
||||||
git clean -f -d
|
git clean -f -d
|
||||||
|
|||||||
17
.gitignore
vendored
@@ -20,15 +20,22 @@ pnpm-debug.log*
|
|||||||
pnpm-lock.yaml
|
pnpm-lock.yaml
|
||||||
bun.lockb
|
bun.lockb
|
||||||
|
|
||||||
# environment variables
|
src/astro-typesafe-api-caller.ts
|
||||||
.env
|
|
||||||
.env.production
|
|
||||||
|
|
||||||
# macOS-specific files
|
# macOS-specific files
|
||||||
.DS_Store
|
.DS_Store
|
||||||
|
|
||||||
public/fonts/
|
|
||||||
|
|
||||||
*.Identifier
|
*.Identifier
|
||||||
|
|
||||||
src/lib/Berechnungen/BedarfsausweisWohnen/18599-Tabellenverfahren-Wohngebaeude-komplett-ocr.pdf
|
src/lib/Berechnungen/BedarfsausweisWohnen/18599-Tabellenverfahren-Wohngebaeude-komplett-ocr.pdf
|
||||||
|
src/astro-typesafe-api-caller.ts
|
||||||
|
|
||||||
|
dbml/schema.dbml
|
||||||
|
|
||||||
|
prisma/migrations/20250315143314_/migration.sql
|
||||||
|
|
||||||
|
src/astro-typesafe-api-caller.ts
|
||||||
|
|
||||||
|
src/testing/ausweise.csv
|
||||||
|
src/testing/users.csv
|
||||||
|
src/testing/rechnungen.csv
|
||||||
|
|||||||
39
.ssh/id_rsa
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
-----BEGIN OPENSSH PRIVATE KEY-----
|
||||||
|
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
|
||||||
|
TlYtRkE1MDdOVgEC
|
||||||
|
-----END OPENSSH PRIVATE KEY-----
|
||||||
1
.ssh/id_rsa.pub
Normal file
@@ -0,0 +1 @@
|
|||||||
|
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDNQZe3cZhxPffjiJYYYZyAvTMMqGSuJ6KRn7KrMOku4TNHC7d6m5Oa+YelPjlrAfJavqmA4+kPswZIOjXcFVECMJqlgLbdEvzsTdlFofpp7NW1X62OXq9wJG1DHi5BY60bNXwyLzgSsHG3fEqjX2J7JWgmcmKD1bugtt/jojT/cnPfVJFCiR+gNztMUeu1UTbVRmDE24N8oyEywFplw80/5FulyzuzwF3dDU9+tsDptMYZrgNgBHkeCb7P8Uxy7U9KsADh/H5jFCuA0LhM2XxPcdKwaee2E2hAwJyXctwCLLQLUlpapdYaNjBrCd9R2AHaeFv2Lm37K9tP9QvX6hsiElHH0RorgJJw2tprRlaZrCX81joO6a+XLw6l5TAxrKexkQU8RlXF1cVQdVEtHvg0bHbeyrqo9hm7LlsWFs8moheyHY+XqC8UTodlyblTqOAk5oe33wxIUiQgu1Z5pvRxKYICiS3xcX797O7fuZsS83MI1mkVgb13oxe4rkc4bTE= moritz@moritz-ASUS-TUF-Gaming-A15-FA507NV-FA507NV
|
||||||
20
Dockerfile
@@ -1,10 +1,16 @@
|
|||||||
FROM oven/bun:1.0.23
|
FROM postgres:latest
|
||||||
|
ENV POSTGRES_USER ${POSTGRES_USER}
|
||||||
|
ENV POSTGRES_PASSWORD ${POSTGRES_PASSWORD}
|
||||||
|
ENV POSTGRES_DB ${POSTGRES_DB}
|
||||||
|
|
||||||
EXPOSE 3000
|
COPY ./prisma/migrations/ /docker-entrypoint-initdb.d/
|
||||||
|
|
||||||
WORKDIR /online-energieausweis
|
EXPOSE 5432
|
||||||
COPY ./package.json ./
|
|
||||||
COPY . .
|
|
||||||
RUN bun install --prod
|
|
||||||
|
|
||||||
CMD ["bun", "run", "build:production"]
|
# Use a loop to copy migration.sql from each folder to the corresponding directory in the build context
|
||||||
|
RUN for folder in /docker-entrypoint-initdb.d/*; do \
|
||||||
|
if [ -d "$folder" ]; then \
|
||||||
|
cp "$folder/migration.sql" "$folder.sql"; \
|
||||||
|
rm -rf "$folder"; \
|
||||||
|
fi \
|
||||||
|
done
|
||||||
89
Makefile
@@ -1,52 +1,71 @@
|
|||||||
.PHONY: dev database online-energieausweis all prod bun-install-database # api bun-install-api
|
.PHONY: dev online-energieausweis all prod backup run-database build-database install-dependencies wait-for-database prod database prisma-studio backup-database-cronjob
|
||||||
|
|
||||||
|
DB_CONTAINER_NAME := database
|
||||||
|
DB_NAME := main
|
||||||
|
DB_USER := main
|
||||||
|
DB_PASSWORD := hHMP8cd^N3SnzGRR
|
||||||
|
DB_PORT := 5432
|
||||||
|
DB_VOLUME := postgres_data
|
||||||
|
PERSISTENT_DIR := $(HOME)/persistent/$(APP_NAME)
|
||||||
|
BACKUP_FILENAME := $(HOME)/backups/$(shell date +"%Y-%m-%d_%H-%M-%S").sql.gz
|
||||||
|
|
||||||
online-energieausweis:
|
online-energieausweis:
|
||||||
bun run dev --host
|
bun run dev --host
|
||||||
|
|
||||||
dev: database online-energieausweis # api
|
dev: database online-energieausweis
|
||||||
|
|
||||||
database:
|
database:
|
||||||
$(MAKE) -C ../database dev
|
docker compose up
|
||||||
|
|
||||||
bun-install-database:
|
prisma-studio:
|
||||||
cd ../database
|
- pm2 delete prisma-studio
|
||||||
bun link
|
pm2 start --name "prisma-studio" bunx -- prisma studio
|
||||||
|
|
||||||
|
backup:
|
||||||
|
mkdir -p $(PERSISTENT_DIR)
|
||||||
|
- docker exec -t $(DB_CONTAINER_NAME) pg_dump --data-only -U $(DB_USER) $(DB_NAME) | gzip > $(BACKUP_FILENAME)
|
||||||
|
|
||||||
|
run-database: stop-database
|
||||||
|
docker volume rm -f $(DB_VOLUME)
|
||||||
|
docker volume create $(DB_VOLUME)
|
||||||
|
docker build -t $(DB_CONTAINER_NAME) .
|
||||||
|
docker run -d --name $(DB_CONTAINER_NAME) \
|
||||||
|
-e POSTGRES_USER=$(DB_USER) \
|
||||||
|
-e POSTGRES_PASSWORD=$(DB_PASSWORD) \
|
||||||
|
-p $(DB_PORT):5432 \
|
||||||
|
-v $(DB_VOLUME):/var/lib/postgresql/data \
|
||||||
|
-v $(PERSISTENT_DIR):/persistent \
|
||||||
|
$(DB_CONTAINER_NAME)
|
||||||
|
|
||||||
|
stop-database:
|
||||||
|
- docker stop $(DB_CONTAINER_NAME)
|
||||||
|
- docker rm $(DB_CONTAINER_NAME)
|
||||||
|
|
||||||
|
wait-fordatabase:
|
||||||
|
@while ! docker exec $(DB_CONTAINER_NAME) pg_isready -U $(DB_USER) -h localhost -p $(DB_PORT) > /dev/null 2>&1; do \
|
||||||
|
sleep 1; \
|
||||||
|
done
|
||||||
|
|
||||||
|
restore-backup:
|
||||||
|
gunzip -c $(BACKUP_FILENAME) | docker exec -i $(DB_CONTAINER_NAME) psql -U $(DB_USER) -d postgres
|
||||||
|
|
||||||
|
install-dependencies:
|
||||||
bun install
|
bun install
|
||||||
|
bunx prisma generate
|
||||||
# bun-install-api: bun-install-database
|
|
||||||
# cd ../api
|
|
||||||
# bun install
|
|
||||||
# bun link @ibcornelsen/database
|
|
||||||
|
|
||||||
# api:
|
|
||||||
# $(MAKE) -C ../api dev
|
|
||||||
|
|
||||||
all:
|
all:
|
||||||
mkdir -p ~/logs
|
mkdir -p ~/logs
|
||||||
bun run dev 2>&1 | tee ~/logs/`date '+%d-%m-%Y_%H:%M:%S'`.log
|
bun run dev 2>&1 | tee ~/logs/`date '+%d-%m-%Y_%H:%M:%S'`.log
|
||||||
|
|
||||||
prod: bun-install-database # bun-install-api
|
prod: install-dependencies prisma-studio backup-database-cronjob
|
||||||
|
bun run build
|
||||||
mkdir -p ~/logs
|
mkdir -p ~/logs
|
||||||
mkdir -p ~/persistent/online-energieausweis
|
mkdir -p ~/persistent/online-energieausweis
|
||||||
|
|
||||||
# Wir müssen sichergehen, dass der Database Container läuft, sonst können wir ihn nicht linken.
|
|
||||||
@if [ ! $$(docker ps | grep database | wc -l) -gt 0 ]; then \
|
|
||||||
cd ../database; \
|
|
||||||
$(MAKE) prod; \
|
|
||||||
cd ../online-energieausweis; \
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Auch die API sollte bereits laufen
|
|
||||||
# @if [ $$(pm2 pid api) -eq "0" ]; then \
|
|
||||||
# cd ../api; \
|
|
||||||
# $(MAKE) prod; \
|
|
||||||
# cd ../online-energieausweis; \
|
|
||||||
# fi
|
|
||||||
|
|
||||||
- rm -f ~/online-energieausweis/.env;
|
|
||||||
- touch ~/online-energieausweis/.env;
|
|
||||||
- echo "PRIVATE_KEY=$(cat /etc/letsencrypt/live/ibcornelsen.de/privkey.pem | base64 | tr -d '\n')" >> ~/online-energieausweis/.env;
|
|
||||||
- echo "CERTIFICATE=$(cat /etc/letsencrypt/live/ibcornelsen.de/fullchain.pem | base64 | tr -d '\n')" >> ~/online-energieausweis/.env;
|
|
||||||
|
|
||||||
- pm2 delete online-energieausweis
|
- pm2 delete online-energieausweis
|
||||||
pm2 start --name "online-energieausweis" --log ~/logs/`date '+%d-%m-%Y_%H:%M:%S'`.log --time bun -- astro dev
|
NODE_ENV="production" pm2 start --name "online-energieausweis" --update-env --log ~/logs/`date '+%d-%m-%Y_%H:%M:%S'`.log --time bun -- run ./server.ts
|
||||||
|
pm2 save
|
||||||
|
|
||||||
|
backup-database-cronjob:
|
||||||
|
- pm2 delete daily-db-backup
|
||||||
|
pm2 start backup-database.bash --name "daily-db-backup" --cron "0 0 * * *"
|
||||||
@@ -4,38 +4,37 @@ import svelte from "@astrojs/svelte";
|
|||||||
import tailwind from "@astrojs/tailwind";
|
import tailwind from "@astrojs/tailwind";
|
||||||
import node from "@astrojs/node";
|
import node from "@astrojs/node";
|
||||||
import mdx from "@astrojs/mdx";
|
import mdx from "@astrojs/mdx";
|
||||||
import dsv from "@rollup/plugin-dsv"
|
|
||||||
import astroTypesafeAPI from "astro-typesafe-api"
|
import astroTypesafeAPI from "astro-typesafe-api"
|
||||||
|
|
||||||
import { fileURLToPath } from "url";
|
|
||||||
|
|
||||||
// https://astro.build/config
|
// https://astro.build/config
|
||||||
export default defineConfig({
|
export default defineConfig({
|
||||||
integrations: [svelte(), tailwind(), mdx(), astroTypesafeAPI()],
|
integrations: [svelte(), tailwind(), mdx(), astroTypesafeAPI()],
|
||||||
outDir: "./dist",
|
outDir: "./dist",
|
||||||
output: "server",
|
output: "server",
|
||||||
vite: {
|
|
||||||
optimizeDeps: {
|
|
||||||
exclude: ["@ibcornelsen/api", "@ibcornelsen/database"]
|
|
||||||
},
|
|
||||||
resolve: {
|
|
||||||
alias: {
|
|
||||||
"#": fileURLToPath(new URL("./src", import.meta.url))
|
|
||||||
}
|
|
||||||
},
|
|
||||||
ssr: {
|
|
||||||
noExternal: ["@pdfme/generator", "@pdfme/common", "@pdfme/schemas"]
|
|
||||||
},
|
|
||||||
build: {
|
|
||||||
commonjsOptions: {
|
|
||||||
transformMixedEsModules: false
|
|
||||||
}
|
|
||||||
},
|
|
||||||
plugins: [dsv()]
|
|
||||||
},
|
|
||||||
adapter: node({
|
adapter: node({
|
||||||
mode: "middleware"
|
mode: "middleware",
|
||||||
}),
|
}),
|
||||||
|
vite: {
|
||||||
|
server: {
|
||||||
|
allowedHosts: ["ibcornelsen.de", "online-energieausweis.org"]
|
||||||
|
},
|
||||||
|
optimizeDeps: {
|
||||||
|
exclude: ["bun"]
|
||||||
|
},
|
||||||
|
build: {
|
||||||
|
rollupOptions: {
|
||||||
|
external: ["bun", "stream", "node:stream", "http", "node:http", "https", "http2", "path", "os", "crypto", "fs", "url", "util", "child_process"]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
ssr: {
|
||||||
|
external: ["@prisma/client", "bun", "stream"],
|
||||||
|
resolve: {
|
||||||
|
alias: {
|
||||||
|
".prisma/client/index-browser": "./node_modules/.prisma/client/index-browser.js"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
server: {
|
server: {
|
||||||
port: 3000
|
port: 3000
|
||||||
},
|
},
|
||||||
|
|||||||
21
backup-database.bash
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
FILE_NAME=data-dump_`date +%Y-%m-%d"_"%H_%M_%S`.sql.br
|
||||||
|
FILE_NAME_COMPLETE=full-dump_`date +%Y-%m-%d"_"%H_%M_%S`.sql.br
|
||||||
|
# Wir exportieren die Datenbank und komprimieren sie.
|
||||||
|
docker exec -t online-energieausweis-database-1 pg_dump --data-only -U main main | brotli --best > $FILE_NAME
|
||||||
|
docker exec -t online-energieausweis-database-1 pg_dumpall -c -U main | brotli --best > $FILE_NAME_COMPLETE
|
||||||
|
|
||||||
|
# Das wird benötigt für AWS Ionos Kompatibilität.
|
||||||
|
export AWS_REQUEST_CHECKSUM_CALCULATION=when_required
|
||||||
|
export AWS_RESPONSE_CHECKSUM_VALIDATION=when_required
|
||||||
|
|
||||||
|
# IMPORTANT: Dieser Befehl benötigt das `ionos` Profil, sonst wird er nicht funktionieren.
|
||||||
|
# Das Profil kann mit `aws configure --profile ionos` erstellt werden.
|
||||||
|
# Den Key dafür findet man auf https://dcd.ionos.com/latest/?lang=en#/key-management
|
||||||
|
aws s3 cp $FILE_NAME s3://ibc-db-backup/ --profile ionos --endpoint-url https://s3-eu-central-1.ionoscloud.com --storage-class STANDARD
|
||||||
|
aws s3 cp $FILE_NAME_COMPLETE s3://ibc-db-backup/ --profile ionos --endpoint-url https://s3-eu-central-1.ionoscloud.com --storage-class STANDARD
|
||||||
|
|
||||||
|
# Wir entfernen das Backup
|
||||||
|
rm $FILE_NAME
|
||||||
|
rm $FILE_NAME_COMPLETE
|
||||||
71474
backup/postleitzahlen.json
Normal file
6
build.sh
@@ -39,11 +39,11 @@ bun link @ibcornelsen/database
|
|||||||
PERSISTENT_DIR="${HOME}/persistent/${APP_NAME}";
|
PERSISTENT_DIR="${HOME}/persistent/${APP_NAME}";
|
||||||
mkdir -p $PERSISTENT_DIR;
|
mkdir -p $PERSISTENT_DIR;
|
||||||
|
|
||||||
# TODO: Wir legen hier die .env Datei an, die die SSL Zertifikate enthält.
|
# Wir legen hier die .env Datei an, die die SSL Zertifikate enthält.
|
||||||
rm -f ~/$APP_NAME/.env;
|
rm -f ~/$APP_NAME/.env;
|
||||||
touch ~/$APP_NAME/.env;
|
touch ~/$APP_NAME/.env;
|
||||||
echo "PRIVATE_KEY=$(cat /etc/letsencrypt/live/ibcornelsen.de/privkey.pem | base64 | tr -d '\n')" >> ~/$APP_NAME/.env;
|
echo "PRIVATE_KEY=$(cat /etc/letsencrypt/live/online-energieausweis.org/privkey.pem | base64 | tr -d '\n')" >> ~/$APP_NAME/.env;
|
||||||
echo "CERTIFICATE=$(cat /etc/letsencrypt/live/ibcornelsen.de/fullchain.pem | base64 | tr -d '\n')" >> ~/$APP_NAME/.env;
|
echo "CERTIFICATE=$(cat /etc/letsencrypt/live/online-energieausweis.org/fullchain.pem | base64 | tr -d '\n')" >> ~/$APP_NAME/.env;
|
||||||
|
|
||||||
# Wir müssen sichergehen, dass der Database Container läuft, sonst können wir ihn nicht linken.
|
# Wir müssen sichergehen, dass der Database Container läuft, sonst können wir ihn nicht linken.
|
||||||
if [ ! $((docker ps | grep $DB_CONTAINER_NAME) | wc -l) -gt 0 ]; then
|
if [ ! $((docker ps | grep $DB_CONTAINER_NAME) | wc -l) -gt 0 ]; then
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { defineConfig } from "cypress";
|
import { defineConfig } from "cypress";
|
||||||
import dsv from "@rollup/plugin-dsv"
|
import dsv from "@rollup/plugin-dsv"
|
||||||
|
import { prisma } from "./src/lib/server/prisma"
|
||||||
import { fileURLToPath } from "url";
|
import { fileURLToPath } from "url";
|
||||||
import vitePreprocessor from "cypress-vite";
|
import vitePreprocessor from "cypress-vite";
|
||||||
|
|
||||||
@@ -9,7 +9,7 @@ export default defineConfig({
|
|||||||
baseUrl: "http://localhost:3000",
|
baseUrl: "http://localhost:3000",
|
||||||
viewportHeight: 900,
|
viewportHeight: 900,
|
||||||
viewportWidth: 1660,
|
viewportWidth: 1660,
|
||||||
supportFile: false,
|
supportFile: fileURLToPath(new URL("./src/cypress/support/commands.ts", import.meta.url)),
|
||||||
specPattern: "./src/cypress/e2e/**/*.{ts,js}",
|
specPattern: "./src/cypress/e2e/**/*.{ts,js}",
|
||||||
setupNodeEvents(on, config) {
|
setupNodeEvents(on, config) {
|
||||||
on("file:preprocessor", vitePreprocessor({
|
on("file:preprocessor", vitePreprocessor({
|
||||||
@@ -18,6 +18,7 @@ export default defineConfig({
|
|||||||
},
|
},
|
||||||
resolve: {
|
resolve: {
|
||||||
alias: {
|
alias: {
|
||||||
|
".prisma/client/index-browser": fileURLToPath(new URL("./node_modules/.prisma/client/index-browser.js", import.meta.url)),
|
||||||
"#": fileURLToPath(new URL("./src", import.meta.url)),
|
"#": fileURLToPath(new URL("./src", import.meta.url)),
|
||||||
"#components": fileURLToPath(new URL("./src/components", import.meta.url)),
|
"#components": fileURLToPath(new URL("./src/components", import.meta.url)),
|
||||||
"#lib": fileURLToPath(new URL("./src/lib", import.meta.url))
|
"#lib": fileURLToPath(new URL("./src/lib", import.meta.url))
|
||||||
@@ -31,6 +32,19 @@ export default defineConfig({
|
|||||||
},
|
},
|
||||||
plugins: [dsv()]
|
plugins: [dsv()]
|
||||||
}))
|
}))
|
||||||
|
on("task", {
|
||||||
|
async verbrauchsausweisWohnen(query) {
|
||||||
|
return await prisma.verbrauchsausweisWohnen.findFirst(query)
|
||||||
|
},
|
||||||
|
async plz() {
|
||||||
|
const total = await prisma.postleitzahlen.count()
|
||||||
|
const result = await prisma.postleitzahlen.findFirst({
|
||||||
|
skip: Math.floor(Math.random() * total)
|
||||||
|
})
|
||||||
|
|
||||||
|
return result?.plz
|
||||||
|
}
|
||||||
|
})
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
component: {
|
component: {
|
||||||
|
|||||||
@@ -1,26 +1,8 @@
|
|||||||
version: '3'
|
version: '3'
|
||||||
|
|
||||||
services:
|
services:
|
||||||
ibcornelsen-online-energieausweis:
|
|
||||||
build: ./
|
|
||||||
command: bun run dev --host
|
|
||||||
environment:
|
|
||||||
PORT: 3000
|
|
||||||
NODE_ENV: "development"
|
|
||||||
ports:
|
|
||||||
- "3000:3000"
|
|
||||||
volumes:
|
|
||||||
- ./:/online-energieausweis
|
|
||||||
- ./node_modules/@ibcornelsen/ui:/online-energieausweis/node_modules/@ibcornelsen/ui
|
|
||||||
- ./node_modules/@ibcornelsen/database:/online-energieausweis/node_modules/@ibcornelsen/database
|
|
||||||
# - ./node_modules/@ibcornelsen/api:/online-energieausweis/node_modules/@ibcornelsen/api
|
|
||||||
- ./node_modules/radix-svelte-icons:/online-energieausweis/node_modules/radix-svelte-icons
|
|
||||||
- ../api/persistent:/persistent
|
|
||||||
ibcornelsen-api:
|
|
||||||
extends:
|
|
||||||
file: ../api/docker-compose.yml
|
|
||||||
service: ibcornelsen-api
|
|
||||||
database:
|
database:
|
||||||
extends:
|
build: ./
|
||||||
file: ../database/docker-compose.yml
|
env_file:
|
||||||
service: database
|
- .env
|
||||||
|
ports:
|
||||||
|
- 5432:5432
|
||||||
15
install.sh
@@ -1,15 +0,0 @@
|
|||||||
git clone https://github.com/IBCornelsen/online-energieausweis
|
|
||||||
git clone https://github.com/IBCornelsen/database
|
|
||||||
git clone https://github.com/IBCornelsen/api
|
|
||||||
|
|
||||||
cd ./database
|
|
||||||
bun link
|
|
||||||
bun install
|
|
||||||
|
|
||||||
cd ../api
|
|
||||||
bun link
|
|
||||||
bun install
|
|
||||||
|
|
||||||
cd ../online-energieausweis
|
|
||||||
bun link
|
|
||||||
bun install
|
|
||||||
28
package.json
@@ -22,7 +22,8 @@
|
|||||||
"@astrojs/node": "^8.3.4",
|
"@astrojs/node": "^8.3.4",
|
||||||
"@astrojs/svelte": "^2.2.0",
|
"@astrojs/svelte": "^2.2.0",
|
||||||
"@astrojs/tailwind": "^3.1.3",
|
"@astrojs/tailwind": "^3.1.3",
|
||||||
"@ibcornelsen/database": "link:@ibcornelsen/database",
|
"@aws-sdk/client-s3": "^3.758.0",
|
||||||
|
"@highlight-run/node": "^3.12.0",
|
||||||
"@ibcornelsen/ui": "^0.0.2",
|
"@ibcornelsen/ui": "^0.0.2",
|
||||||
"@mollie/api-client": "^4.1.0",
|
"@mollie/api-client": "^4.1.0",
|
||||||
"@pdfme/common": "^5.2.16",
|
"@pdfme/common": "^5.2.16",
|
||||||
@@ -31,19 +32,21 @@
|
|||||||
"@trpc/client": "^10.45.2",
|
"@trpc/client": "^10.45.2",
|
||||||
"@trpc/server": "^10.45.2",
|
"@trpc/server": "^10.45.2",
|
||||||
"astro": "^4.16.17",
|
"astro": "^4.16.17",
|
||||||
"astro-typesafe-api": "^0.2.1",
|
"astro-typesafe-api": "^0.2.2",
|
||||||
"body-scroll-lock": "^4.0.0-beta.0",
|
"body-scroll-lock": "^4.0.0-beta.0",
|
||||||
"buffer": "^6.0.3",
|
"buffer": "^6.0.3",
|
||||||
"bun": "^1.1.45",
|
"bun": "^1.2.5",
|
||||||
"csvtojson": "^2.0.10",
|
"csvtojson": "^2.0.10",
|
||||||
"express": "^4.21.2",
|
"express": "^4.21.2",
|
||||||
"flag-icons": "^6.15.0",
|
"flag-icons": "^6.15.0",
|
||||||
"fontkit": "^2.0.4",
|
"fontkit": "^2.0.4",
|
||||||
|
"highlight.run": "^9.14.0",
|
||||||
"is-base64": "^1.1.0",
|
"is-base64": "^1.1.0",
|
||||||
"js-cookie": "^3.0.5",
|
"js-cookie": "^3.0.5",
|
||||||
"js-interpolate": "^1.3.2",
|
"js-interpolate": "^1.3.2",
|
||||||
"jsonwebtoken": "^9.0.2",
|
"jsonwebtoken": "^9.0.2",
|
||||||
"jwt-decode": "^4.0.0",
|
"jwt-decode": "^4.0.0",
|
||||||
|
"mime": "^4.0.6",
|
||||||
"moment": "^2.30.1",
|
"moment": "^2.30.1",
|
||||||
"moment-timezone": "^0.5.46",
|
"moment-timezone": "^0.5.46",
|
||||||
"nodemailer": "^6.10.0",
|
"nodemailer": "^6.10.0",
|
||||||
@@ -51,6 +54,10 @@
|
|||||||
"postcss-nested": "^7.0.2",
|
"postcss-nested": "^7.0.2",
|
||||||
"radix-svelte-icons": "^1.0.0",
|
"radix-svelte-icons": "^1.0.0",
|
||||||
"sass": "^1.83.4",
|
"sass": "^1.83.4",
|
||||||
|
"sharp": "^0.33.5",
|
||||||
|
"siema": "^1.5.1",
|
||||||
|
"soap": "^1.1.8",
|
||||||
|
"sqids": "^0.3.0",
|
||||||
"svelte": "^3.59.2",
|
"svelte": "^3.59.2",
|
||||||
"svelte-dialogs": "^1.2.2",
|
"svelte-dialogs": "^1.2.2",
|
||||||
"svelte-preprocess": "^5.1.4",
|
"svelte-preprocess": "^5.1.4",
|
||||||
@@ -65,12 +72,15 @@
|
|||||||
"@rollup/plugin-dsv": "^3.0.5",
|
"@rollup/plugin-dsv": "^3.0.5",
|
||||||
"@tailwindcss/typography": "^0.5.16",
|
"@tailwindcss/typography": "^0.5.16",
|
||||||
"@types/body-scroll-lock": "^3.1.2",
|
"@types/body-scroll-lock": "^3.1.2",
|
||||||
|
"@types/bun": "^1.2.2",
|
||||||
"@types/express": "^5.0.0",
|
"@types/express": "^5.0.0",
|
||||||
"@types/fontkit": "^2.0.7",
|
"@types/fontkit": "^2.0.7",
|
||||||
"@types/is-base64": "^1.1.3",
|
"@types/is-base64": "^1.1.3",
|
||||||
"@types/js-cookie": "^3.0.6",
|
"@types/js-cookie": "^3.0.6",
|
||||||
"@types/jsonwebtoken": "^9.0.7",
|
"@types/jsonwebtoken": "^9.0.7",
|
||||||
"@types/nodemailer": "^6.4.17",
|
"@types/nodemailer": "^6.4.17",
|
||||||
|
"@types/papaparse": "^5.3.15",
|
||||||
|
"@types/siema": "^1.4.11",
|
||||||
"@types/uuid": "^9.0.8",
|
"@types/uuid": "^9.0.8",
|
||||||
"@typescript-eslint/eslint-plugin": "^5.62.0",
|
"@typescript-eslint/eslint-plugin": "^5.62.0",
|
||||||
"@typescript-eslint/parser": "^5.62.0",
|
"@typescript-eslint/parser": "^5.62.0",
|
||||||
@@ -79,16 +89,22 @@
|
|||||||
"cypress": "^13.17.0",
|
"cypress": "^13.17.0",
|
||||||
"cypress-file-upload": "^5.0.8",
|
"cypress-file-upload": "^5.0.8",
|
||||||
"cypress-vite": "^1.6.0",
|
"cypress-vite": "^1.6.0",
|
||||||
"daisyui": "^4.12.23",
|
|
||||||
"eslint": "~8.15.0",
|
"eslint": "~8.15.0",
|
||||||
"eslint-config-prettier": "8.1.0",
|
"eslint-config-prettier": "8.1.0",
|
||||||
|
"papaparse": "^5.5.2",
|
||||||
"postcss": "^8.5.1",
|
"postcss": "^8.5.1",
|
||||||
"postcss-import": "^16.1.0",
|
"postcss-import": "^16.1.0",
|
||||||
"postcss-nesting": "^13.0.1",
|
"postcss-nesting": "^13.0.1",
|
||||||
"prettier": "^2.8.8",
|
"prettier": "^2.8.8",
|
||||||
"typescript": "^4.9.5"
|
"prisma": "^6.4.1",
|
||||||
|
"prisma-dbml-generator": "^0.12.0",
|
||||||
|
"prisma-generator-fake-data": "^0.14.3",
|
||||||
|
"tsx": "^4.19.3",
|
||||||
|
"typescript": "^5.8.3",
|
||||||
|
"zod-prisma": "^0.5.4"
|
||||||
},
|
},
|
||||||
"overrides": {
|
"overrides": {
|
||||||
"zod": "^3.24.1"
|
"zod": "^3.24.1"
|
||||||
}
|
},
|
||||||
|
"module": "index.ts"
|
||||||
}
|
}
|
||||||
BIN
persistent/images/img-00114710-09d3-4a60-a7e1-44e651b1e4df.webp
Normal file
|
After Width: | Height: | Size: 55 KiB |
BIN
persistent/images/img-00a51279-518a-4c93-a7ac-08daffca4fc6.jpg
Normal file
|
After Width: | Height: | Size: 71 KiB |
BIN
persistent/images/img-53cc77f5-940f-4fcb-b21c-fb46e1d6aaaf.webp
Normal file
|
After Width: | Height: | Size: 71 KiB |
BIN
persistent/images/img-6475bf75-b46d-4359-bd17-79c4e3593b59.webp
Normal file
|
After Width: | Height: | Size: 72 KiB |
BIN
persistent/images/img-694ca166-c339-44df-9240-0bb642291459.webp
Normal file
|
After Width: | Height: | Size: 71 KiB |
BIN
persistent/images/img-741ae0ba-9f33-4eb5-adfc-391e29dcdbdc.jpg
Normal file
|
After Width: | Height: | Size: 71 KiB |
BIN
persistent/images/img-74790f80-8087-40b2-937e-e05b757672c5.webp
Normal file
|
After Width: | Height: | Size: 72 KiB |
BIN
persistent/images/img-85f8a7cd-7351-408f-8576-6d7b9d0ac82b.webp
Normal file
|
After Width: | Height: | Size: 11 KiB |
BIN
persistent/images/img-a4e04cf7-9443-4462-9582-3c18b33ef711.webp
Normal file
|
After Width: | Height: | Size: 27 KiB |
BIN
persistent/images/img-a50b7f82-0add-4e3a-bb42-3f9b2e49936a.webp
Normal file
|
After Width: | Height: | Size: 71 KiB |
BIN
persistent/images/img-af39ffd3-389b-43a4-9afb-5e82020dc5b0.webp
Normal file
|
After Width: | Height: | Size: 71 KiB |
BIN
persistent/images/img-bc4f9c3e-b74c-450b-9109-6de7d6023521.webp
Normal file
|
After Width: | Height: | Size: 64 KiB |
BIN
persistent/images/img-e7269e2e-de35-491a-b24e-76bde9d88ac0.webp
Normal file
|
After Width: | Height: | Size: 71 KiB |
BIN
persistent/unterlagen/pln-7628272a-1a70-44fb-8c00-a6b5125153c4
Normal file
BIN
persistent/unterlagen/pln-9412f6f9-16b2-4c96-a612-d0b788b73df7
Normal file
BIN
persistent/unterlagen/pln-bc44e0e7-14e5-4112-b113-59f172c387a6
Normal file
BIN
persistent/unterlagen/pln-be301689-303e-4f78-b0f2-08cda642e8cf
Normal file
BIN
persistent/unterlagen/pln-c86f7c42-55cd-4448-9830-4c41ce7b3815
Normal file
856
prisma/migrations/20250407184656_id/migration.sql
Normal file
@@ -0,0 +1,856 @@
|
|||||||
|
-- CreateEnum
|
||||||
|
CREATE TYPE "Heizungsstatus" AS ENUM ('BEHEIZT', 'UNBEHEIZT', 'NICHT_VORHANDEN');
|
||||||
|
|
||||||
|
-- CreateEnum
|
||||||
|
CREATE TYPE "Lueftungskonzept" AS ENUM ('Fensterlueftung', 'Schachtlueftung', 'LueftungsanlageMitWaermerueckgewinnung', 'LueftungsanlageOhneWaermerueckgewinnung');
|
||||||
|
|
||||||
|
-- CreateEnum
|
||||||
|
CREATE TYPE "BenutzerRolle" AS ENUM ('USER', 'ADMIN');
|
||||||
|
|
||||||
|
-- CreateEnum
|
||||||
|
CREATE TYPE "BilderKategorie" AS ENUM ('Heizung', 'Fenster', 'Gebaeude', 'Daemmung', 'AnlagenTechnik');
|
||||||
|
|
||||||
|
-- CreateEnum
|
||||||
|
CREATE TYPE "Einpreisungsstatus" AS ENUM ('open', 'canceled', 'pending', 'expired');
|
||||||
|
|
||||||
|
-- CreateEnum
|
||||||
|
CREATE TYPE "Bezahlmethoden" AS ENUM ('paypal', 'giropay', 'sofort', 'creditcard', 'rechnung');
|
||||||
|
|
||||||
|
-- CreateEnum
|
||||||
|
CREATE TYPE "Rechnungsstatus" AS ENUM ('open', 'canceled', 'pending', 'authorized', 'expired', 'failed', 'paid');
|
||||||
|
|
||||||
|
-- CreateEnum
|
||||||
|
CREATE TYPE "AusweisTyp" AS ENUM ('Standard', 'standardXL', 'Beratung', 'BeratungXL', 'Offline', 'OfflineXL');
|
||||||
|
|
||||||
|
-- CreateEnum
|
||||||
|
CREATE TYPE "TicketStatus" AS ENUM ('OFFEN', 'IN_BEARBEITUNG', 'IN_WARTESCHLEIFE', 'GESCHLOSSEN', 'GELOEST');
|
||||||
|
|
||||||
|
-- CreateEnum
|
||||||
|
CREATE TYPE "UnterlagenKategorie" AS ENUM ('Grundriss', 'Sonstiges');
|
||||||
|
|
||||||
|
-- CreateEnum
|
||||||
|
CREATE TYPE "Ausstellgrund" AS ENUM ('Neubau', 'Vermietung', 'Verkauf', 'Modernisierung', 'Sonstiges');
|
||||||
|
|
||||||
|
-- CreateEnum
|
||||||
|
CREATE TYPE "Ausweisart" AS ENUM ('VerbrauchsausweisWohnen', 'VerbrauchsausweisGewerbe', 'BedarfsausweisWohnen', 'BedarfsausweisGewerbe', 'GEGNachweisWohnen', 'GEGNachweisGewerbe');
|
||||||
|
|
||||||
|
-- CreateEnum
|
||||||
|
CREATE TYPE "Service" AS ENUM ('Telefonberatung', 'Aushang', 'Qualitaetsdruck', 'SameDay');
|
||||||
|
|
||||||
|
-- CreateTable
|
||||||
|
CREATE TABLE "Anteilshaber" (
|
||||||
|
"id" VARCHAR(11) NOT NULL,
|
||||||
|
"rolle" VARCHAR,
|
||||||
|
"privilegien" BIGINT,
|
||||||
|
"benutzer_id" TEXT NOT NULL,
|
||||||
|
"objekt_id" TEXT NOT NULL,
|
||||||
|
|
||||||
|
CONSTRAINT "Anteilshaber_pkey" PRIMARY KEY ("id")
|
||||||
|
);
|
||||||
|
|
||||||
|
-- CreateTable
|
||||||
|
CREATE TABLE "ApiRequests" (
|
||||||
|
"id" VARCHAR(11) NOT NULL,
|
||||||
|
"date" TIMESTAMP(6) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
"ip" VARCHAR(50) NOT NULL,
|
||||||
|
"method" VARCHAR(10) NOT NULL,
|
||||||
|
"path" VARCHAR(100) NOT NULL,
|
||||||
|
"status" INTEGER NOT NULL,
|
||||||
|
"responseTime" DOUBLE PRECISION NOT NULL,
|
||||||
|
"responseSize" INTEGER NOT NULL,
|
||||||
|
"userAgent" VARCHAR(500) NOT NULL,
|
||||||
|
"user_id" TEXT,
|
||||||
|
|
||||||
|
CONSTRAINT "ApiRequests_pkey" PRIMARY KEY ("id")
|
||||||
|
);
|
||||||
|
|
||||||
|
-- CreateTable
|
||||||
|
CREATE TABLE "Aufnahme" (
|
||||||
|
"id" VARCHAR(11) NOT NULL,
|
||||||
|
"benutzer_id" TEXT,
|
||||||
|
"gebaeudetyp" VARCHAR,
|
||||||
|
"gebaeudeteil" VARCHAR,
|
||||||
|
"baujahr_gebaeude" INTEGER[],
|
||||||
|
"baujahr_heizung" INTEGER[],
|
||||||
|
"baujahr_klima" INTEGER[],
|
||||||
|
"einheiten" INTEGER,
|
||||||
|
"flaeche" INTEGER,
|
||||||
|
"nutzflaeche" INTEGER,
|
||||||
|
"saniert" BOOLEAN,
|
||||||
|
"keller" "Heizungsstatus",
|
||||||
|
"dachgeschoss" "Heizungsstatus",
|
||||||
|
"lueftung" "Lueftungskonzept",
|
||||||
|
"kuehlung" VARCHAR(50),
|
||||||
|
"leerstand" INTEGER,
|
||||||
|
"alternative_heizung" BOOLEAN,
|
||||||
|
"alternative_warmwasser" BOOLEAN,
|
||||||
|
"alternative_lueftung" BOOLEAN,
|
||||||
|
"alternative_kuehlung" BOOLEAN,
|
||||||
|
"erstellungsdatum" TIMESTAMP(3) DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
"zentralheizung" BOOLEAN,
|
||||||
|
"solarsystem_warmwasser" BOOLEAN,
|
||||||
|
"warmwasser_rohre_gedaemmt" BOOLEAN,
|
||||||
|
"niedertemperatur_kessel" BOOLEAN,
|
||||||
|
"brennwert_kessel" BOOLEAN,
|
||||||
|
"heizungsrohre_gedaemmt" BOOLEAN,
|
||||||
|
"standard_kessel" BOOLEAN,
|
||||||
|
"waermepumpe" BOOLEAN,
|
||||||
|
"raum_temperatur_regler" BOOLEAN,
|
||||||
|
"photovoltaik" BOOLEAN,
|
||||||
|
"durchlauf_erhitzer" BOOLEAN,
|
||||||
|
"einzelofen" BOOLEAN,
|
||||||
|
"zirkulation" BOOLEAN,
|
||||||
|
"einfach_verglasung" BOOLEAN,
|
||||||
|
"dreifach_verglasung" BOOLEAN,
|
||||||
|
"fenster_teilweise_undicht" BOOLEAN,
|
||||||
|
"doppel_verglasung" BOOLEAN,
|
||||||
|
"fenster_dicht" BOOLEAN,
|
||||||
|
"rolllaeden_kaesten_gedaemmt" BOOLEAN,
|
||||||
|
"isolier_verglasung" BOOLEAN,
|
||||||
|
"tueren_undicht" BOOLEAN,
|
||||||
|
"tueren_dicht" BOOLEAN,
|
||||||
|
"dachgeschoss_gedaemmt" BOOLEAN,
|
||||||
|
"keller_decke_gedaemmt" BOOLEAN,
|
||||||
|
"keller_wand_gedaemmt" BOOLEAN,
|
||||||
|
"aussenwand_gedaemmt" BOOLEAN,
|
||||||
|
"oberste_geschossdecke_gedaemmt" BOOLEAN,
|
||||||
|
"aussenwand_min_12cm_gedaemmt" BOOLEAN,
|
||||||
|
"dachgeschoss_min_12cm_gedaemmt" BOOLEAN,
|
||||||
|
"oberste_geschossdecke_min_12cm_gedaemmt" BOOLEAN,
|
||||||
|
"objekt_id" TEXT NOT NULL,
|
||||||
|
|
||||||
|
CONSTRAINT "Aufnahme_pkey" PRIMARY KEY ("id")
|
||||||
|
);
|
||||||
|
|
||||||
|
-- CreateTable
|
||||||
|
CREATE TABLE "BedarfsausweisGewerbe" (
|
||||||
|
"id" VARCHAR(11) NOT NULL,
|
||||||
|
"ausstellgrund" "Ausstellgrund",
|
||||||
|
"keller_beheizt" BOOLEAN,
|
||||||
|
"storniert" BOOLEAN DEFAULT false,
|
||||||
|
"bestellt" BOOLEAN DEFAULT false,
|
||||||
|
"zurueckgestellt" BOOLEAN DEFAULT false,
|
||||||
|
"abluftanlage" BOOLEAN DEFAULT false,
|
||||||
|
"zu_abluftanlage" BOOLEAN DEFAULT false,
|
||||||
|
"konditionierung_der_zuluft" BOOLEAN DEFAULT false,
|
||||||
|
"luftheizung" BOOLEAN DEFAULT false,
|
||||||
|
"hallenheizung" BOOLEAN DEFAULT false,
|
||||||
|
"dunkelstrahler" BOOLEAN DEFAULT false,
|
||||||
|
"direktheizung" BOOLEAN DEFAULT false,
|
||||||
|
"infrarotstrahler" BOOLEAN DEFAULT false,
|
||||||
|
"fussbodenheizung" BOOLEAN DEFAULT false,
|
||||||
|
"bauteilaktivierung" BOOLEAN DEFAULT false,
|
||||||
|
"klimatisierung" BOOLEAN DEFAULT false,
|
||||||
|
"nachweistyp" "AusweisTyp" NOT NULL DEFAULT 'Standard',
|
||||||
|
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
"updated_at" TIMESTAMP(3) NOT NULL,
|
||||||
|
"benutzer_id" TEXT,
|
||||||
|
"aufnahme_id" TEXT NOT NULL,
|
||||||
|
"rechnung_id" TEXT,
|
||||||
|
"geg_einpreisung_id" TEXT,
|
||||||
|
|
||||||
|
CONSTRAINT "BedarfsausweisGewerbe_pkey" PRIMARY KEY ("id")
|
||||||
|
);
|
||||||
|
|
||||||
|
-- CreateTable
|
||||||
|
CREATE TABLE "BedarfsausweisWohnen" (
|
||||||
|
"id" VARCHAR(11) NOT NULL,
|
||||||
|
"alte_ausweis_id" INTEGER,
|
||||||
|
"benutzer_id" TEXT,
|
||||||
|
"ausstellgrund" "Ausstellgrund",
|
||||||
|
"registriernummer" VARCHAR,
|
||||||
|
"alternative_heizung" BOOLEAN,
|
||||||
|
"alternative_warmwasser" BOOLEAN,
|
||||||
|
"alternative_lueftung" BOOLEAN,
|
||||||
|
"alternative_kuehlung" BOOLEAN,
|
||||||
|
"energieeffizienzklasse" VARCHAR(5),
|
||||||
|
"ausstellungsdatum" TIMESTAMP(3),
|
||||||
|
"boxpruefung" BOOLEAN DEFAULT false,
|
||||||
|
"anzahl_vollgeschosse" INTEGER,
|
||||||
|
"geschosshoehe" DOUBLE PRECISION,
|
||||||
|
"anzahl_gauben" INTEGER,
|
||||||
|
"breite_gauben" DOUBLE PRECISION,
|
||||||
|
"masse_a" DOUBLE PRECISION,
|
||||||
|
"masse_b" DOUBLE PRECISION,
|
||||||
|
"masse_c" DOUBLE PRECISION,
|
||||||
|
"masse_d" DOUBLE PRECISION,
|
||||||
|
"masse_e" DOUBLE PRECISION,
|
||||||
|
"masse_f" DOUBLE PRECISION,
|
||||||
|
"fensterflaeche_so_sw" DOUBLE PRECISION,
|
||||||
|
"fensterflaeche_nw_no" DOUBLE PRECISION,
|
||||||
|
"aussenwandflaeche_unbeheizt" DOUBLE PRECISION,
|
||||||
|
"dachflaeche" DOUBLE PRECISION,
|
||||||
|
"deckenflaeche" DOUBLE PRECISION,
|
||||||
|
"dach_u_wert" DOUBLE PRECISION,
|
||||||
|
"decke_u_wert" DOUBLE PRECISION,
|
||||||
|
"aussenwand_flaeche" DOUBLE PRECISION,
|
||||||
|
"aussenwand_u_wert" DOUBLE PRECISION,
|
||||||
|
"fussboden_flaeche" DOUBLE PRECISION,
|
||||||
|
"fussboden_u_wert" DOUBLE PRECISION,
|
||||||
|
"volumen" DOUBLE PRECISION,
|
||||||
|
"dicht" BOOLEAN,
|
||||||
|
"fenster_flaeche_1" DOUBLE PRECISION,
|
||||||
|
"fenster_art_1" DOUBLE PRECISION,
|
||||||
|
"fenster_flaeche_2" DOUBLE PRECISION,
|
||||||
|
"fenster_art_2" DOUBLE PRECISION,
|
||||||
|
"dachfenster_flaeche" DOUBLE PRECISION,
|
||||||
|
"dachfenster_art" DOUBLE PRECISION,
|
||||||
|
"haustuer_flaeche" DOUBLE PRECISION,
|
||||||
|
"haustuer_art" DOUBLE PRECISION,
|
||||||
|
"dach_bauart" VARCHAR,
|
||||||
|
"decke_bauart" VARCHAR,
|
||||||
|
"dach_daemmung" DOUBLE PRECISION,
|
||||||
|
"decke_daemmung" DOUBLE PRECISION,
|
||||||
|
"aussenwand_daemmung" DOUBLE PRECISION,
|
||||||
|
"boden_daemmung" DOUBLE PRECISION,
|
||||||
|
"aussenwand_bauart" VARCHAR,
|
||||||
|
"boden_bauart" VARCHAR,
|
||||||
|
"warmwasser_verteilung" VARCHAR,
|
||||||
|
"warmwasser_speicherung" VARCHAR,
|
||||||
|
"warmwasser_erzeugung" VARCHAR,
|
||||||
|
"heizung_zentral" BOOLEAN,
|
||||||
|
"heizung_verteilung" VARCHAR,
|
||||||
|
"heizung_speicherung" VARCHAR,
|
||||||
|
"waerme_erzeugung_heizung" VARCHAR,
|
||||||
|
"anteil_zusatzheizung" DOUBLE PRECISION,
|
||||||
|
"kollektor_flaeche" DOUBLE PRECISION,
|
||||||
|
"ausgestellt" BOOLEAN DEFAULT false,
|
||||||
|
"storniert" BOOLEAN DEFAULT false,
|
||||||
|
"bestellt" BOOLEAN DEFAULT false,
|
||||||
|
"zurueckgestellt" BOOLEAN DEFAULT false,
|
||||||
|
"prueftext" VARCHAR(1000),
|
||||||
|
"beschreibung" TEXT,
|
||||||
|
"kontrolldatei_angefragt" BOOLEAN DEFAULT false,
|
||||||
|
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
"updated_at" TIMESTAMP(3) NOT NULL,
|
||||||
|
"pruefpunkt_heizungsalter" BOOLEAN DEFAULT false,
|
||||||
|
"pruefpunkt_verbrauch_niedrig" BOOLEAN DEFAULT false,
|
||||||
|
"pruefpunkt_verbrauch_hoch" BOOLEAN DEFAULT false,
|
||||||
|
"pruefpunkt_verbrauch_null" BOOLEAN DEFAULT false,
|
||||||
|
"pruefpunkt_verbrauch_abweichung" BOOLEAN DEFAULT false,
|
||||||
|
"pruefpunkt_wohnflaeche_einheiten" BOOLEAN DEFAULT false,
|
||||||
|
"pruefpunkt_strom_null" BOOLEAN DEFAULT false,
|
||||||
|
"pruefpunkt_strom_abweichung" BOOLEAN DEFAULT false,
|
||||||
|
"pruefpunkt_plz" BOOLEAN DEFAULT false,
|
||||||
|
"pruefpunkt_heizungsanlage" BOOLEAN DEFAULT false,
|
||||||
|
"pruefpunkt_anteil_warmwasser" BOOLEAN DEFAULT false,
|
||||||
|
"pruefpunkt_wohnflaeche" BOOLEAN DEFAULT false,
|
||||||
|
"pruefpunkt_geometrie" BOOLEAN DEFAULT false,
|
||||||
|
"pruefpunkt_fenster" BOOLEAN DEFAULT false,
|
||||||
|
"ausweistyp" "AusweisTyp" NOT NULL DEFAULT 'Standard',
|
||||||
|
"rechnung_id" TEXT,
|
||||||
|
"aufnahme_id" TEXT NOT NULL,
|
||||||
|
|
||||||
|
CONSTRAINT "BedarfsausweisWohnen_pkey" PRIMARY KEY ("id")
|
||||||
|
);
|
||||||
|
|
||||||
|
-- CreateTable
|
||||||
|
CREATE TABLE "benutzer" (
|
||||||
|
"id" VARCHAR(11) NOT NULL,
|
||||||
|
"alte_id" INTEGER,
|
||||||
|
"name" VARCHAR(100),
|
||||||
|
"vorname" VARCHAR(50),
|
||||||
|
"email" VARCHAR(255) NOT NULL,
|
||||||
|
"passwort" VARCHAR(255) NOT NULL,
|
||||||
|
"profilbild" VARCHAR,
|
||||||
|
"plz" VARCHAR(5),
|
||||||
|
"ort" VARCHAR(50),
|
||||||
|
"adresse" VARCHAR(150),
|
||||||
|
"telefon" VARCHAR(50),
|
||||||
|
"anrede" VARCHAR(50),
|
||||||
|
"rolle" "BenutzerRolle" NOT NULL DEFAULT 'USER',
|
||||||
|
"firma" TEXT,
|
||||||
|
"lex_office_id" TEXT,
|
||||||
|
"verified" BOOLEAN NOT NULL DEFAULT false,
|
||||||
|
|
||||||
|
CONSTRAINT "benutzer_pkey" PRIMARY KEY ("id")
|
||||||
|
);
|
||||||
|
|
||||||
|
-- CreateTable
|
||||||
|
CREATE TABLE "Bild" (
|
||||||
|
"id" VARCHAR(11) NOT NULL,
|
||||||
|
"kategorie" "BilderKategorie" NOT NULL,
|
||||||
|
"name" TEXT NOT NULL,
|
||||||
|
"aufnahme_id" TEXT,
|
||||||
|
|
||||||
|
CONSTRAINT "Bild_pkey" PRIMARY KEY ("id")
|
||||||
|
);
|
||||||
|
|
||||||
|
-- CreateTable
|
||||||
|
CREATE TABLE "Event" (
|
||||||
|
"id" VARCHAR(11) NOT NULL,
|
||||||
|
"date" TIMESTAMP(6) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
"title" VARCHAR(255) NOT NULL,
|
||||||
|
"description" TEXT,
|
||||||
|
"aufnahme_id" TEXT NOT NULL,
|
||||||
|
"benutzer_id" TEXT,
|
||||||
|
|
||||||
|
CONSTRAINT "Event_pkey" PRIMARY KEY ("id")
|
||||||
|
);
|
||||||
|
|
||||||
|
-- CreateTable
|
||||||
|
CREATE TABLE "GEGEinpreisung" (
|
||||||
|
"id" VARCHAR(11) NOT NULL,
|
||||||
|
"empfaenger" VARCHAR,
|
||||||
|
"strasse" VARCHAR,
|
||||||
|
"plz" VARCHAR,
|
||||||
|
"ort" VARCHAR,
|
||||||
|
"zusatzzeile" VARCHAR,
|
||||||
|
"telefon" VARCHAR,
|
||||||
|
"email" VARCHAR,
|
||||||
|
"abweichende_versand_adresse" BOOLEAN DEFAULT false,
|
||||||
|
"versand_empfaenger" VARCHAR,
|
||||||
|
"versand_strasse" VARCHAR,
|
||||||
|
"versand_plz" VARCHAR,
|
||||||
|
"versand_ort" VARCHAR,
|
||||||
|
"versand_zusatzzeile" VARCHAR,
|
||||||
|
"status" "Einpreisungsstatus" NOT NULL,
|
||||||
|
"benutzer_id" TEXT,
|
||||||
|
|
||||||
|
CONSTRAINT "GEGEinpreisung_pkey" PRIMARY KEY ("id")
|
||||||
|
);
|
||||||
|
|
||||||
|
-- CreateTable
|
||||||
|
CREATE TABLE "GEGNachweisGewerbe" (
|
||||||
|
"id" VARCHAR(11) NOT NULL,
|
||||||
|
"ausstellgrund" "Ausstellgrund",
|
||||||
|
"keller_beheizt" BOOLEAN,
|
||||||
|
"storniert" BOOLEAN DEFAULT false,
|
||||||
|
"bestellt" BOOLEAN DEFAULT false,
|
||||||
|
"zurueckgestellt" BOOLEAN DEFAULT false,
|
||||||
|
"beschreibung" TEXT,
|
||||||
|
"nachweistyp" "AusweisTyp" NOT NULL DEFAULT 'Standard',
|
||||||
|
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
"updated_at" TIMESTAMP(3) NOT NULL,
|
||||||
|
"benutzer_id" TEXT,
|
||||||
|
"aufnahme_id" TEXT NOT NULL,
|
||||||
|
"rechnung_id" TEXT,
|
||||||
|
"geg_einpreisung_id" TEXT,
|
||||||
|
|
||||||
|
CONSTRAINT "GEGNachweisGewerbe_pkey" PRIMARY KEY ("id")
|
||||||
|
);
|
||||||
|
|
||||||
|
-- CreateTable
|
||||||
|
CREATE TABLE "GEGNachweisWohnen" (
|
||||||
|
"id" VARCHAR(11) NOT NULL,
|
||||||
|
"ausstellgrund" "Ausstellgrund",
|
||||||
|
"keller_beheizt" BOOLEAN,
|
||||||
|
"storniert" BOOLEAN DEFAULT false,
|
||||||
|
"bestellt" BOOLEAN DEFAULT false,
|
||||||
|
"zurueckgestellt" BOOLEAN DEFAULT false,
|
||||||
|
"beschreibung" TEXT,
|
||||||
|
"nachweistyp" "AusweisTyp" NOT NULL DEFAULT 'Standard',
|
||||||
|
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
"updated_at" TIMESTAMP(3) NOT NULL,
|
||||||
|
"benutzer_id" TEXT,
|
||||||
|
"aufnahme_id" TEXT NOT NULL,
|
||||||
|
"rechnung_id" TEXT,
|
||||||
|
"geg_einpreisung_id" TEXT,
|
||||||
|
|
||||||
|
CONSTRAINT "GEGNachweisWohnen_pkey" PRIMARY KEY ("id")
|
||||||
|
);
|
||||||
|
|
||||||
|
-- CreateTable
|
||||||
|
CREATE TABLE "Klimafaktoren" (
|
||||||
|
"id" SERIAL NOT NULL,
|
||||||
|
"plz" VARCHAR(5) NOT NULL,
|
||||||
|
"month" INTEGER NOT NULL,
|
||||||
|
"year" INTEGER NOT NULL,
|
||||||
|
"klimafaktor" DOUBLE PRECISION NOT NULL DEFAULT 1,
|
||||||
|
|
||||||
|
CONSTRAINT "Klimafaktoren_pkey" PRIMARY KEY ("id")
|
||||||
|
);
|
||||||
|
|
||||||
|
-- CreateTable
|
||||||
|
CREATE TABLE "Objekt" (
|
||||||
|
"id" VARCHAR(11) NOT NULL,
|
||||||
|
"latitude" DOUBLE PRECISION,
|
||||||
|
"longitude" DOUBLE PRECISION,
|
||||||
|
"plz" VARCHAR(5),
|
||||||
|
"ort" VARCHAR(50),
|
||||||
|
"adresse" VARCHAR(100),
|
||||||
|
"erstellungsdatum" TIMESTAMP(3) DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
"benutzer_id" TEXT,
|
||||||
|
|
||||||
|
CONSTRAINT "Objekt_pkey" PRIMARY KEY ("id")
|
||||||
|
);
|
||||||
|
|
||||||
|
-- CreateTable
|
||||||
|
CREATE TABLE "Postleitzahlen" (
|
||||||
|
"id" SERIAL NOT NULL,
|
||||||
|
"plz" VARCHAR(5) NOT NULL,
|
||||||
|
"stadt" VARCHAR(100) NOT NULL,
|
||||||
|
"bundesland" VARCHAR(100) NOT NULL,
|
||||||
|
"landkreis" VARCHAR(100) NOT NULL,
|
||||||
|
"lat" DOUBLE PRECISION NOT NULL,
|
||||||
|
"lon" DOUBLE PRECISION NOT NULL,
|
||||||
|
|
||||||
|
CONSTRAINT "Postleitzahlen_pkey" PRIMARY KEY ("id")
|
||||||
|
);
|
||||||
|
|
||||||
|
-- CreateTable
|
||||||
|
CREATE TABLE "Rechnung" (
|
||||||
|
"id" VARCHAR(11) NOT NULL,
|
||||||
|
"alte_id" INTEGER,
|
||||||
|
"empfaenger" VARCHAR,
|
||||||
|
"strasse" VARCHAR,
|
||||||
|
"plz" VARCHAR,
|
||||||
|
"ort" VARCHAR,
|
||||||
|
"zusatzzeile" VARCHAR,
|
||||||
|
"telefon" VARCHAR,
|
||||||
|
"email" VARCHAR,
|
||||||
|
"abweichende_versand_adresse" BOOLEAN DEFAULT false,
|
||||||
|
"versand_empfaenger" VARCHAR,
|
||||||
|
"versand_strasse" VARCHAR,
|
||||||
|
"versand_plz" VARCHAR,
|
||||||
|
"versand_ort" VARCHAR,
|
||||||
|
"versand_zusatzzeile" VARCHAR,
|
||||||
|
"bezahlmethode" "Bezahlmethoden" NOT NULL,
|
||||||
|
"status" "Rechnungsstatus" NOT NULL,
|
||||||
|
"services" "Service"[],
|
||||||
|
"betrag" DOUBLE PRECISION NOT NULL,
|
||||||
|
"erstellt_am" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
"bezahlt_am" TIMESTAMP(3),
|
||||||
|
"storniert_am" TIMESTAMP(3),
|
||||||
|
"transaktions_referenz" VARCHAR,
|
||||||
|
"partner_code" TEXT,
|
||||||
|
"lex_office_id" TEXT,
|
||||||
|
"benutzer_id" TEXT NOT NULL,
|
||||||
|
|
||||||
|
CONSTRAINT "Rechnung_pkey" PRIMARY KEY ("id")
|
||||||
|
);
|
||||||
|
|
||||||
|
-- CreateTable
|
||||||
|
CREATE TABLE "RefreshTokens" (
|
||||||
|
"id" SERIAL NOT NULL,
|
||||||
|
"token" TEXT NOT NULL,
|
||||||
|
"ip" TEXT NOT NULL,
|
||||||
|
"expiry" TIMESTAMP(3) NOT NULL,
|
||||||
|
"benutzer_id" TEXT NOT NULL,
|
||||||
|
|
||||||
|
CONSTRAINT "RefreshTokens_pkey" PRIMARY KEY ("id")
|
||||||
|
);
|
||||||
|
|
||||||
|
-- CreateTable
|
||||||
|
CREATE TABLE "Tickets" (
|
||||||
|
"id" VARCHAR(11) NOT NULL,
|
||||||
|
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
"updated_at" TIMESTAMP(3),
|
||||||
|
"deleted_at" TIMESTAMP(3),
|
||||||
|
"status" "TicketStatus" NOT NULL DEFAULT 'OFFEN',
|
||||||
|
"titel" TEXT NOT NULL,
|
||||||
|
"beschreibung" TEXT NOT NULL,
|
||||||
|
"metadata" JSONB,
|
||||||
|
"email" TEXT NOT NULL,
|
||||||
|
"bearbeiter_id" TEXT,
|
||||||
|
"prioritaet" INTEGER DEFAULT 0,
|
||||||
|
"benutzer_id" TEXT,
|
||||||
|
|
||||||
|
CONSTRAINT "Tickets_pkey" PRIMARY KEY ("id")
|
||||||
|
);
|
||||||
|
|
||||||
|
-- CreateTable
|
||||||
|
CREATE TABLE "Unterlage" (
|
||||||
|
"id" VARCHAR(11) NOT NULL,
|
||||||
|
"name" TEXT,
|
||||||
|
"kategorie" TEXT,
|
||||||
|
"mime" TEXT NOT NULL,
|
||||||
|
"aufnahme_id" TEXT,
|
||||||
|
|
||||||
|
CONSTRAINT "Unterlage_pkey" PRIMARY KEY ("id")
|
||||||
|
);
|
||||||
|
|
||||||
|
-- CreateTable
|
||||||
|
CREATE TABLE "VerbrauchsausweisGewerbe" (
|
||||||
|
"id" VARCHAR(11) NOT NULL,
|
||||||
|
"alte_ausweis_id" INTEGER,
|
||||||
|
"ausstellgrund" "Ausstellgrund",
|
||||||
|
"registriernummer" VARCHAR,
|
||||||
|
"zusaetzliche_heizquelle" BOOLEAN,
|
||||||
|
"einheit_1" VARCHAR(50),
|
||||||
|
"einheit_2" VARCHAR(50),
|
||||||
|
"startdatum" TIMESTAMP(6),
|
||||||
|
"verbrauch_1" INTEGER,
|
||||||
|
"verbrauch_2" INTEGER,
|
||||||
|
"verbrauch_3" INTEGER,
|
||||||
|
"verbrauch_4" INTEGER,
|
||||||
|
"verbrauch_5" INTEGER,
|
||||||
|
"verbrauch_6" INTEGER,
|
||||||
|
"brennstoff_1" VARCHAR(50),
|
||||||
|
"brennstoff_2" VARCHAR(50),
|
||||||
|
"energieeffizienzklasse" VARCHAR(5),
|
||||||
|
"ausstellungsdatum" TIMESTAMP(3),
|
||||||
|
"boxpruefung" BOOLEAN DEFAULT false,
|
||||||
|
"strom_1" INTEGER,
|
||||||
|
"strom_2" INTEGER,
|
||||||
|
"strom_3" INTEGER,
|
||||||
|
"stromverbrauch_enthaelt_heizung" BOOLEAN,
|
||||||
|
"stromverbrauch_enthaelt_warmwasser" BOOLEAN,
|
||||||
|
"stromverbrauch_enthaelt_lueftung" BOOLEAN,
|
||||||
|
"stromverbrauch_enthaelt_beleuchtung" BOOLEAN,
|
||||||
|
"stromverbrauch_enthaelt_kuehlung" BOOLEAN,
|
||||||
|
"stromverbrauch_enthaelt_sonstige" VARCHAR(255),
|
||||||
|
"kuehlung_enthalten" BOOLEAN,
|
||||||
|
"anteil_kuehlung_1" DOUBLE PRECISION,
|
||||||
|
"anteil_kuehlung_2" DOUBLE PRECISION,
|
||||||
|
"keller_beheizt" BOOLEAN,
|
||||||
|
"alternative_heizung" BOOLEAN,
|
||||||
|
"alternative_warmwasser" BOOLEAN,
|
||||||
|
"alternative_lueftung" BOOLEAN,
|
||||||
|
"alternative_kuehlung" BOOLEAN,
|
||||||
|
"warmwasser_enthalten" BOOLEAN,
|
||||||
|
"warmwasser_anteil_bekannt" BOOLEAN,
|
||||||
|
"anteil_warmwasser_1" DOUBLE PRECISION,
|
||||||
|
"anteil_warmwasser_2" DOUBLE PRECISION,
|
||||||
|
"ausgestellt" BOOLEAN DEFAULT false,
|
||||||
|
"storniert" BOOLEAN DEFAULT false,
|
||||||
|
"bestellt" BOOLEAN DEFAULT false,
|
||||||
|
"zurueckgestellt" BOOLEAN DEFAULT false,
|
||||||
|
"prueftext" VARCHAR(1000),
|
||||||
|
"beschreibung" TEXT,
|
||||||
|
"kontrolldatei_angefragt" BOOLEAN DEFAULT false,
|
||||||
|
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
"updated_at" TIMESTAMP(3) NOT NULL,
|
||||||
|
"ausweistyp" "AusweisTyp" NOT NULL DEFAULT 'Standard',
|
||||||
|
"pruefpunkt_heizungsalter" BOOLEAN DEFAULT false,
|
||||||
|
"pruefpunkt_verbrauch_niedrig" BOOLEAN DEFAULT false,
|
||||||
|
"pruefpunkt_verbrauch_hoch" BOOLEAN DEFAULT false,
|
||||||
|
"pruefpunkt_verbrauch_null" BOOLEAN DEFAULT false,
|
||||||
|
"pruefpunkt_verbrauch_abweichung" BOOLEAN DEFAULT false,
|
||||||
|
"pruefpunkt_wohnflaeche_einheiten" BOOLEAN DEFAULT false,
|
||||||
|
"pruefpunkt_strom_null" BOOLEAN DEFAULT false,
|
||||||
|
"pruefpunkt_strom_abweichung" BOOLEAN DEFAULT false,
|
||||||
|
"pruefpunkt_plz" BOOLEAN DEFAULT false,
|
||||||
|
"pruefpunkt_heizungsanlage" BOOLEAN DEFAULT false,
|
||||||
|
"pruefpunkt_anteil_warmwasser" BOOLEAN DEFAULT false,
|
||||||
|
"pruefpunkt_wohnflaeche" BOOLEAN DEFAULT false,
|
||||||
|
"pruefpunkt_geometrie" BOOLEAN DEFAULT false,
|
||||||
|
"pruefpunkt_fenster" BOOLEAN DEFAULT false,
|
||||||
|
"benutzer_id" TEXT,
|
||||||
|
"rechnung_id" TEXT,
|
||||||
|
"aufnahme_id" TEXT NOT NULL,
|
||||||
|
|
||||||
|
CONSTRAINT "VerbrauchsausweisGewerbe_pkey" PRIMARY KEY ("id")
|
||||||
|
);
|
||||||
|
|
||||||
|
-- CreateTable
|
||||||
|
CREATE TABLE "VerbrauchsausweisWohnen" (
|
||||||
|
"id" VARCHAR(11) NOT NULL,
|
||||||
|
"alte_ausweis_id" INTEGER,
|
||||||
|
"ausstellgrund" "Ausstellgrund",
|
||||||
|
"registriernummer" VARCHAR,
|
||||||
|
"zusaetzliche_heizquelle" BOOLEAN,
|
||||||
|
"einheit_1" VARCHAR(50),
|
||||||
|
"einheit_2" VARCHAR(50),
|
||||||
|
"brennstoff_1" VARCHAR(50),
|
||||||
|
"brennstoff_2" VARCHAR(50),
|
||||||
|
"energieeffizienzklasse" VARCHAR(5),
|
||||||
|
"ausstellungsdatum" TIMESTAMP(3),
|
||||||
|
"boxpruefung" BOOLEAN DEFAULT false,
|
||||||
|
"startdatum" TIMESTAMPTZ(6),
|
||||||
|
"verbrauch_1" INTEGER,
|
||||||
|
"verbrauch_2" INTEGER,
|
||||||
|
"verbrauch_3" INTEGER,
|
||||||
|
"verbrauch_4" INTEGER,
|
||||||
|
"verbrauch_5" INTEGER,
|
||||||
|
"verbrauch_6" INTEGER,
|
||||||
|
"warmwasser_enthalten" BOOLEAN,
|
||||||
|
"warmwasser_anteil_bekannt" BOOLEAN,
|
||||||
|
"faktorKeller" DOUBLE PRECISION,
|
||||||
|
"alternative_heizung" BOOLEAN,
|
||||||
|
"alternative_warmwasser" BOOLEAN,
|
||||||
|
"alternative_lueftung" BOOLEAN,
|
||||||
|
"alternative_kuehlung" BOOLEAN,
|
||||||
|
"anteil_warmwasser_1" DOUBLE PRECISION,
|
||||||
|
"anteil_warmwasser_2" DOUBLE PRECISION,
|
||||||
|
"ausgestellt" BOOLEAN DEFAULT false,
|
||||||
|
"storniert" BOOLEAN DEFAULT false,
|
||||||
|
"bestellt" BOOLEAN DEFAULT false,
|
||||||
|
"zurueckgestellt" BOOLEAN DEFAULT false,
|
||||||
|
"prueftext" VARCHAR(1000),
|
||||||
|
"beschreibung" TEXT,
|
||||||
|
"kontrolldatei_angefragt" BOOLEAN DEFAULT false,
|
||||||
|
"ausweistyp" "AusweisTyp" NOT NULL DEFAULT 'Standard',
|
||||||
|
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
"updated_at" TIMESTAMP(3) NOT NULL,
|
||||||
|
"pruefpunkt_heizungsalter" BOOLEAN DEFAULT false,
|
||||||
|
"pruefpunkt_verbrauch_niedrig" BOOLEAN DEFAULT false,
|
||||||
|
"pruefpunkt_verbrauch_hoch" BOOLEAN DEFAULT false,
|
||||||
|
"pruefpunkt_verbrauch_null" BOOLEAN DEFAULT false,
|
||||||
|
"pruefpunkt_verbrauch_abweichung" BOOLEAN DEFAULT false,
|
||||||
|
"pruefpunkt_wohnflaeche_einheiten" BOOLEAN DEFAULT false,
|
||||||
|
"pruefpunkt_strom_null" BOOLEAN DEFAULT false,
|
||||||
|
"pruefpunkt_strom_abweichung" BOOLEAN DEFAULT false,
|
||||||
|
"pruefpunkt_plz" BOOLEAN DEFAULT false,
|
||||||
|
"pruefpunkt_heizungsanlage" BOOLEAN DEFAULT false,
|
||||||
|
"pruefpunkt_anteil_warmwasser" BOOLEAN DEFAULT false,
|
||||||
|
"pruefpunkt_wohnflaeche" BOOLEAN DEFAULT false,
|
||||||
|
"pruefpunkt_geometrie" BOOLEAN DEFAULT false,
|
||||||
|
"pruefpunkt_fenster" BOOLEAN DEFAULT false,
|
||||||
|
"benutzer_id" TEXT,
|
||||||
|
"rechnung_id" TEXT,
|
||||||
|
"aufnahme_id" TEXT NOT NULL,
|
||||||
|
|
||||||
|
CONSTRAINT "VerbrauchsausweisWohnen_pkey" PRIMARY KEY ("id")
|
||||||
|
);
|
||||||
|
|
||||||
|
-- CreateTable
|
||||||
|
CREATE TABLE "documenttemplates" (
|
||||||
|
"id" SERIAL NOT NULL,
|
||||||
|
"name" VARCHAR(100) NOT NULL,
|
||||||
|
"shortdescription" VARCHAR(100) NOT NULL,
|
||||||
|
"longdescription" VARCHAR(5000) NOT NULL,
|
||||||
|
"user_id" TEXT NOT NULL,
|
||||||
|
"is_private" BOOLEAN NOT NULL DEFAULT true,
|
||||||
|
"documenttype" INTEGER NOT NULL,
|
||||||
|
"filename" VARCHAR(100) NOT NULL,
|
||||||
|
"created_at" TIMESTAMP(0) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
"updated_at" TIMESTAMP(0) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
|
||||||
|
CONSTRAINT "PK_DOCUMENTTEMPLATES" PRIMARY KEY ("id")
|
||||||
|
);
|
||||||
|
|
||||||
|
-- CreateTable
|
||||||
|
CREATE TABLE "documenttypes" (
|
||||||
|
"id" SERIAL NOT NULL,
|
||||||
|
"name" VARCHAR(100) NOT NULL,
|
||||||
|
"shortdescription" VARCHAR(100) NOT NULL,
|
||||||
|
"longdescription" VARCHAR(5000) NOT NULL,
|
||||||
|
|
||||||
|
CONSTRAINT "PK_DOCUMENTTYPES" PRIMARY KEY ("id")
|
||||||
|
);
|
||||||
|
|
||||||
|
-- CreateTable
|
||||||
|
CREATE TABLE "tokens" (
|
||||||
|
"id" SERIAL NOT NULL,
|
||||||
|
"token" VARCHAR(36) NOT NULL,
|
||||||
|
"user_id" TEXT NOT NULL,
|
||||||
|
"date_created" TIMESTAMP(6) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
"last_used" TIMESTAMP(6) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
"times_used" INTEGER NOT NULL DEFAULT 0,
|
||||||
|
"permissions" INTEGER NOT NULL DEFAULT 0,
|
||||||
|
|
||||||
|
CONSTRAINT "PK_TOKENS" PRIMARY KEY ("id")
|
||||||
|
);
|
||||||
|
|
||||||
|
-- CreateIndex
|
||||||
|
CREATE UNIQUE INDEX "Anteilshaber_id_key" ON "Anteilshaber"("id");
|
||||||
|
|
||||||
|
-- CreateIndex
|
||||||
|
CREATE UNIQUE INDEX "ApiRequests_id_key" ON "ApiRequests"("id");
|
||||||
|
|
||||||
|
-- CreateIndex
|
||||||
|
CREATE UNIQUE INDEX "Aufnahme_id_key" ON "Aufnahme"("id");
|
||||||
|
|
||||||
|
-- CreateIndex
|
||||||
|
CREATE UNIQUE INDEX "BedarfsausweisGewerbe_id_key" ON "BedarfsausweisGewerbe"("id");
|
||||||
|
|
||||||
|
-- CreateIndex
|
||||||
|
CREATE UNIQUE INDEX "BedarfsausweisGewerbe_aufnahme_id_key" ON "BedarfsausweisGewerbe"("aufnahme_id");
|
||||||
|
|
||||||
|
-- CreateIndex
|
||||||
|
CREATE UNIQUE INDEX "BedarfsausweisGewerbe_rechnung_id_key" ON "BedarfsausweisGewerbe"("rechnung_id");
|
||||||
|
|
||||||
|
-- CreateIndex
|
||||||
|
CREATE UNIQUE INDEX "BedarfsausweisGewerbe_geg_einpreisung_id_key" ON "BedarfsausweisGewerbe"("geg_einpreisung_id");
|
||||||
|
|
||||||
|
-- CreateIndex
|
||||||
|
CREATE UNIQUE INDEX "BedarfsausweisWohnen_id_key" ON "BedarfsausweisWohnen"("id");
|
||||||
|
|
||||||
|
-- CreateIndex
|
||||||
|
CREATE UNIQUE INDEX "BedarfsausweisWohnen_rechnung_id_key" ON "BedarfsausweisWohnen"("rechnung_id");
|
||||||
|
|
||||||
|
-- CreateIndex
|
||||||
|
CREATE UNIQUE INDEX "BedarfsausweisWohnen_aufnahme_id_key" ON "BedarfsausweisWohnen"("aufnahme_id");
|
||||||
|
|
||||||
|
-- CreateIndex
|
||||||
|
CREATE UNIQUE INDEX "benutzer_id_key" ON "benutzer"("id");
|
||||||
|
|
||||||
|
-- CreateIndex
|
||||||
|
CREATE UNIQUE INDEX "benutzer_email_idx" ON "benutzer"("email");
|
||||||
|
|
||||||
|
-- CreateIndex
|
||||||
|
CREATE UNIQUE INDEX "Bild_id_key" ON "Bild"("id");
|
||||||
|
|
||||||
|
-- CreateIndex
|
||||||
|
CREATE UNIQUE INDEX "Event_id_key" ON "Event"("id");
|
||||||
|
|
||||||
|
-- CreateIndex
|
||||||
|
CREATE UNIQUE INDEX "GEGEinpreisung_id_key" ON "GEGEinpreisung"("id");
|
||||||
|
|
||||||
|
-- CreateIndex
|
||||||
|
CREATE UNIQUE INDEX "GEGNachweisGewerbe_id_key" ON "GEGNachweisGewerbe"("id");
|
||||||
|
|
||||||
|
-- CreateIndex
|
||||||
|
CREATE UNIQUE INDEX "GEGNachweisGewerbe_aufnahme_id_key" ON "GEGNachweisGewerbe"("aufnahme_id");
|
||||||
|
|
||||||
|
-- CreateIndex
|
||||||
|
CREATE UNIQUE INDEX "GEGNachweisGewerbe_rechnung_id_key" ON "GEGNachweisGewerbe"("rechnung_id");
|
||||||
|
|
||||||
|
-- CreateIndex
|
||||||
|
CREATE UNIQUE INDEX "GEGNachweisGewerbe_geg_einpreisung_id_key" ON "GEGNachweisGewerbe"("geg_einpreisung_id");
|
||||||
|
|
||||||
|
-- CreateIndex
|
||||||
|
CREATE UNIQUE INDEX "GEGNachweisWohnen_id_key" ON "GEGNachweisWohnen"("id");
|
||||||
|
|
||||||
|
-- CreateIndex
|
||||||
|
CREATE UNIQUE INDEX "GEGNachweisWohnen_aufnahme_id_key" ON "GEGNachweisWohnen"("aufnahme_id");
|
||||||
|
|
||||||
|
-- CreateIndex
|
||||||
|
CREATE UNIQUE INDEX "GEGNachweisWohnen_rechnung_id_key" ON "GEGNachweisWohnen"("rechnung_id");
|
||||||
|
|
||||||
|
-- CreateIndex
|
||||||
|
CREATE UNIQUE INDEX "GEGNachweisWohnen_geg_einpreisung_id_key" ON "GEGNachweisWohnen"("geg_einpreisung_id");
|
||||||
|
|
||||||
|
-- CreateIndex
|
||||||
|
CREATE UNIQUE INDEX "Klimafaktoren_plz_month_year_key" ON "Klimafaktoren"("plz", "month", "year");
|
||||||
|
|
||||||
|
-- CreateIndex
|
||||||
|
CREATE UNIQUE INDEX "Objekt_id_key" ON "Objekt"("id");
|
||||||
|
|
||||||
|
-- CreateIndex
|
||||||
|
CREATE UNIQUE INDEX "Rechnung_id_key" ON "Rechnung"("id");
|
||||||
|
|
||||||
|
-- CreateIndex
|
||||||
|
CREATE UNIQUE INDEX "RefreshTokens_token_key" ON "RefreshTokens"("token");
|
||||||
|
|
||||||
|
-- CreateIndex
|
||||||
|
CREATE UNIQUE INDEX "Tickets_id_key" ON "Tickets"("id");
|
||||||
|
|
||||||
|
-- CreateIndex
|
||||||
|
CREATE UNIQUE INDEX "Unterlage_id_key" ON "Unterlage"("id");
|
||||||
|
|
||||||
|
-- CreateIndex
|
||||||
|
CREATE UNIQUE INDEX "VerbrauchsausweisGewerbe_id_key" ON "VerbrauchsausweisGewerbe"("id");
|
||||||
|
|
||||||
|
-- CreateIndex
|
||||||
|
CREATE UNIQUE INDEX "VerbrauchsausweisGewerbe_rechnung_id_key" ON "VerbrauchsausweisGewerbe"("rechnung_id");
|
||||||
|
|
||||||
|
-- CreateIndex
|
||||||
|
CREATE UNIQUE INDEX "VerbrauchsausweisGewerbe_aufnahme_id_key" ON "VerbrauchsausweisGewerbe"("aufnahme_id");
|
||||||
|
|
||||||
|
-- CreateIndex
|
||||||
|
CREATE UNIQUE INDEX "VerbrauchsausweisWohnen_id_key" ON "VerbrauchsausweisWohnen"("id");
|
||||||
|
|
||||||
|
-- CreateIndex
|
||||||
|
CREATE UNIQUE INDEX "VerbrauchsausweisWohnen_rechnung_id_key" ON "VerbrauchsausweisWohnen"("rechnung_id");
|
||||||
|
|
||||||
|
-- CreateIndex
|
||||||
|
CREATE UNIQUE INDEX "VerbrauchsausweisWohnen_aufnahme_id_key" ON "VerbrauchsausweisWohnen"("aufnahme_id");
|
||||||
|
|
||||||
|
-- AddForeignKey
|
||||||
|
ALTER TABLE "Anteilshaber" ADD CONSTRAINT "Anteilshaber_benutzer_id_fkey" FOREIGN KEY ("benutzer_id") REFERENCES "benutzer"("id") ON DELETE NO ACTION ON UPDATE NO ACTION;
|
||||||
|
|
||||||
|
-- AddForeignKey
|
||||||
|
ALTER TABLE "Anteilshaber" ADD CONSTRAINT "Anteilshaber_objekt_id_fkey" FOREIGN KEY ("objekt_id") REFERENCES "Objekt"("id") ON DELETE NO ACTION ON UPDATE NO ACTION;
|
||||||
|
|
||||||
|
-- AddForeignKey
|
||||||
|
ALTER TABLE "ApiRequests" ADD CONSTRAINT "ApiRequests_user_id_fkey" FOREIGN KEY ("user_id") REFERENCES "benutzer"("id") ON DELETE NO ACTION ON UPDATE NO ACTION;
|
||||||
|
|
||||||
|
-- AddForeignKey
|
||||||
|
ALTER TABLE "Aufnahme" ADD CONSTRAINT "Aufnahme_benutzer_id_fkey" FOREIGN KEY ("benutzer_id") REFERENCES "benutzer"("id") ON DELETE NO ACTION ON UPDATE NO ACTION;
|
||||||
|
|
||||||
|
-- AddForeignKey
|
||||||
|
ALTER TABLE "Aufnahme" ADD CONSTRAINT "Aufnahme_objekt_id_fkey" FOREIGN KEY ("objekt_id") REFERENCES "Objekt"("id") ON DELETE NO ACTION ON UPDATE NO ACTION;
|
||||||
|
|
||||||
|
-- AddForeignKey
|
||||||
|
ALTER TABLE "BedarfsausweisGewerbe" ADD CONSTRAINT "BedarfsausweisGewerbe_benutzer_id_fkey" FOREIGN KEY ("benutzer_id") REFERENCES "benutzer"("id") ON DELETE NO ACTION ON UPDATE NO ACTION;
|
||||||
|
|
||||||
|
-- AddForeignKey
|
||||||
|
ALTER TABLE "BedarfsausweisGewerbe" ADD CONSTRAINT "BedarfsausweisGewerbe_aufnahme_id_fkey" FOREIGN KEY ("aufnahme_id") REFERENCES "Aufnahme"("id") ON DELETE NO ACTION ON UPDATE NO ACTION;
|
||||||
|
|
||||||
|
-- AddForeignKey
|
||||||
|
ALTER TABLE "BedarfsausweisGewerbe" ADD CONSTRAINT "BedarfsausweisGewerbe_rechnung_id_fkey" FOREIGN KEY ("rechnung_id") REFERENCES "Rechnung"("id") ON DELETE NO ACTION ON UPDATE NO ACTION;
|
||||||
|
|
||||||
|
-- AddForeignKey
|
||||||
|
ALTER TABLE "BedarfsausweisGewerbe" ADD CONSTRAINT "BedarfsausweisGewerbe_geg_einpreisung_id_fkey" FOREIGN KEY ("geg_einpreisung_id") REFERENCES "GEGEinpreisung"("id") ON DELETE NO ACTION ON UPDATE NO ACTION;
|
||||||
|
|
||||||
|
-- AddForeignKey
|
||||||
|
ALTER TABLE "BedarfsausweisWohnen" ADD CONSTRAINT "BedarfsausweisWohnen_benutzer_id_fkey" FOREIGN KEY ("benutzer_id") REFERENCES "benutzer"("id") ON DELETE NO ACTION ON UPDATE NO ACTION;
|
||||||
|
|
||||||
|
-- AddForeignKey
|
||||||
|
ALTER TABLE "BedarfsausweisWohnen" ADD CONSTRAINT "BedarfsausweisWohnen_rechnung_id_fkey" FOREIGN KEY ("rechnung_id") REFERENCES "Rechnung"("id") ON DELETE NO ACTION ON UPDATE NO ACTION;
|
||||||
|
|
||||||
|
-- AddForeignKey
|
||||||
|
ALTER TABLE "BedarfsausweisWohnen" ADD CONSTRAINT "BedarfsausweisWohnen_aufnahme_id_fkey" FOREIGN KEY ("aufnahme_id") REFERENCES "Aufnahme"("id") ON DELETE NO ACTION ON UPDATE NO ACTION;
|
||||||
|
|
||||||
|
-- AddForeignKey
|
||||||
|
ALTER TABLE "Bild" ADD CONSTRAINT "Bild_aufnahme_id_fkey" FOREIGN KEY ("aufnahme_id") REFERENCES "Aufnahme"("id") ON DELETE NO ACTION ON UPDATE NO ACTION;
|
||||||
|
|
||||||
|
-- AddForeignKey
|
||||||
|
ALTER TABLE "Event" ADD CONSTRAINT "Event_aufnahme_id_fkey" FOREIGN KEY ("aufnahme_id") REFERENCES "Aufnahme"("id") ON DELETE NO ACTION ON UPDATE NO ACTION;
|
||||||
|
|
||||||
|
-- AddForeignKey
|
||||||
|
ALTER TABLE "Event" ADD CONSTRAINT "Event_benutzer_id_fkey" FOREIGN KEY ("benutzer_id") REFERENCES "benutzer"("id") ON DELETE NO ACTION ON UPDATE NO ACTION;
|
||||||
|
|
||||||
|
-- AddForeignKey
|
||||||
|
ALTER TABLE "GEGEinpreisung" ADD CONSTRAINT "GEGEinpreisung_benutzer_id_fkey" FOREIGN KEY ("benutzer_id") REFERENCES "benutzer"("id") ON DELETE NO ACTION ON UPDATE NO ACTION;
|
||||||
|
|
||||||
|
-- AddForeignKey
|
||||||
|
ALTER TABLE "GEGNachweisGewerbe" ADD CONSTRAINT "GEGNachweisGewerbe_benutzer_id_fkey" FOREIGN KEY ("benutzer_id") REFERENCES "benutzer"("id") ON DELETE NO ACTION ON UPDATE NO ACTION;
|
||||||
|
|
||||||
|
-- AddForeignKey
|
||||||
|
ALTER TABLE "GEGNachweisGewerbe" ADD CONSTRAINT "GEGNachweisGewerbe_aufnahme_id_fkey" FOREIGN KEY ("aufnahme_id") REFERENCES "Aufnahme"("id") ON DELETE NO ACTION ON UPDATE NO ACTION;
|
||||||
|
|
||||||
|
-- AddForeignKey
|
||||||
|
ALTER TABLE "GEGNachweisGewerbe" ADD CONSTRAINT "GEGNachweisGewerbe_rechnung_id_fkey" FOREIGN KEY ("rechnung_id") REFERENCES "Rechnung"("id") ON DELETE NO ACTION ON UPDATE NO ACTION;
|
||||||
|
|
||||||
|
-- AddForeignKey
|
||||||
|
ALTER TABLE "GEGNachweisGewerbe" ADD CONSTRAINT "GEGNachweisGewerbe_geg_einpreisung_id_fkey" FOREIGN KEY ("geg_einpreisung_id") REFERENCES "GEGEinpreisung"("id") ON DELETE NO ACTION ON UPDATE NO ACTION;
|
||||||
|
|
||||||
|
-- AddForeignKey
|
||||||
|
ALTER TABLE "GEGNachweisWohnen" ADD CONSTRAINT "GEGNachweisWohnen_benutzer_id_fkey" FOREIGN KEY ("benutzer_id") REFERENCES "benutzer"("id") ON DELETE NO ACTION ON UPDATE NO ACTION;
|
||||||
|
|
||||||
|
-- AddForeignKey
|
||||||
|
ALTER TABLE "GEGNachweisWohnen" ADD CONSTRAINT "GEGNachweisWohnen_aufnahme_id_fkey" FOREIGN KEY ("aufnahme_id") REFERENCES "Aufnahme"("id") ON DELETE NO ACTION ON UPDATE NO ACTION;
|
||||||
|
|
||||||
|
-- AddForeignKey
|
||||||
|
ALTER TABLE "GEGNachweisWohnen" ADD CONSTRAINT "GEGNachweisWohnen_rechnung_id_fkey" FOREIGN KEY ("rechnung_id") REFERENCES "Rechnung"("id") ON DELETE NO ACTION ON UPDATE NO ACTION;
|
||||||
|
|
||||||
|
-- AddForeignKey
|
||||||
|
ALTER TABLE "GEGNachweisWohnen" ADD CONSTRAINT "GEGNachweisWohnen_geg_einpreisung_id_fkey" FOREIGN KEY ("geg_einpreisung_id") REFERENCES "GEGEinpreisung"("id") ON DELETE NO ACTION ON UPDATE NO ACTION;
|
||||||
|
|
||||||
|
-- AddForeignKey
|
||||||
|
ALTER TABLE "Objekt" ADD CONSTRAINT "Objekt_benutzer_id_fkey" FOREIGN KEY ("benutzer_id") REFERENCES "benutzer"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
||||||
|
|
||||||
|
-- AddForeignKey
|
||||||
|
ALTER TABLE "Rechnung" ADD CONSTRAINT "Rechnung_benutzer_id_fkey" FOREIGN KEY ("benutzer_id") REFERENCES "benutzer"("id") ON DELETE NO ACTION ON UPDATE NO ACTION;
|
||||||
|
|
||||||
|
-- AddForeignKey
|
||||||
|
ALTER TABLE "RefreshTokens" ADD CONSTRAINT "RefreshTokens_benutzer_id_fkey" FOREIGN KEY ("benutzer_id") REFERENCES "benutzer"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||||
|
|
||||||
|
-- AddForeignKey
|
||||||
|
ALTER TABLE "Tickets" ADD CONSTRAINT "Tickets_benutzer_id_fkey" FOREIGN KEY ("benutzer_id") REFERENCES "benutzer"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
||||||
|
|
||||||
|
-- AddForeignKey
|
||||||
|
ALTER TABLE "Tickets" ADD CONSTRAINT "Tickets_bearbeiter_id_fkey" FOREIGN KEY ("bearbeiter_id") REFERENCES "benutzer"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
||||||
|
|
||||||
|
-- AddForeignKey
|
||||||
|
ALTER TABLE "Unterlage" ADD CONSTRAINT "Unterlage_aufnahme_id_fkey" FOREIGN KEY ("aufnahme_id") REFERENCES "Aufnahme"("id") ON DELETE NO ACTION ON UPDATE NO ACTION;
|
||||||
|
|
||||||
|
-- AddForeignKey
|
||||||
|
ALTER TABLE "VerbrauchsausweisGewerbe" ADD CONSTRAINT "VerbrauchsausweisGewerbe_benutzer_id_fkey" FOREIGN KEY ("benutzer_id") REFERENCES "benutzer"("id") ON DELETE NO ACTION ON UPDATE NO ACTION;
|
||||||
|
|
||||||
|
-- AddForeignKey
|
||||||
|
ALTER TABLE "VerbrauchsausweisGewerbe" ADD CONSTRAINT "VerbrauchsausweisGewerbe_rechnung_id_fkey" FOREIGN KEY ("rechnung_id") REFERENCES "Rechnung"("id") ON DELETE NO ACTION ON UPDATE NO ACTION;
|
||||||
|
|
||||||
|
-- AddForeignKey
|
||||||
|
ALTER TABLE "VerbrauchsausweisGewerbe" ADD CONSTRAINT "VerbrauchsausweisGewerbe_aufnahme_id_fkey" FOREIGN KEY ("aufnahme_id") REFERENCES "Aufnahme"("id") ON DELETE NO ACTION ON UPDATE NO ACTION;
|
||||||
|
|
||||||
|
-- AddForeignKey
|
||||||
|
ALTER TABLE "VerbrauchsausweisWohnen" ADD CONSTRAINT "VerbrauchsausweisWohnen_benutzer_id_fkey" FOREIGN KEY ("benutzer_id") REFERENCES "benutzer"("id") ON DELETE NO ACTION ON UPDATE NO ACTION;
|
||||||
|
|
||||||
|
-- AddForeignKey
|
||||||
|
ALTER TABLE "VerbrauchsausweisWohnen" ADD CONSTRAINT "VerbrauchsausweisWohnen_rechnung_id_fkey" FOREIGN KEY ("rechnung_id") REFERENCES "Rechnung"("id") ON DELETE NO ACTION ON UPDATE NO ACTION;
|
||||||
|
|
||||||
|
-- AddForeignKey
|
||||||
|
ALTER TABLE "VerbrauchsausweisWohnen" ADD CONSTRAINT "VerbrauchsausweisWohnen_aufnahme_id_fkey" FOREIGN KEY ("aufnahme_id") REFERENCES "Aufnahme"("id") ON DELETE NO ACTION ON UPDATE NO ACTION;
|
||||||
|
|
||||||
|
-- AddForeignKey
|
||||||
|
ALTER TABLE "documenttemplates" ADD CONSTRAINT "benutzer_fk" FOREIGN KEY ("user_id") REFERENCES "benutzer"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||||
|
|
||||||
|
-- AddForeignKey
|
||||||
|
ALTER TABLE "documenttemplates" ADD CONSTRAINT "documenttypes_fk" FOREIGN KEY ("documenttype") REFERENCES "documenttypes"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||||
|
|
||||||
|
-- AddForeignKey
|
||||||
|
ALTER TABLE "tokens" ADD CONSTRAINT "fk_benutzer_tokens_user_id" FOREIGN KEY ("user_id") REFERENCES "benutzer"("id") ON DELETE NO ACTION ON UPDATE NO ACTION;
|
||||||
14
prisma/migrations/20250407192734_/migration.sql
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
/*
|
||||||
|
Warnings:
|
||||||
|
|
||||||
|
- Added the required column `updated_at` to the `Rechnung` table without a default value. This is not possible if the table is not empty.
|
||||||
|
- Added the required column `updated_at` to the `benutzer` table without a default value. This is not possible if the table is not empty.
|
||||||
|
|
||||||
|
*/
|
||||||
|
-- AlterTable
|
||||||
|
ALTER TABLE "Rechnung" ADD COLUMN "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
ADD COLUMN "updated_at" TIMESTAMP(3) NOT NULL;
|
||||||
|
|
||||||
|
-- AlterTable
|
||||||
|
ALTER TABLE "benutzer" ADD COLUMN "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
ADD COLUMN "updated_at" TIMESTAMP(3) NOT NULL;
|
||||||
9
prisma/migrations/20250407193006_bild/migration.sql
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
/*
|
||||||
|
Warnings:
|
||||||
|
|
||||||
|
- Added the required column `updated_at` to the `Bild` table without a default value. This is not possible if the table is not empty.
|
||||||
|
|
||||||
|
*/
|
||||||
|
-- AlterTable
|
||||||
|
ALTER TABLE "Bild" ADD COLUMN "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
ADD COLUMN "updated_at" TIMESTAMP(3) NOT NULL;
|
||||||
@@ -0,0 +1,26 @@
|
|||||||
|
-- AlterTable
|
||||||
|
ALTER TABLE "BedarfsausweisGewerbe" ALTER COLUMN "updated_at" SET DEFAULT CURRENT_TIMESTAMP;
|
||||||
|
|
||||||
|
-- AlterTable
|
||||||
|
ALTER TABLE "BedarfsausweisWohnen" ALTER COLUMN "updated_at" SET DEFAULT CURRENT_TIMESTAMP;
|
||||||
|
|
||||||
|
-- AlterTable
|
||||||
|
ALTER TABLE "Bild" ALTER COLUMN "updated_at" SET DEFAULT CURRENT_TIMESTAMP;
|
||||||
|
|
||||||
|
-- AlterTable
|
||||||
|
ALTER TABLE "GEGNachweisGewerbe" ALTER COLUMN "updated_at" SET DEFAULT CURRENT_TIMESTAMP;
|
||||||
|
|
||||||
|
-- AlterTable
|
||||||
|
ALTER TABLE "GEGNachweisWohnen" ALTER COLUMN "updated_at" SET DEFAULT CURRENT_TIMESTAMP;
|
||||||
|
|
||||||
|
-- AlterTable
|
||||||
|
ALTER TABLE "Rechnung" ALTER COLUMN "updated_at" SET DEFAULT CURRENT_TIMESTAMP;
|
||||||
|
|
||||||
|
-- AlterTable
|
||||||
|
ALTER TABLE "VerbrauchsausweisGewerbe" ALTER COLUMN "updated_at" SET DEFAULT CURRENT_TIMESTAMP;
|
||||||
|
|
||||||
|
-- AlterTable
|
||||||
|
ALTER TABLE "VerbrauchsausweisWohnen" ALTER COLUMN "updated_at" SET DEFAULT CURRENT_TIMESTAMP;
|
||||||
|
|
||||||
|
-- AlterTable
|
||||||
|
ALTER TABLE "benutzer" ALTER COLUMN "updated_at" SET DEFAULT CURRENT_TIMESTAMP;
|
||||||
3
prisma/migrations/migration_lock.toml
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
# Please do not edit this file manually
|
||||||
|
# It should be added in your version-control system (e.g., Git)
|
||||||
|
provider = "postgresql"
|
||||||
1
prisma/null.ts
Normal file
@@ -0,0 +1 @@
|
|||||||
|
export const x = 5
|
||||||
37
prisma/prisma-enum-generator.ts
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
import { generatorHandler } from "@prisma/generator-helper";
|
||||||
|
import fs from "fs";
|
||||||
|
import path from "path";
|
||||||
|
|
||||||
|
const header = `// This file was generated by a custom prisma generator, do not edit manually.\n`;
|
||||||
|
|
||||||
|
generatorHandler({
|
||||||
|
onManifest() {
|
||||||
|
return {
|
||||||
|
defaultOutput: "./enums/index.ts",
|
||||||
|
prettyName: "Prisma Enum Generator",
|
||||||
|
};
|
||||||
|
},
|
||||||
|
async onGenerate(options) {
|
||||||
|
const enums = options.dmmf.datamodel.enums;
|
||||||
|
|
||||||
|
const output = enums.map((e) => {
|
||||||
|
let enumString = `export const ${e.name} = {\n`;
|
||||||
|
e.values.forEach(({ name: value }) => {
|
||||||
|
enumString += ` ${value}: "${value}",\n`;
|
||||||
|
});
|
||||||
|
enumString += `} as const;\n\n`;
|
||||||
|
enumString += `export type ${e.name} = (typeof ${e.name})[keyof typeof ${e.name}];\n`;
|
||||||
|
|
||||||
|
return enumString;
|
||||||
|
});
|
||||||
|
|
||||||
|
const outputFile = options.generator.output;
|
||||||
|
if (!outputFile || !outputFile.value) {
|
||||||
|
throw new Error("No output file specified");
|
||||||
|
}
|
||||||
|
|
||||||
|
const outputPath = path.resolve(outputFile.value);
|
||||||
|
fs.mkdirSync(path.dirname(outputPath), { recursive: true });
|
||||||
|
fs.writeFileSync(outputPath, header + output.join("\n"), "utf-8");
|
||||||
|
},
|
||||||
|
});
|
||||||
11
prisma/schema/Anteilshaber.prisma
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
model Anteilshaber {
|
||||||
|
id String @id @unique @db.VarChar(11)
|
||||||
|
rolle String? @db.VarChar
|
||||||
|
privilegien BigInt?
|
||||||
|
|
||||||
|
benutzer_id String
|
||||||
|
benutzer Benutzer @relation(fields: [benutzer_id], references: [id], onDelete: NoAction, onUpdate: NoAction)
|
||||||
|
|
||||||
|
objekt_id String
|
||||||
|
objekt Objekt @relation(fields: [objekt_id], references: [id], onDelete: NoAction, onUpdate: NoAction)
|
||||||
|
}
|
||||||
14
prisma/schema/ApiRequests.prisma
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
|
||||||
|
model ApiRequests {
|
||||||
|
id String @id @unique @db.VarChar(11)
|
||||||
|
date DateTime @default(now()) @db.Timestamp(6)
|
||||||
|
ip String @db.VarChar(50)
|
||||||
|
method String @db.VarChar(10)
|
||||||
|
path String @db.VarChar(100)
|
||||||
|
status Int
|
||||||
|
responseTime Float
|
||||||
|
responseSize Int
|
||||||
|
userAgent String @db.VarChar(500)
|
||||||
|
user_id String?
|
||||||
|
user Benutzer? @relation(fields: [user_id], references: [id], onDelete: NoAction, onUpdate: NoAction)
|
||||||
|
}
|
||||||
134
prisma/schema/Aufnahme.prisma
Normal file
@@ -0,0 +1,134 @@
|
|||||||
|
|
||||||
|
enum Heizungsstatus {
|
||||||
|
BEHEIZT
|
||||||
|
UNBEHEIZT
|
||||||
|
NICHT_VORHANDEN
|
||||||
|
}
|
||||||
|
|
||||||
|
enum Lueftungskonzept {
|
||||||
|
Fensterlueftung
|
||||||
|
Schachtlueftung
|
||||||
|
LueftungsanlageMitWaermerueckgewinnung
|
||||||
|
LueftungsanlageOhneWaermerueckgewinnung
|
||||||
|
}
|
||||||
|
|
||||||
|
model Aufnahme {
|
||||||
|
id String @id @unique @db.VarChar(11)
|
||||||
|
benutzer_id String?
|
||||||
|
benutzer Benutzer? @relation(fields: [benutzer_id], references: [id], onDelete: NoAction, onUpdate: NoAction)
|
||||||
|
/// @zod.describe("Art des Gebäudes und seiner primären Nutzungsart")
|
||||||
|
gebaeudetyp String? @db.VarChar
|
||||||
|
/// @zod.describe("Betrachteter Teil des Gebäudes, z.B. Gesamtgebäude, Wohnteil, Gewerbeteil")
|
||||||
|
gebaeudeteil String? @db.VarChar
|
||||||
|
/// @zod.describe("Alle Jahre in denen das Gebäude konstruiert oder grundlegend verändert wurde")
|
||||||
|
baujahr_gebaeude Int[]
|
||||||
|
/// @zod.describe("Alle Jahre in denen die Heizung eingebaut oder grundlegend verändert wurde")
|
||||||
|
baujahr_heizung Int[]
|
||||||
|
/// @zod.describe("Alle Jahre in denen die Klimaanlage eingebaut oder grundlegend verändert wurde")
|
||||||
|
baujahr_klima Int[]
|
||||||
|
/// @zod.describe("Anzahl der (Wohn)Einheiten im Gebäude")
|
||||||
|
einheiten Int?
|
||||||
|
/// @zod.describe("Wohnfläche bei Wohngebäuden, Nutzfläche bei Gewerbegebäuden")
|
||||||
|
flaeche Int?
|
||||||
|
/// @zod.describe("(energetische) Nutzfläche des Gebäudes. Bei Gewerbegebäuden entspricht Sie der Nutzfläche")
|
||||||
|
nutzflaeche Int?
|
||||||
|
/// @zod.describe("Falls das Gebäude energetisch saniert ist, sollte dieser Wert auf true stehen")
|
||||||
|
saniert Boolean?
|
||||||
|
/// @zod.describe("Ob ein Keller vorhanden, beheizt oder unbeheizt ist")
|
||||||
|
keller Heizungsstatus?
|
||||||
|
/// @zod.describe("Ob ein Dachgeschoss vorhanden, beheizt oder unbeheizt ist")
|
||||||
|
dachgeschoss Heizungsstatus?
|
||||||
|
/// @zod.describe("Art der Gebäudelüftung")
|
||||||
|
lueftung Lueftungskonzept?
|
||||||
|
/// @zod.describe("Art der Gebäudekühlung")
|
||||||
|
kuehlung String? @db.VarChar(50)
|
||||||
|
/// @zod.describe("Prozentualer Leerstand des Gebäudes in einem durchschnittlichen Jahr")
|
||||||
|
leerstand Int?
|
||||||
|
|
||||||
|
/// @zod.describe("Falls der Heizungsverbrauch alternative Energieversorgungssysteme beinhaltet sollte dieser Wert auf true stehen")
|
||||||
|
alternative_heizung Boolean?
|
||||||
|
/// @zod.describe("Falls der Warmwasserverbrauch alternative Energieversorgungssysteme beinhaltet sollte dieser Wert auf true stehen")
|
||||||
|
alternative_warmwasser Boolean?
|
||||||
|
/// @zod.describe("Falls die Lüftung alternative Energieversorgungssysteme beinhaltet sollte dieser Wert auf true stehen")
|
||||||
|
alternative_lueftung Boolean?
|
||||||
|
/// @zod.describe("Falls die Kühlung alternative Energieversorgungssysteme beinhaltet sollte dieser Wert auf true stehen")
|
||||||
|
alternative_kuehlung Boolean?
|
||||||
|
|
||||||
|
/// @zod.describe("Datum an dem der Kunde die Aufnahme erstellt hat")
|
||||||
|
erstellungsdatum DateTime? @default(now())
|
||||||
|
|
||||||
|
/// @zod.describe("Falls das Gebäude über eine Zentralbeheizung verfügt, sollte dieser Wert auf true stehen")
|
||||||
|
zentralheizung Boolean?
|
||||||
|
/// @zod.describe("Falls das Gebäude über ein Solarsystem für Warmwasser verfügt, sollte dieser Wert auf true stehen")
|
||||||
|
solarsystem_warmwasser Boolean?
|
||||||
|
/// @zod.describe("Falls die Warmwasserrohre des Gebäudes gedämmt sind, sollte dieser Wert auf true stehen")
|
||||||
|
warmwasser_rohre_gedaemmt Boolean?
|
||||||
|
/// @zod.describe("Falls das Gebäude über einen Niedertemperaturkessel verfügt, sollte dieser Wert auf true stehen")
|
||||||
|
niedertemperatur_kessel Boolean?
|
||||||
|
/// @zod.describe("Falls das Gebäude über einen Brennwertkessel verfügt, sollte dieser Wert auf true stehen")
|
||||||
|
brennwert_kessel Boolean?
|
||||||
|
/// @zod.describe("Falls die Heizungsrohre des Gebäudes gedämmt sind, sollte dieser Wert auf true stehen")
|
||||||
|
heizungsrohre_gedaemmt Boolean?
|
||||||
|
standard_kessel Boolean?
|
||||||
|
/// @zod.describe("Falls das Gebäude über eine Wärmepumpe verfügt, sollte dieser Wert auf true stehen")
|
||||||
|
waermepumpe Boolean?
|
||||||
|
/// @zod.describe("Falls das Gebäude über einen Raumtemperaturregler verfügt, sollte dieser Wert auf true stehen")
|
||||||
|
raum_temperatur_regler Boolean?
|
||||||
|
/// @zod.describe("Falls das Gebäude über eine Photovoltaikanlage verfügt, sollte dieser Wert auf true stehen")
|
||||||
|
photovoltaik Boolean?
|
||||||
|
/// @zod.describe("Falls das Gebäude über einen Durchlauferhitzer verfügt, sollte dieser Wert auf true stehen")
|
||||||
|
durchlauf_erhitzer Boolean?
|
||||||
|
einzelofen Boolean?
|
||||||
|
/// @zod.describe("Falls das Gebäude über eine Zirkulationspumpe verfügt, sollte dieser Wert auf true stehen")
|
||||||
|
zirkulation Boolean?
|
||||||
|
/// @zod.describe("Falls die Fenster des Gebäudes einfach gedämmt sind, sollte dieser Wert auf true stehen")
|
||||||
|
einfach_verglasung Boolean?
|
||||||
|
/// @zod.describe("Falls die Fenster des Gebäudes dreifach gedämmt sind, sollte dieser Wert auf true stehen")
|
||||||
|
dreifach_verglasung Boolean?
|
||||||
|
/// @zod.describe("Falls die Fenster des Gebäudes teilweise undicht sind, sollte dieser Wert auf true stehen")
|
||||||
|
fenster_teilweise_undicht Boolean?
|
||||||
|
/// @zod.describe("Falls die Fenster des Gebäudes doppelt gedämmt sind, sollte dieser Wert auf true stehen")
|
||||||
|
doppel_verglasung Boolean?
|
||||||
|
/// @zod.describe("Falls die Fenster des Gebäudes dicht sind, sollte dieser Wert auf true stehen")
|
||||||
|
fenster_dicht Boolean?
|
||||||
|
/// @zod.describe("Falls das Gebäude über gedämmte Rolllädenkästen verfügt, sollte dieser Wert auf true stehen")
|
||||||
|
rolllaeden_kaesten_gedaemmt Boolean?
|
||||||
|
/// @zod.describe("Falls die Fenster des Gebäudes isolier Verglasung haben, sollte dieser Wert auf true stehen")
|
||||||
|
isolier_verglasung Boolean?
|
||||||
|
/// @zod.describe("Falls die Türen des Gebäudes undicht sind, sollte dieser Wert auf true stehen")
|
||||||
|
tueren_undicht Boolean?
|
||||||
|
/// @zod.describe("Falls die Türen des Gebäudes dicht sind, sollte dieser Wert auf true stehen")
|
||||||
|
tueren_dicht Boolean?
|
||||||
|
/// @zod.describe("Falls das Dachgeschoss des Gebäudes gedämmt ist, sollte dieser Wert auf true stehen")
|
||||||
|
dachgeschoss_gedaemmt Boolean?
|
||||||
|
/// @zod.describe("Falls die Kellerdecke des Gebäudes gedämmt ist, sollte dieser Wert auf true stehen")
|
||||||
|
keller_decke_gedaemmt Boolean?
|
||||||
|
/// @zod.describe("Falls die Kellerwände des Gebäudes gedämmt sind, sollte dieser Wert auf true stehen")
|
||||||
|
keller_wand_gedaemmt Boolean?
|
||||||
|
/// @zod.describe("Falls die Außenwände des Gebäudes gedämmt sind, sollte dieser Wert auf true stehen")
|
||||||
|
aussenwand_gedaemmt Boolean?
|
||||||
|
/// @zod.describe("Falls die oberste Geschossdecke des Gebäudes gedämmt ist, sollte dieser Wert auf true stehen")
|
||||||
|
oberste_geschossdecke_gedaemmt Boolean?
|
||||||
|
/// @zod.describe("Falls die Außenwände des Gebäudes mindestens 12cm gedämmt sind, sollte dieser Wert auf true stehen")
|
||||||
|
aussenwand_min_12cm_gedaemmt Boolean?
|
||||||
|
/// @zod.describe("Falls das Dachgeschoss des Gebäudes mindestens 12cm gedämmt ist, sollte dieser Wert auf true stehen")
|
||||||
|
dachgeschoss_min_12cm_gedaemmt Boolean?
|
||||||
|
/// @zod.describe("Falls die oberste Geschossdecke des Gebäudes mindestens 12cm gedämmt ist, sollte dieser Wert auf true stehen")
|
||||||
|
oberste_geschossdecke_min_12cm_gedaemmt Boolean?
|
||||||
|
|
||||||
|
events Event[]
|
||||||
|
bilder Bild[]
|
||||||
|
unterlagen Unterlage[]
|
||||||
|
bedarfsausweise_wohnen BedarfsausweisWohnen[]
|
||||||
|
verbrauchsausweise_gewerbe VerbrauchsausweisGewerbe[]
|
||||||
|
verbrauchsausweise_wohnen VerbrauchsausweisWohnen[]
|
||||||
|
geg_nachweise_wohnen GEGNachweisWohnen[]
|
||||||
|
geg_nachweise_gewerbe GEGNachweisGewerbe[]
|
||||||
|
bedarfsausweise_gewerbe BedarfsausweisGewerbe[]
|
||||||
|
|
||||||
|
objekt_id String
|
||||||
|
objekt Objekt @relation(fields: [objekt_id], references: [id], onDelete: NoAction, onUpdate: NoAction)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
43
prisma/schema/BedarfsausweisGewerbe.prisma
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
model BedarfsausweisGewerbe {
|
||||||
|
id String @id @unique @db.VarChar(11)
|
||||||
|
|
||||||
|
/// @zod.describe("Ausstellgrund wie z.B. Vermietung oder Verkauf")
|
||||||
|
ausstellgrund Ausstellgrund?
|
||||||
|
/// @zod.describe("Falls der Keller des Gebäudes beheizt wird, sollte dieser Wert auf true stehen")
|
||||||
|
keller_beheizt Boolean?
|
||||||
|
|
||||||
|
/// @zod.describe("Falls die Nachweisanfrage storniert wurde, sollte dieser Wert auf true stehen")
|
||||||
|
storniert Boolean? @default(false)
|
||||||
|
/// @zod.describe("Falls der Nachweis bestellt wurde, sollte dieser Wert auf true stehen")
|
||||||
|
bestellt Boolean? @default(false)
|
||||||
|
/// @zod.describe("Falls der Nachweis vom Aussteller zurückgestellt wurde, sollte dieser Wert auf true stehen")
|
||||||
|
zurueckgestellt Boolean? @default(false)
|
||||||
|
|
||||||
|
abluftanlage Boolean? @default(false)
|
||||||
|
zu_abluftanlage Boolean? @default(false)
|
||||||
|
konditionierung_der_zuluft Boolean? @default(false)
|
||||||
|
luftheizung Boolean? @default(false)
|
||||||
|
hallenheizung Boolean? @default(false)
|
||||||
|
dunkelstrahler Boolean? @default(false)
|
||||||
|
direktheizung Boolean? @default(false)
|
||||||
|
infrarotstrahler Boolean? @default(false)
|
||||||
|
fussbodenheizung Boolean? @default(false)
|
||||||
|
bauteilaktivierung Boolean? @default(false)
|
||||||
|
klimatisierung Boolean? @default(false)
|
||||||
|
|
||||||
|
nachweistyp AusweisTyp @default(Standard)
|
||||||
|
|
||||||
|
created_at DateTime @default(now())
|
||||||
|
updated_at DateTime @updatedAt @default(now())
|
||||||
|
|
||||||
|
/// @zod.describe("Die ID des Benutzers, welchem dieser Ausweis gehört")
|
||||||
|
benutzer_id String?
|
||||||
|
benutzer Benutzer? @relation(fields: [benutzer_id], references: [id], onDelete: NoAction, onUpdate: NoAction)
|
||||||
|
aufnahme_id String @unique
|
||||||
|
aufnahme Aufnahme @relation(fields: [aufnahme_id], references: [id], onDelete: NoAction, onUpdate: NoAction)
|
||||||
|
|
||||||
|
rechnung_id String? @unique
|
||||||
|
rechnung Rechnung? @relation(fields: [rechnung_id], references: [id], onDelete: NoAction, onUpdate: NoAction)
|
||||||
|
geg_einpreisung_id String? @unique
|
||||||
|
geg_einpreisung GEGEinpreisung? @relation(fields: [geg_einpreisung_id], references: [id], onDelete: NoAction, onUpdate: NoAction)
|
||||||
|
}
|
||||||
112
prisma/schema/BedarfsausweisWohnen.prisma
Normal file
@@ -0,0 +1,112 @@
|
|||||||
|
|
||||||
|
model BedarfsausweisWohnen {
|
||||||
|
id String @id @unique @db.VarChar(11)
|
||||||
|
alte_ausweis_id Int?
|
||||||
|
benutzer_id String?
|
||||||
|
ausstellgrund Ausstellgrund?
|
||||||
|
registriernummer String? @db.VarChar
|
||||||
|
|
||||||
|
alternative_heizung Boolean?
|
||||||
|
alternative_warmwasser Boolean?
|
||||||
|
alternative_lueftung Boolean?
|
||||||
|
alternative_kuehlung Boolean?
|
||||||
|
|
||||||
|
/// @zod.describe("Die aus der Berechnung hervorgehende Energieeffizienzklasse des Gebäudes")
|
||||||
|
energieeffizienzklasse String? @db.VarChar(5)
|
||||||
|
/// @zod.describe("Datum an dem der Aussteller den Ausweis ausgestellt hat")
|
||||||
|
ausstellungsdatum DateTime?
|
||||||
|
boxpruefung Boolean? @default(false)
|
||||||
|
|
||||||
|
anzahl_vollgeschosse Int?
|
||||||
|
geschosshoehe Float?
|
||||||
|
anzahl_gauben Int?
|
||||||
|
breite_gauben Float?
|
||||||
|
masse_a Float?
|
||||||
|
masse_b Float?
|
||||||
|
masse_c Float?
|
||||||
|
masse_d Float?
|
||||||
|
masse_e Float?
|
||||||
|
masse_f Float?
|
||||||
|
fensterflaeche_so_sw Float?
|
||||||
|
fensterflaeche_nw_no Float?
|
||||||
|
aussenwandflaeche_unbeheizt Float?
|
||||||
|
dachflaeche Float?
|
||||||
|
deckenflaeche Float?
|
||||||
|
dach_u_wert Float?
|
||||||
|
decke_u_wert Float?
|
||||||
|
aussenwand_flaeche Float?
|
||||||
|
aussenwand_u_wert Float?
|
||||||
|
fussboden_flaeche Float?
|
||||||
|
fussboden_u_wert Float?
|
||||||
|
volumen Float?
|
||||||
|
dicht Boolean?
|
||||||
|
fenster_flaeche_1 Float?
|
||||||
|
fenster_art_1 Float?
|
||||||
|
fenster_flaeche_2 Float?
|
||||||
|
fenster_art_2 Float?
|
||||||
|
dachfenster_flaeche Float?
|
||||||
|
dachfenster_art Float?
|
||||||
|
haustuer_flaeche Float?
|
||||||
|
haustuer_art Float?
|
||||||
|
dach_bauart String? @db.VarChar
|
||||||
|
decke_bauart String? @db.VarChar
|
||||||
|
dach_daemmung Float?
|
||||||
|
decke_daemmung Float?
|
||||||
|
aussenwand_daemmung Float?
|
||||||
|
boden_daemmung Float?
|
||||||
|
aussenwand_bauart String? @db.VarChar
|
||||||
|
boden_bauart String? @db.VarChar
|
||||||
|
warmwasser_verteilung String? @db.VarChar
|
||||||
|
warmwasser_speicherung String? @db.VarChar
|
||||||
|
warmwasser_erzeugung String? @db.VarChar
|
||||||
|
heizung_zentral Boolean?
|
||||||
|
heizung_verteilung String? @db.VarChar
|
||||||
|
heizung_speicherung String? @db.VarChar
|
||||||
|
waerme_erzeugung_heizung String? @db.VarChar
|
||||||
|
anteil_zusatzheizung Float?
|
||||||
|
kollektor_flaeche Float?
|
||||||
|
|
||||||
|
ausgestellt Boolean? @default(false)
|
||||||
|
/// @zod.describe("Falls der Ausweis storniert wurde, sollte dieser Wert auf true stehen")
|
||||||
|
storniert Boolean? @default(false)
|
||||||
|
/// @zod.describe("Falls der Ausweis bestellt wurde, sollte dieser Wert auf true stehen")
|
||||||
|
bestellt Boolean? @default(false)
|
||||||
|
/// @zod.describe("Falls der Ausweis vom Aussteller zurückgestellt wurde, sollte dieser Wert auf true stehen")
|
||||||
|
zurueckgestellt Boolean? @default(false)
|
||||||
|
/// @zod.describe("Durch den Kunden hinzugefügte Anmerkung zur Vorabprüfung")
|
||||||
|
prueftext String? @db.VarChar(1000)
|
||||||
|
|
||||||
|
beschreibung String? @db.Text
|
||||||
|
|
||||||
|
/// @zod.describe("Ob bei der Anfrage der Registriernummer eine Kontrolldatei angefragt wurde")
|
||||||
|
kontrolldatei_angefragt Boolean? @default(false)
|
||||||
|
|
||||||
|
created_at DateTime @default(now())
|
||||||
|
updated_at DateTime @updatedAt @default(now())
|
||||||
|
|
||||||
|
pruefpunkt_heizungsalter Boolean? @default(false)
|
||||||
|
pruefpunkt_verbrauch_niedrig Boolean? @default(false)
|
||||||
|
pruefpunkt_verbrauch_hoch Boolean? @default(false)
|
||||||
|
pruefpunkt_verbrauch_null Boolean? @default(false)
|
||||||
|
pruefpunkt_verbrauch_abweichung Boolean? @default(false)
|
||||||
|
pruefpunkt_wohnflaeche_einheiten Boolean? @default(false)
|
||||||
|
pruefpunkt_strom_null Boolean? @default(false)
|
||||||
|
pruefpunkt_strom_abweichung Boolean? @default(false)
|
||||||
|
pruefpunkt_plz Boolean? @default(false)
|
||||||
|
pruefpunkt_heizungsanlage Boolean? @default(false)
|
||||||
|
pruefpunkt_anteil_warmwasser Boolean? @default(false)
|
||||||
|
pruefpunkt_wohnflaeche Boolean? @default(false)
|
||||||
|
pruefpunkt_geometrie Boolean? @default(false)
|
||||||
|
pruefpunkt_fenster Boolean? @default(false)
|
||||||
|
|
||||||
|
ausweistyp AusweisTyp @default(Standard)
|
||||||
|
|
||||||
|
benutzer Benutzer? @relation(fields: [benutzer_id], references: [id], onDelete: NoAction, onUpdate: NoAction)
|
||||||
|
|
||||||
|
rechnung_id String? @unique
|
||||||
|
rechnung Rechnung? @relation(fields: [rechnung_id], references: [id], onDelete: NoAction, onUpdate: NoAction)
|
||||||
|
|
||||||
|
/// @zod.describe("ID der korrespondierenden Gebäudeaufnahme")
|
||||||
|
aufnahme_id String @unique
|
||||||
|
aufnahme Aufnahme @relation(fields: [aufnahme_id], references: [id], onDelete: NoAction, onUpdate: NoAction)
|
||||||
|
}
|
||||||
56
prisma/schema/Benutzer.prisma
Normal file
@@ -0,0 +1,56 @@
|
|||||||
|
|
||||||
|
enum BenutzerRolle {
|
||||||
|
USER
|
||||||
|
ADMIN
|
||||||
|
}
|
||||||
|
|
||||||
|
model Benutzer {
|
||||||
|
id String @id @unique @db.VarChar(11)
|
||||||
|
alte_id Int?
|
||||||
|
name String? @db.VarChar(100)
|
||||||
|
vorname String? @db.VarChar(50)
|
||||||
|
email String @unique(map: "benutzer_email_idx") @db.VarChar(255)
|
||||||
|
passwort String @db.VarChar(255)
|
||||||
|
profilbild String? @db.VarChar
|
||||||
|
plz String? @db.VarChar(5)
|
||||||
|
ort String? @db.VarChar(50)
|
||||||
|
adresse String? @db.VarChar(150)
|
||||||
|
telefon String? @db.VarChar(50)
|
||||||
|
anrede String? @db.VarChar(50)
|
||||||
|
rolle BenutzerRolle @default(USER)
|
||||||
|
firma String?
|
||||||
|
lex_office_id String?
|
||||||
|
|
||||||
|
verified Boolean @default(false)
|
||||||
|
|
||||||
|
Anteilshaber Anteilshaber[] @ignore
|
||||||
|
BedarfsausweisWohnen BedarfsausweisWohnen[]
|
||||||
|
documenttemplates documenttemplates[]
|
||||||
|
objekte Objekt[]
|
||||||
|
rechnungen Rechnung[]
|
||||||
|
tokens tokens[]
|
||||||
|
VerbrauchsausweisGewerbe VerbrauchsausweisGewerbe[]
|
||||||
|
VerbrauchsausweisWohnen VerbrauchsausweisWohnen[]
|
||||||
|
ApiRequests ApiRequests[]
|
||||||
|
RefreshTokens RefreshTokens[]
|
||||||
|
aufnahmen Aufnahme[]
|
||||||
|
|
||||||
|
// ---------------------------------- GEG ----------------------------------
|
||||||
|
geg_einpreisungen GEGEinpreisung[]
|
||||||
|
geg_nachweise_gewerbe GEGNachweisGewerbe[]
|
||||||
|
geg_nachweise_wohnen GEGNachweisWohnen[]
|
||||||
|
bedarfsausweise_gewerbe BedarfsausweisGewerbe[]
|
||||||
|
|
||||||
|
created_at DateTime @default(now())
|
||||||
|
updated_at DateTime @updatedAt @default(now())
|
||||||
|
|
||||||
|
|
||||||
|
ErstellteTickets Tickets[] @relation("ErstellteTickets")
|
||||||
|
BearbeiteteTickets Tickets[] @relation("BearbeiteteTickets")
|
||||||
|
events Event[]
|
||||||
|
|
||||||
|
@@map("benutzer")
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
20
prisma/schema/Bild.prisma
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
|
||||||
|
enum BilderKategorie {
|
||||||
|
Heizung
|
||||||
|
Fenster
|
||||||
|
Gebaeude
|
||||||
|
Daemmung
|
||||||
|
AnlagenTechnik
|
||||||
|
}
|
||||||
|
|
||||||
|
model Bild {
|
||||||
|
id String @id @unique @db.VarChar(11)
|
||||||
|
kategorie BilderKategorie
|
||||||
|
name String
|
||||||
|
|
||||||
|
created_at DateTime @default(now())
|
||||||
|
updated_at DateTime @updatedAt @default(now())
|
||||||
|
|
||||||
|
aufnahme_id String?
|
||||||
|
aufnahme Aufnahme? @relation(fields: [aufnahme_id], references: [id], onDelete: NoAction, onUpdate: NoAction)
|
||||||
|
}
|
||||||
19
prisma/schema/Event.prisma
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
|
||||||
|
// Dieses Model wird für getriggerte Events verwendet
|
||||||
|
// Hier werden beispielsweise Events wie "Nachricht Verschickt" gespeichert.
|
||||||
|
// Diese Events werden dann in der Admin-Oberfläche angezeigt.
|
||||||
|
model Event {
|
||||||
|
id String @id @unique @db.VarChar(11)
|
||||||
|
date DateTime @default(now()) @db.Timestamp(6)
|
||||||
|
|
||||||
|
title String @db.VarChar(255)
|
||||||
|
description String? @db.Text
|
||||||
|
|
||||||
|
|
||||||
|
// Verlinkung des Gebäudes
|
||||||
|
aufnahme_id String
|
||||||
|
aufnahme Aufnahme @relation(fields: [aufnahme_id], references: [id], onDelete: NoAction, onUpdate: NoAction)
|
||||||
|
// Verlinkung des Benutzers
|
||||||
|
benutzer_id String?
|
||||||
|
benutzer Benutzer? @relation(fields: [benutzer_id], references: [id], onDelete: NoAction, onUpdate: NoAction)
|
||||||
|
}
|
||||||
35
prisma/schema/GEGEinpreisung.prisma
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
enum Einpreisungsstatus {
|
||||||
|
open
|
||||||
|
canceled
|
||||||
|
pending
|
||||||
|
expired
|
||||||
|
}
|
||||||
|
|
||||||
|
model GEGEinpreisung {
|
||||||
|
id String @id @unique @db.VarChar(11)
|
||||||
|
|
||||||
|
empfaenger String? @db.VarChar
|
||||||
|
strasse String? @db.VarChar
|
||||||
|
plz String? @db.VarChar
|
||||||
|
ort String? @db.VarChar
|
||||||
|
zusatzzeile String? @db.VarChar
|
||||||
|
telefon String? @db.VarChar
|
||||||
|
email String? @db.VarChar
|
||||||
|
|
||||||
|
abweichende_versand_adresse Boolean? @default(false)
|
||||||
|
versand_empfaenger String? @db.VarChar
|
||||||
|
versand_strasse String? @db.VarChar
|
||||||
|
versand_plz String? @db.VarChar
|
||||||
|
versand_ort String? @db.VarChar
|
||||||
|
versand_zusatzzeile String? @db.VarChar
|
||||||
|
|
||||||
|
status Einpreisungsstatus
|
||||||
|
|
||||||
|
geg_nachweis_wohnen GEGNachweisWohnen?
|
||||||
|
geg_nachweis_gewerbe GEGNachweisGewerbe?
|
||||||
|
bedarfsausweis_gewerbe BedarfsausweisGewerbe?
|
||||||
|
|
||||||
|
/// @zod.describe("Die ID des Benutzers, der diese Einpreisung bekommt.")
|
||||||
|
benutzer_id String?
|
||||||
|
benutzer Benutzer? @relation(fields: [benutzer_id], references: [id], onDelete: NoAction, onUpdate: NoAction)
|
||||||
|
}
|
||||||
34
prisma/schema/GEGNachweisGewerbe.prisma
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
model GEGNachweisGewerbe {
|
||||||
|
id String @id @unique @db.VarChar(11)
|
||||||
|
|
||||||
|
/// @zod.describe("Ausstellgrund wie z.B. Vermietung oder Verkauf")
|
||||||
|
ausstellgrund Ausstellgrund?
|
||||||
|
/// @zod.describe("Falls der Keller des Gebäudes beheizt wird, sollte dieser Wert auf true stehen")
|
||||||
|
keller_beheizt Boolean?
|
||||||
|
|
||||||
|
/// @zod.describe("Falls die Nachweisanfrage storniert wurde, sollte dieser Wert auf true stehen")
|
||||||
|
storniert Boolean? @default(false)
|
||||||
|
/// @zod.describe("Falls der Nachweis bestellt wurde, sollte dieser Wert auf true stehen")
|
||||||
|
bestellt Boolean? @default(false)
|
||||||
|
/// @zod.describe("Falls der Nachweis vom Aussteller zurückgestellt wurde, sollte dieser Wert auf true stehen")
|
||||||
|
zurueckgestellt Boolean? @default(false)
|
||||||
|
|
||||||
|
/// @zod.describe("Beschreibung des Bauvorhabens")
|
||||||
|
beschreibung String? @db.Text
|
||||||
|
|
||||||
|
nachweistyp AusweisTyp @default(Standard)
|
||||||
|
|
||||||
|
created_at DateTime @default(now())
|
||||||
|
updated_at DateTime @updatedAt @default(now())
|
||||||
|
|
||||||
|
/// @zod.describe("Die ID des Benutzers, welchem dieser Ausweis gehört")
|
||||||
|
benutzer_id String?
|
||||||
|
benutzer Benutzer? @relation(fields: [benutzer_id], references: [id], onDelete: NoAction, onUpdate: NoAction)
|
||||||
|
aufnahme_id String @unique
|
||||||
|
aufnahme Aufnahme @relation(fields: [aufnahme_id], references: [id], onDelete: NoAction, onUpdate: NoAction)
|
||||||
|
|
||||||
|
rechnung_id String? @unique
|
||||||
|
rechnung Rechnung? @relation(fields: [rechnung_id], references: [id], onDelete: NoAction, onUpdate: NoAction)
|
||||||
|
geg_einpreisung_id String? @unique
|
||||||
|
geg_einpreisung GEGEinpreisung? @relation(fields: [geg_einpreisung_id], references: [id], onDelete: NoAction, onUpdate: NoAction)
|
||||||
|
}
|
||||||
34
prisma/schema/GEGNachweisWohnen.prisma
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
model GEGNachweisWohnen {
|
||||||
|
id String @id @unique @db.VarChar(11)
|
||||||
|
|
||||||
|
/// @zod.describe("Ausstellgrund wie z.B. Vermietung oder Verkauf")
|
||||||
|
ausstellgrund Ausstellgrund?
|
||||||
|
/// @zod.describe("Falls der Keller des Gebäudes beheizt wird, sollte dieser Wert auf true stehen")
|
||||||
|
keller_beheizt Boolean?
|
||||||
|
|
||||||
|
/// @zod.describe("Falls die Nachweisanfrage storniert wurde, sollte dieser Wert auf true stehen")
|
||||||
|
storniert Boolean? @default(false)
|
||||||
|
/// @zod.describe("Falls der Nachweis bestellt wurde, sollte dieser Wert auf true stehen")
|
||||||
|
bestellt Boolean? @default(false)
|
||||||
|
/// @zod.describe("Falls der Nachweis vom Aussteller zurückgestellt wurde, sollte dieser Wert auf true stehen")
|
||||||
|
zurueckgestellt Boolean? @default(false)
|
||||||
|
|
||||||
|
/// @zod.describe("Beschreibung des Bauvorhabens")
|
||||||
|
beschreibung String? @db.Text
|
||||||
|
|
||||||
|
nachweistyp AusweisTyp @default(Standard)
|
||||||
|
|
||||||
|
created_at DateTime @default(now())
|
||||||
|
updated_at DateTime @updatedAt @default(now())
|
||||||
|
|
||||||
|
/// @zod.describe("Die ID des Benutzers, welchem dieser Ausweis gehört")
|
||||||
|
benutzer_id String?
|
||||||
|
benutzer Benutzer? @relation(fields: [benutzer_id], references: [id], onDelete: NoAction, onUpdate: NoAction)
|
||||||
|
aufnahme_id String @unique
|
||||||
|
aufnahme Aufnahme @relation(fields: [aufnahme_id], references: [id], onDelete: NoAction, onUpdate: NoAction)
|
||||||
|
|
||||||
|
rechnung_id String? @unique
|
||||||
|
rechnung Rechnung? @relation(fields: [rechnung_id], references: [id], onDelete: NoAction, onUpdate: NoAction)
|
||||||
|
geg_einpreisung_id String? @unique
|
||||||
|
geg_einpreisung GEGEinpreisung? @relation(fields: [geg_einpreisung_id], references: [id], onDelete: NoAction, onUpdate: NoAction)
|
||||||
|
}
|
||||||
11
prisma/schema/Klimafaktoren.prisma
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
model Klimafaktoren {
|
||||||
|
id Int @id @default(autoincrement())
|
||||||
|
plz String @db.VarChar(5)
|
||||||
|
month Int
|
||||||
|
year Int
|
||||||
|
klimafaktor Float @default(1)
|
||||||
|
|
||||||
|
// Mithilfe eines composite keys können wir einfach den Monat und das Jahr mit der Postleitzahl verknüpfen
|
||||||
|
// somit müssen wir nicht mehr eine Zeile für jeden Monat anlegen.
|
||||||
|
@@unique([plz, month, year])
|
||||||
|
}
|
||||||
20
prisma/schema/Objekt.prisma
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
model Objekt {
|
||||||
|
id String @id @unique @db.VarChar(11)
|
||||||
|
|
||||||
|
latitude Float?
|
||||||
|
longitude Float?
|
||||||
|
|
||||||
|
/// @zod.describe("Postleitzahl des Gebäudes")
|
||||||
|
plz String? @db.VarChar(5)
|
||||||
|
/// @zod.describe("Ort des Gebäudes")
|
||||||
|
ort String? @db.VarChar(50)
|
||||||
|
/// @zod.describe("Adresse (Straße und Hausnummer) des Gebäudes")
|
||||||
|
adresse String? @db.VarChar(100)
|
||||||
|
|
||||||
|
erstellungsdatum DateTime? @default(now())
|
||||||
|
|
||||||
|
benutzer_id String?
|
||||||
|
benutzer Benutzer? @relation(fields: [benutzer_id], references: [id])
|
||||||
|
aufnahmen Aufnahme[]
|
||||||
|
anteilshaber Anteilshaber[]
|
||||||
|
}
|
||||||
9
prisma/schema/Postleitzahlen.prisma
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
model Postleitzahlen {
|
||||||
|
id Int @id @default(autoincrement())
|
||||||
|
plz String @db.VarChar(5)
|
||||||
|
stadt String @db.VarChar(100)
|
||||||
|
bundesland String @db.VarChar(100)
|
||||||
|
landkreis String @db.VarChar(100)
|
||||||
|
lat Float
|
||||||
|
lon Float
|
||||||
|
}
|
||||||
73
prisma/schema/Rechnung.prisma
Normal file
@@ -0,0 +1,73 @@
|
|||||||
|
|
||||||
|
enum Bezahlmethoden {
|
||||||
|
paypal
|
||||||
|
giropay
|
||||||
|
sofort
|
||||||
|
creditcard
|
||||||
|
rechnung
|
||||||
|
}
|
||||||
|
|
||||||
|
enum Rechnungsstatus {
|
||||||
|
open
|
||||||
|
canceled
|
||||||
|
pending
|
||||||
|
authorized
|
||||||
|
expired
|
||||||
|
failed
|
||||||
|
paid
|
||||||
|
}
|
||||||
|
|
||||||
|
enum AusweisTyp {
|
||||||
|
Standard
|
||||||
|
standardXL
|
||||||
|
Beratung
|
||||||
|
BeratungXL
|
||||||
|
Offline
|
||||||
|
OfflineXL
|
||||||
|
}
|
||||||
|
|
||||||
|
model Rechnung {
|
||||||
|
id String @id @unique @db.VarChar(11)
|
||||||
|
alte_id Int?
|
||||||
|
|
||||||
|
empfaenger String? @db.VarChar
|
||||||
|
strasse String? @db.VarChar
|
||||||
|
plz String? @db.VarChar
|
||||||
|
ort String? @db.VarChar
|
||||||
|
zusatzzeile String? @db.VarChar
|
||||||
|
telefon String? @db.VarChar
|
||||||
|
email String? @db.VarChar
|
||||||
|
|
||||||
|
abweichende_versand_adresse Boolean? @default(false)
|
||||||
|
versand_empfaenger String? @db.VarChar
|
||||||
|
versand_strasse String? @db.VarChar
|
||||||
|
versand_plz String? @db.VarChar
|
||||||
|
versand_ort String? @db.VarChar
|
||||||
|
versand_zusatzzeile String? @db.VarChar
|
||||||
|
|
||||||
|
bezahlmethode Bezahlmethoden
|
||||||
|
status Rechnungsstatus
|
||||||
|
services Service[]
|
||||||
|
betrag Float
|
||||||
|
erstellt_am DateTime @default(now())
|
||||||
|
bezahlt_am DateTime?
|
||||||
|
storniert_am DateTime?
|
||||||
|
transaktions_referenz String? @db.VarChar
|
||||||
|
partner_code String?
|
||||||
|
lex_office_id String?
|
||||||
|
|
||||||
|
created_at DateTime @default(now())
|
||||||
|
updated_at DateTime @updatedAt @default(now())
|
||||||
|
|
||||||
|
benutzer_id String
|
||||||
|
benutzer Benutzer @relation(fields: [benutzer_id], references: [id], onDelete: NoAction, onUpdate: NoAction)
|
||||||
|
|
||||||
|
verbrauchsausweis_wohnen VerbrauchsausweisWohnen?
|
||||||
|
verbrauchsausweis_gewerbe VerbrauchsausweisGewerbe?
|
||||||
|
bedarfsausweis_wohnen BedarfsausweisWohnen?
|
||||||
|
bedarfsausweis_gewerbe BedarfsausweisGewerbe?
|
||||||
|
geg_nachweis_gewerbe GEGNachweisGewerbe?
|
||||||
|
geg_nachweis_wohnen GEGNachweisWohnen?
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
13
prisma/schema/RefreshTokens.prisma
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
|
||||||
|
model RefreshTokens {
|
||||||
|
id Int @id @default(autoincrement())
|
||||||
|
token String @unique
|
||||||
|
// Wir nehmen die IP Adresse des Clients mit auf.
|
||||||
|
// Falls sich die IP Adresse eines Refresh Token Owners ändert, können wir diesen einfach invalidieren.
|
||||||
|
ip String
|
||||||
|
expiry DateTime
|
||||||
|
|
||||||
|
// Relationen
|
||||||
|
benutzer_id String
|
||||||
|
user Benutzer @relation(fields: [benutzer_id], references: [id], onDelete: Cascade)
|
||||||
|
}
|
||||||
29
prisma/schema/Tickets.prisma
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
|
||||||
|
enum TicketStatus {
|
||||||
|
OFFEN
|
||||||
|
IN_BEARBEITUNG
|
||||||
|
IN_WARTESCHLEIFE
|
||||||
|
GESCHLOSSEN
|
||||||
|
GELOEST
|
||||||
|
}
|
||||||
|
|
||||||
|
model Tickets {
|
||||||
|
id String @id @unique @db.VarChar(11)
|
||||||
|
created_at DateTime @default(now())
|
||||||
|
updated_at DateTime? @updatedAt
|
||||||
|
deleted_at DateTime?
|
||||||
|
// Attribute
|
||||||
|
status TicketStatus @default(OFFEN)
|
||||||
|
titel String
|
||||||
|
beschreibung String
|
||||||
|
metadata Json?
|
||||||
|
email String
|
||||||
|
|
||||||
|
bearbeiter_id String?
|
||||||
|
prioritaet Int? @default(0)
|
||||||
|
|
||||||
|
// Relationen
|
||||||
|
benutzer_id String?
|
||||||
|
benutzer Benutzer? @relation(fields: [benutzer_id], references: [id], name: "ErstellteTickets")
|
||||||
|
bearbeiter Benutzer? @relation(fields: [bearbeiter_id], references: [id], name: "BearbeiteteTickets")
|
||||||
|
}
|
||||||
15
prisma/schema/Unterlage.prisma
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
|
||||||
|
enum UnterlagenKategorie {
|
||||||
|
Grundriss
|
||||||
|
Sonstiges
|
||||||
|
}
|
||||||
|
|
||||||
|
model Unterlage {
|
||||||
|
id String @id @unique @db.VarChar(11)
|
||||||
|
name String?
|
||||||
|
kategorie String?
|
||||||
|
mime String
|
||||||
|
|
||||||
|
aufnahme_id String?
|
||||||
|
aufnahme Aufnahme? @relation(fields: [aufnahme_id], references: [id], onDelete: NoAction, onUpdate: NoAction)
|
||||||
|
}
|
||||||
102
prisma/schema/VerbrauchsausweisGewerbe.prisma
Normal file
@@ -0,0 +1,102 @@
|
|||||||
|
|
||||||
|
model VerbrauchsausweisGewerbe {
|
||||||
|
id String @id @unique @db.VarChar(11)
|
||||||
|
alte_ausweis_id Int?
|
||||||
|
ausstellgrund Ausstellgrund?
|
||||||
|
registriernummer String? @db.VarChar
|
||||||
|
zusaetzliche_heizquelle Boolean?
|
||||||
|
einheit_1 String? @db.VarChar(50)
|
||||||
|
einheit_2 String? @db.VarChar(50)
|
||||||
|
startdatum DateTime? @db.Timestamp(6)
|
||||||
|
verbrauch_1 Int?
|
||||||
|
verbrauch_2 Int?
|
||||||
|
verbrauch_3 Int?
|
||||||
|
verbrauch_4 Int?
|
||||||
|
verbrauch_5 Int?
|
||||||
|
verbrauch_6 Int?
|
||||||
|
|
||||||
|
/// @zod.describe("Genutzer Brennstoff der primären Energiequelle")
|
||||||
|
brennstoff_1 String? @db.VarChar(50)
|
||||||
|
/// @zod.describe("Genutzer Brennstoff der sekundären Energiequelle")
|
||||||
|
brennstoff_2 String? @db.VarChar(50)
|
||||||
|
|
||||||
|
/// @zod.describe("Die aus der Berechnung hervorgehende Energieeffizienzklasse des Gebäudes")
|
||||||
|
energieeffizienzklasse String? @db.VarChar(5)
|
||||||
|
/// @zod.describe("Datum an dem der Aussteller den Ausweis ausgestellt hat")
|
||||||
|
ausstellungsdatum DateTime?
|
||||||
|
boxpruefung Boolean? @default(false)
|
||||||
|
|
||||||
|
strom_1 Int?
|
||||||
|
strom_2 Int?
|
||||||
|
strom_3 Int?
|
||||||
|
|
||||||
|
stromverbrauch_enthaelt_heizung Boolean?
|
||||||
|
stromverbrauch_enthaelt_warmwasser Boolean?
|
||||||
|
stromverbrauch_enthaelt_lueftung Boolean?
|
||||||
|
stromverbrauch_enthaelt_beleuchtung Boolean?
|
||||||
|
stromverbrauch_enthaelt_kuehlung Boolean?
|
||||||
|
stromverbrauch_enthaelt_sonstige String? @db.VarChar(255)
|
||||||
|
|
||||||
|
kuehlung_enthalten Boolean?
|
||||||
|
anteil_kuehlung_1 Float?
|
||||||
|
anteil_kuehlung_2 Float?
|
||||||
|
|
||||||
|
|
||||||
|
keller_beheizt Boolean?
|
||||||
|
|
||||||
|
alternative_heizung Boolean?
|
||||||
|
alternative_warmwasser Boolean?
|
||||||
|
alternative_lueftung Boolean?
|
||||||
|
alternative_kuehlung Boolean?
|
||||||
|
|
||||||
|
warmwasser_enthalten Boolean?
|
||||||
|
/// @zod.describe("Falls der Warmwasser Anteil am Verbrauch bekannt ist, sollte dieser Wert auf true stehen")
|
||||||
|
warmwasser_anteil_bekannt Boolean?
|
||||||
|
anteil_warmwasser_1 Float?
|
||||||
|
anteil_warmwasser_2 Float?
|
||||||
|
|
||||||
|
ausgestellt Boolean? @default(false)
|
||||||
|
/// @zod.describe("Falls der Ausweis storniert wurde, sollte dieser Wert auf true stehen")
|
||||||
|
storniert Boolean? @default(false)
|
||||||
|
/// @zod.describe("Falls der Ausweis bestellt wurde, sollte dieser Wert auf true stehen")
|
||||||
|
bestellt Boolean? @default(false)
|
||||||
|
/// @zod.describe("Falls der Ausweis vom Aussteller zurückgestellt wurde, sollte dieser Wert auf true stehen")
|
||||||
|
zurueckgestellt Boolean? @default(false)
|
||||||
|
/// @zod.describe("Durch den Kunden hinzugefügte Anmerkung zur Vorabprüfung")
|
||||||
|
prueftext String? @db.VarChar(1000)
|
||||||
|
|
||||||
|
beschreibung String? @db.Text
|
||||||
|
|
||||||
|
/// @zod.describe("Ob bei der Anfrage der Registriernummer eine Kontrolldatei angefragt wurde")
|
||||||
|
kontrolldatei_angefragt Boolean? @default(false)
|
||||||
|
|
||||||
|
created_at DateTime @default(now())
|
||||||
|
updated_at DateTime @updatedAt @default(now())
|
||||||
|
|
||||||
|
ausweistyp AusweisTyp @default(Standard)
|
||||||
|
|
||||||
|
pruefpunkt_heizungsalter Boolean? @default(false)
|
||||||
|
pruefpunkt_verbrauch_niedrig Boolean? @default(false)
|
||||||
|
pruefpunkt_verbrauch_hoch Boolean? @default(false)
|
||||||
|
pruefpunkt_verbrauch_null Boolean? @default(false)
|
||||||
|
pruefpunkt_verbrauch_abweichung Boolean? @default(false)
|
||||||
|
pruefpunkt_wohnflaeche_einheiten Boolean? @default(false)
|
||||||
|
pruefpunkt_strom_null Boolean? @default(false)
|
||||||
|
pruefpunkt_strom_abweichung Boolean? @default(false)
|
||||||
|
pruefpunkt_plz Boolean? @default(false)
|
||||||
|
pruefpunkt_heizungsanlage Boolean? @default(false)
|
||||||
|
pruefpunkt_anteil_warmwasser Boolean? @default(false)
|
||||||
|
pruefpunkt_wohnflaeche Boolean? @default(false)
|
||||||
|
pruefpunkt_geometrie Boolean? @default(false)
|
||||||
|
pruefpunkt_fenster Boolean? @default(false)
|
||||||
|
|
||||||
|
benutzer_id String?
|
||||||
|
benutzer Benutzer? @relation(fields: [benutzer_id], references: [id], onDelete: NoAction, onUpdate: NoAction)
|
||||||
|
|
||||||
|
rechnung_id String? @unique
|
||||||
|
rechnung Rechnung? @relation(fields: [rechnung_id], references: [id], onDelete: NoAction, onUpdate: NoAction)
|
||||||
|
|
||||||
|
/// @zod.describe("ID der korrespondierenden Gebäudeaufnahme")
|
||||||
|
aufnahme_id String @unique
|
||||||
|
aufnahme Aufnahme @relation(fields: [aufnahme_id], references: [id], onDelete: NoAction, onUpdate: NoAction)
|
||||||
|
}
|
||||||
107
prisma/schema/VerbrauchsausweisWohnen.prisma
Normal file
@@ -0,0 +1,107 @@
|
|||||||
|
|
||||||
|
model VerbrauchsausweisWohnen {
|
||||||
|
/// @zod.describe("ID des Ausweises")
|
||||||
|
id String @id @unique @db.VarChar(11)
|
||||||
|
alte_ausweis_id Int?
|
||||||
|
/// @zod.describe("Ausstellgrund wie z.B. Vermietung oder Verkauf")
|
||||||
|
ausstellgrund Ausstellgrund?
|
||||||
|
/// @zod.describe("Die Registriernummer des Ausweises")
|
||||||
|
registriernummer String? @db.VarChar
|
||||||
|
/// @zod.describe("Falls eine sekundäre Heizquelle existiert, sollte dieser Wert auf true stehen")
|
||||||
|
zusaetzliche_heizquelle Boolean?
|
||||||
|
/// @zod.describe("Einheit des Energieträgers der primären Heizquelle")
|
||||||
|
einheit_1 String? @db.VarChar(50)
|
||||||
|
/// @zod.describe("Einheit des Energieträgers der sekundären Heizquelle")
|
||||||
|
einheit_2 String? @db.VarChar(50)
|
||||||
|
|
||||||
|
/// @zod.describe("Genutzer Brennstoff der primären Energiequelle")
|
||||||
|
brennstoff_1 String? @db.VarChar(50)
|
||||||
|
/// @zod.describe("Genutzer Brennstoff der sekundären Energiequelle")
|
||||||
|
brennstoff_2 String? @db.VarChar(50)
|
||||||
|
|
||||||
|
/// @zod.describe("Die aus der Berechnung hervorgehende Energieeffizienzklasse des Gebäudes")
|
||||||
|
energieeffizienzklasse String? @db.VarChar(5)
|
||||||
|
/// @zod.describe("Datum an dem der Aussteller den Ausweis ausgestellt hat")
|
||||||
|
ausstellungsdatum DateTime?
|
||||||
|
boxpruefung Boolean? @default(false)
|
||||||
|
|
||||||
|
startdatum DateTime? @db.Timestamptz(6)
|
||||||
|
/// @zod.describe("Energieverbrauch der primären Heizquelle im ersten der drei Verbrauchsjahre")
|
||||||
|
verbrauch_1 Int?
|
||||||
|
/// @zod.describe("Energieverbrauch der primären Heizquelle im zweiten der drei Verbrauchsjahre")
|
||||||
|
verbrauch_2 Int?
|
||||||
|
/// @zod.describe("Energieverbrauch der primären Heizquelle im letzten der drei Verbrauchsjahre")
|
||||||
|
verbrauch_3 Int?
|
||||||
|
/// @zod.describe("Energieverbrauch der sekund̈́ären Heizquelle im ersten der drei Verbrauchsjahre")
|
||||||
|
verbrauch_4 Int?
|
||||||
|
/// @zod.describe("Energieverbrauch der sekund̈́ären Heizquelle im zweiten der drei Verbrauchsjahre")
|
||||||
|
verbrauch_5 Int?
|
||||||
|
/// @zod.describe("Energieverbrauch der sekund̈́ären Heizquelle im letzten der drei Verbrauchsjahre")
|
||||||
|
verbrauch_6 Int?
|
||||||
|
/// @zod.describe("Falls Warmwasser im Verbrauchswert enthalten ist, sollte dieser Wert auf true stehen")
|
||||||
|
warmwasser_enthalten Boolean?
|
||||||
|
/// @zod.describe("Falls der Warmwasser Anteil am Verbrauch bekannt ist, sollte dieser Wert auf true stehen")
|
||||||
|
warmwasser_anteil_bekannt Boolean?
|
||||||
|
/// @zod.describe("Der Faktor mit dem die Wohnfläche erhöht wird wenn die beheizte Gesamtfläche (energetische Nutzfläche) unbekannt ist.")
|
||||||
|
faktorKeller Float?
|
||||||
|
|
||||||
|
/// @zod.describe("Falls der Heizungsverbrauch alternative Energieversorgungssysteme beinhaltet, sollte dieser Wert auf true stehen.")
|
||||||
|
alternative_heizung Boolean?
|
||||||
|
/// @zod.describe("Falls der Warmwasserverbrauch alternative Energieversorgungssysteme (z.B. Solarsystem, Wärmepumpe, etc.) beinhaltet, sollte dieser Wert auf true stehen.")
|
||||||
|
alternative_warmwasser Boolean?
|
||||||
|
/// @zod.describe("Falls die Lüftung alternative Energieversorgungssysteme beinhaltet sollte dieser Wert auf true stehen.")
|
||||||
|
alternative_lueftung Boolean?
|
||||||
|
/// @zod.describe("Falls die Kühlung alternative Energieversorgungssysteme beinhaltet sollte dieser Wert auf true stehen.")
|
||||||
|
alternative_kuehlung Boolean?
|
||||||
|
|
||||||
|
/// @zod.describe("Anteil des Warmwassers am Gesamtverbrauch der primären Energiequelle in Prozent")
|
||||||
|
anteil_warmwasser_1 Float?
|
||||||
|
/// @zod.describe("Anteil des Warmwassers am Gesamtverbrauch der sekundären Energiequelle in Prozent")
|
||||||
|
anteil_warmwasser_2 Float?
|
||||||
|
|
||||||
|
ausgestellt Boolean? @default(false)
|
||||||
|
/// @zod.describe("Falls der Ausweis storniert wurde, sollte dieser Wert auf true stehen")
|
||||||
|
storniert Boolean? @default(false)
|
||||||
|
/// @zod.describe("Falls der Ausweis bestellt wurde, sollte dieser Wert auf true stehen")
|
||||||
|
bestellt Boolean? @default(false)
|
||||||
|
/// @zod.describe("Falls der Ausweis vom Aussteller zurückgestellt wurde, sollte dieser Wert auf true stehen")
|
||||||
|
zurueckgestellt Boolean? @default(false)
|
||||||
|
/// @zod.describe("Durch den Kunden hinzugefügte Anmerkung zur Vorabprüfung")
|
||||||
|
prueftext String? @db.VarChar(1000)
|
||||||
|
|
||||||
|
beschreibung String? @db.Text
|
||||||
|
|
||||||
|
/// @zod.describe("Ob bei der Anfrage der Registriernummer eine Kontrolldatei angefragt wurde")
|
||||||
|
kontrolldatei_angefragt Boolean? @default(false)
|
||||||
|
|
||||||
|
ausweistyp AusweisTyp @default(Standard)
|
||||||
|
|
||||||
|
created_at DateTime @default(now())
|
||||||
|
updated_at DateTime @updatedAt @default(now())
|
||||||
|
|
||||||
|
pruefpunkt_heizungsalter Boolean? @default(false)
|
||||||
|
pruefpunkt_verbrauch_niedrig Boolean? @default(false)
|
||||||
|
pruefpunkt_verbrauch_hoch Boolean? @default(false)
|
||||||
|
pruefpunkt_verbrauch_null Boolean? @default(false)
|
||||||
|
pruefpunkt_verbrauch_abweichung Boolean? @default(false)
|
||||||
|
pruefpunkt_wohnflaeche_einheiten Boolean? @default(false)
|
||||||
|
pruefpunkt_strom_null Boolean? @default(false)
|
||||||
|
pruefpunkt_strom_abweichung Boolean? @default(false)
|
||||||
|
pruefpunkt_plz Boolean? @default(false)
|
||||||
|
pruefpunkt_heizungsanlage Boolean? @default(false)
|
||||||
|
pruefpunkt_anteil_warmwasser Boolean? @default(false)
|
||||||
|
pruefpunkt_wohnflaeche Boolean? @default(false)
|
||||||
|
pruefpunkt_geometrie Boolean? @default(false)
|
||||||
|
pruefpunkt_fenster Boolean? @default(false)
|
||||||
|
|
||||||
|
/// @zod.describe("Die ID des Benutzers, welchem dieser Ausweis gehört")
|
||||||
|
benutzer_id String?
|
||||||
|
benutzer Benutzer? @relation(fields: [benutzer_id], references: [id], onDelete: NoAction, onUpdate: NoAction)
|
||||||
|
|
||||||
|
rechnung_id String? @unique
|
||||||
|
rechnung Rechnung? @relation(fields: [rechnung_id], references: [id], onDelete: NoAction, onUpdate: NoAction)
|
||||||
|
|
||||||
|
/// @zod.describe("ID der korrespondierenden Gebäudeaufnahme")
|
||||||
|
aufnahme_id String @unique
|
||||||
|
aufnahme Aufnahme @relation(fields: [aufnahme_id], references: [id], onDelete: NoAction, onUpdate: NoAction)
|
||||||
|
}
|
||||||
15
prisma/schema/documenttemplates.prisma
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
|
||||||
|
model documenttemplates {
|
||||||
|
id Int @id(map: "PK_DOCUMENTTEMPLATES") @default(autoincrement())
|
||||||
|
name String @db.VarChar(100)
|
||||||
|
shortdescription String @db.VarChar(100)
|
||||||
|
longdescription String @db.VarChar(5000)
|
||||||
|
user_id String
|
||||||
|
is_private Boolean @default(true)
|
||||||
|
documenttype Int
|
||||||
|
filename String @db.VarChar(100)
|
||||||
|
created_at DateTime @default(now()) @db.Timestamp(0)
|
||||||
|
updated_at DateTime @default(now()) @db.Timestamp(0)
|
||||||
|
benutzer Benutzer @relation(fields: [user_id], references: [id], onDelete: Cascade, map: "benutzer_fk")
|
||||||
|
documenttypes documenttypes @relation(fields: [documenttype], references: [id], onDelete: Cascade, map: "documenttypes_fk")
|
||||||
|
}
|
||||||
8
prisma/schema/documenttypes.prisma
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
|
||||||
|
model documenttypes {
|
||||||
|
id Int @id(map: "PK_DOCUMENTTYPES") @default(autoincrement())
|
||||||
|
name String @db.VarChar(100)
|
||||||
|
shortdescription String @db.VarChar(100)
|
||||||
|
longdescription String @db.VarChar(5000)
|
||||||
|
documenttemplates documenttemplates[]
|
||||||
|
}
|
||||||
52
prisma/schema/schema.prisma
Normal file
@@ -0,0 +1,52 @@
|
|||||||
|
generator client {
|
||||||
|
provider = "prisma-client-js"
|
||||||
|
binaryTargets = ["native", "debian-openssl-1.1.x"]
|
||||||
|
previewFeatures = ["prismaSchemaFolder"]
|
||||||
|
}
|
||||||
|
|
||||||
|
generator zod {
|
||||||
|
provider = "bunx zod-prisma"
|
||||||
|
output = "../../src/generated/zod"
|
||||||
|
relationModel = false
|
||||||
|
modelCase = "PascalCase"
|
||||||
|
modelSuffix = "Schema"
|
||||||
|
useDecimalJs = false
|
||||||
|
imports = ""
|
||||||
|
prismaJsonNullability = true
|
||||||
|
useNullish = true
|
||||||
|
}
|
||||||
|
|
||||||
|
generator enum {
|
||||||
|
provider = "tsx ./prisma/prisma-enum-generator.ts"
|
||||||
|
output = "../../src/generated/enums.ts"
|
||||||
|
}
|
||||||
|
|
||||||
|
datasource db {
|
||||||
|
provider = "postgresql"
|
||||||
|
url = env("POSTGRES_DATABASE_URL")
|
||||||
|
}
|
||||||
|
|
||||||
|
enum Ausstellgrund {
|
||||||
|
Neubau
|
||||||
|
Vermietung
|
||||||
|
Verkauf
|
||||||
|
Modernisierung
|
||||||
|
Sonstiges
|
||||||
|
}
|
||||||
|
|
||||||
|
enum Ausweisart {
|
||||||
|
VerbrauchsausweisWohnen
|
||||||
|
VerbrauchsausweisGewerbe
|
||||||
|
BedarfsausweisWohnen
|
||||||
|
BedarfsausweisGewerbe
|
||||||
|
GEGNachweisWohnen
|
||||||
|
GEGNachweisGewerbe
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
enum Service {
|
||||||
|
Telefonberatung
|
||||||
|
Aushang
|
||||||
|
Qualitaetsdruck
|
||||||
|
SameDay
|
||||||
|
}
|
||||||
11
prisma/schema/tokens.prisma
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
|
||||||
|
model tokens {
|
||||||
|
id Int @id(map: "PK_TOKENS") @default(autoincrement())
|
||||||
|
token String @db.VarChar(36)
|
||||||
|
user_id String
|
||||||
|
date_created DateTime @default(now()) @db.Timestamp(6)
|
||||||
|
last_used DateTime @default(now()) @db.Timestamp(6)
|
||||||
|
times_used Int @default(0)
|
||||||
|
permissions Int @default(0)
|
||||||
|
benutzer Benutzer @relation(fields: [user_id], references: [id], onDelete: NoAction, onUpdate: NoAction, map: "fk_benutzer_tokens_user_id")
|
||||||
|
}
|
||||||
384
prisma/seed.ts
Normal file
@@ -0,0 +1,384 @@
|
|||||||
|
// Das wird ausgeführt, wenn wir `npx prisma db seed` ausführen
|
||||||
|
// Hier können wir unsere Datenbank mit Beispieldaten füllen
|
||||||
|
// Mehr Infos: https://www.prisma.io/docs/orm/prisma-migrate/workflows/seeding
|
||||||
|
|
||||||
|
import { PrismaClient } from "@prisma/client";
|
||||||
|
import crypto from "node:crypto";
|
||||||
|
import { faker } from "@faker-js/faker";
|
||||||
|
import { Enums } from "../src/lib/client/prisma";
|
||||||
|
import moment from "moment";
|
||||||
|
|
||||||
|
function hashPassword(password: string): string {
|
||||||
|
const salt = crypto.randomBytes(16).toString("hex");
|
||||||
|
const hash = hashWithGivenSalt(password, salt) + salt;
|
||||||
|
return hash;
|
||||||
|
}
|
||||||
|
|
||||||
|
function hashWithGivenSalt(password: string, salt: string): string {
|
||||||
|
const hash = crypto.scryptSync(password, salt, 32).toString("hex");
|
||||||
|
return hash;
|
||||||
|
}
|
||||||
|
|
||||||
|
const prisma = new PrismaClient({
|
||||||
|
log: ["warn", "error"],
|
||||||
|
errorFormat: "pretty",
|
||||||
|
datasources: {
|
||||||
|
db: {
|
||||||
|
url: process.env.POSTGRES_DATABASE_URL,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
// Wir wollen erstmal das Backup mit den Klimafaktoren und der PLZ Liste einfuegen.
|
||||||
|
// Dazu muessen wir die Tabelle leeren.
|
||||||
|
|
||||||
|
await prisma.klimafaktoren.deleteMany({
|
||||||
|
where: {
|
||||||
|
id: { not: 0 },
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
await prisma.postleitzahlen.deleteMany({
|
||||||
|
where: {
|
||||||
|
id: { not: 0 },
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
// Jetzt koennen wir die Daten aus dem Backup einlesen.
|
||||||
|
|
||||||
|
const klimafaktoren = await Bun.file("./backup/klimafaktoren.json").json();
|
||||||
|
|
||||||
|
await prisma.klimafaktoren.createMany({
|
||||||
|
data: klimafaktoren.map((klimafaktor: [number, number, number, string]) => {
|
||||||
|
return {
|
||||||
|
plz: klimafaktor[3],
|
||||||
|
month: klimafaktor[1],
|
||||||
|
year: klimafaktor[0],
|
||||||
|
klimafaktor: klimafaktor[2],
|
||||||
|
};
|
||||||
|
}),
|
||||||
|
});
|
||||||
|
|
||||||
|
const postleitzahlen = await Bun.file("./backup/postleitzahlen.json").json();
|
||||||
|
|
||||||
|
await prisma.postleitzahlen.createMany({
|
||||||
|
data: postleitzahlen.map(
|
||||||
|
(postleitzahl: {
|
||||||
|
plz: string;
|
||||||
|
ort: string;
|
||||||
|
landkreis: string;
|
||||||
|
bundesland: string;
|
||||||
|
lat: number;
|
||||||
|
lon: number;
|
||||||
|
}) => {
|
||||||
|
return {
|
||||||
|
plz: postleitzahl.plz,
|
||||||
|
stadt: postleitzahl.ort,
|
||||||
|
landkreis: postleitzahl.landkreis,
|
||||||
|
bundesland: postleitzahl.bundesland,
|
||||||
|
lat: postleitzahl.lat,
|
||||||
|
lon: postleitzahl.lon,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
),
|
||||||
|
});
|
||||||
|
|
||||||
|
// Admin erstellen
|
||||||
|
await prisma.benutzer.create({
|
||||||
|
data: {
|
||||||
|
email: "admin@ib-cornelsen.de",
|
||||||
|
passwort: hashPassword("passwort"),
|
||||||
|
rolle: "ADMIN",
|
||||||
|
name: "Admin",
|
||||||
|
vorname: "Admin",
|
||||||
|
adresse: "Adminstraße 1",
|
||||||
|
plz: "12345",
|
||||||
|
id: "USADMIN1"
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
// Test Benutzer erstellen
|
||||||
|
await prisma.benutzer.create({
|
||||||
|
data: {
|
||||||
|
email: "user@ib-cornelsen.de",
|
||||||
|
passwort: hashPassword("passwort"),
|
||||||
|
rolle: "USER",
|
||||||
|
name: "User",
|
||||||
|
vorname: "User",
|
||||||
|
adresse: "Userstraße 1",
|
||||||
|
plz: "12345",
|
||||||
|
id: "USUSER01"
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
// Benutzer erstellen
|
||||||
|
|
||||||
|
// for (let i = 0; i < 10; i++) {
|
||||||
|
// let firstName = faker.person.firstName();
|
||||||
|
// let lastName = faker.person.lastName();
|
||||||
|
// const benutzer = await prisma.benutzer.create({
|
||||||
|
// data: {
|
||||||
|
// email: faker.internet.email({
|
||||||
|
// firstName: firstName,
|
||||||
|
// lastName: lastName,
|
||||||
|
// }),
|
||||||
|
// passwort: hashPassword(faker.internet.password()),
|
||||||
|
// name: lastName,
|
||||||
|
// vorname: firstName,
|
||||||
|
// adresse: faker.location.street(),
|
||||||
|
// plz: faker.location.zipCode({ format: "#####" }),
|
||||||
|
// ort: faker.location.city(),
|
||||||
|
// rolle: "USER",
|
||||||
|
// },
|
||||||
|
// });
|
||||||
|
|
||||||
|
// for (let j = 0; j < Math.round(Math.random() * 5); j++) {
|
||||||
|
// // Für jeden Nutzer erstellen wir auch noch bis zu 5 Ausweise.
|
||||||
|
// await prisma.objekt.create({
|
||||||
|
// data: {
|
||||||
|
// adresse: faker.location.street(),
|
||||||
|
// latitude: faker.location.latitude(),
|
||||||
|
// longitude: faker.location.longitude(),
|
||||||
|
// ort: faker.location.city(),
|
||||||
|
// plz: faker.location.zipCode({ format: "#####" }),
|
||||||
|
// benutzer: {
|
||||||
|
// connect: {
|
||||||
|
// id: benutzer.id,
|
||||||
|
// },
|
||||||
|
// },
|
||||||
|
// aufnahmen: {
|
||||||
|
// create: {
|
||||||
|
// alternative_heizung: faker.datatype.boolean(),
|
||||||
|
// alternative_kuehlung: faker.datatype.boolean(),
|
||||||
|
// alternative_lueftung: faker.datatype.boolean(),
|
||||||
|
// alternative_warmwasser: faker.datatype.boolean(),
|
||||||
|
// aussenwand_gedaemmt: faker.datatype.boolean(),
|
||||||
|
// aussenwand_min_12cm_gedaemmt: faker.datatype.boolean(),
|
||||||
|
// baujahr_gebaeude: [faker.date.past().getFullYear()],
|
||||||
|
// baujahr_heizung: [faker.date.past().getFullYear()],
|
||||||
|
// baujahr_klima: [faker.date.past().getFullYear()],
|
||||||
|
// benutzer: {
|
||||||
|
// connect: {
|
||||||
|
// id: benutzer.id,
|
||||||
|
// },
|
||||||
|
// },
|
||||||
|
// verbrauchsausweise_wohnen: {
|
||||||
|
// create: {
|
||||||
|
// benutzer: {
|
||||||
|
// connect: {
|
||||||
|
// id: benutzer.id,
|
||||||
|
// },
|
||||||
|
// },
|
||||||
|
// },
|
||||||
|
// },
|
||||||
|
// },
|
||||||
|
// },
|
||||||
|
// },
|
||||||
|
// });
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
// export async function importVerbrauchsausweisWohnenAltesSystem(
|
||||||
|
// count: number = 5
|
||||||
|
// ) {
|
||||||
|
// const response = await fetch(
|
||||||
|
// "https://online-energieausweis.org/user/ausweis-import.php",
|
||||||
|
// {
|
||||||
|
// method: "POST",
|
||||||
|
// body: JSON.stringify({
|
||||||
|
// i: count,
|
||||||
|
// offset: 0,
|
||||||
|
// q: {},
|
||||||
|
// }),
|
||||||
|
// }
|
||||||
|
// );
|
||||||
|
|
||||||
|
// const data = await response.json();
|
||||||
|
|
||||||
|
// return data;
|
||||||
|
// }
|
||||||
|
|
||||||
|
// export async function verbrauchsausweisWohnenImportTranslate(
|
||||||
|
// ausweis: Record<string, any>
|
||||||
|
// ) {
|
||||||
|
// let firstName = faker.person.firstName();
|
||||||
|
// let lastName = faker.person.lastName();
|
||||||
|
// const benutzer = await prisma.benutzer.create({
|
||||||
|
// data: {
|
||||||
|
// email: faker.internet.email({
|
||||||
|
// firstName: firstName,
|
||||||
|
// lastName: lastName,
|
||||||
|
// }),
|
||||||
|
// passwort: hashPassword(faker.internet.password()),
|
||||||
|
// name: lastName,
|
||||||
|
// vorname: firstName,
|
||||||
|
// adresse: faker.location.street(),
|
||||||
|
// plz: faker.location.zipCode({ format: "#####" }),
|
||||||
|
// ort: faker.location.city(),
|
||||||
|
// rolle: "USER",
|
||||||
|
// },
|
||||||
|
// });
|
||||||
|
|
||||||
|
// // TODO: Bilder Importieren
|
||||||
|
// const gebaeudeStammdaten = await prisma.objekt.create({
|
||||||
|
// data: {
|
||||||
|
// adresse: ausweis.objekt_strasse,
|
||||||
|
// plz: ausweis.objekt_plz,
|
||||||
|
// ort: ausweis.objekt_ort,
|
||||||
|
// uid: faker.string.uuid(),
|
||||||
|
// latitude: null,
|
||||||
|
// longitude: null,
|
||||||
|
// benutzer: {
|
||||||
|
// connect: {
|
||||||
|
// id: benutzer.id,
|
||||||
|
// },
|
||||||
|
// },
|
||||||
|
// },
|
||||||
|
// });
|
||||||
|
|
||||||
|
// const gebaeudeAufnahmeAllgemein =
|
||||||
|
// await prisma.aufnahme.create({
|
||||||
|
// data: {
|
||||||
|
// benutzer: {
|
||||||
|
// connect: {
|
||||||
|
// id: benutzer.id,
|
||||||
|
// },
|
||||||
|
// },
|
||||||
|
// baujahr_gebaeude: [parseInt(ausweis.baujahr_gebaeude)],
|
||||||
|
// baujahr_heizung: ausweis.baujahr_anlage ? [parseInt(ausweis.baujahr_anlage)] : [],
|
||||||
|
// baujahr_klima: ausweis.baujahr_klimaanlage ? [parseInt(ausweis.baujahr_klimaanlage)] : [],
|
||||||
|
// nutzflaeche: parseInt(ausweis.nutzflaeche),
|
||||||
|
// einheiten: parseInt(ausweis.anzahl_einheiten),
|
||||||
|
// saniert: ausweis.objekt_saniert ? true : false,
|
||||||
|
// keller:
|
||||||
|
// ausweis.keller_beheizt == "Beheizt"
|
||||||
|
// ? Enums.Heizungsstatus.BEHEIZT
|
||||||
|
// : ausweis.keller_beheizt == "Unbeheizt"
|
||||||
|
// ? Enums.Heizungsstatus.UNBEHEIZT
|
||||||
|
// : Enums.Heizungsstatus.NICHT_VORHANDEN,
|
||||||
|
// dachgeschoss:
|
||||||
|
// ausweis.dachgeschoss == "Beheizt"
|
||||||
|
// ? Enums.Heizungsstatus.BEHEIZT
|
||||||
|
// : ausweis.dachgeschoss == "Unbeheizt"
|
||||||
|
// ? Enums.Heizungsstatus.UNBEHEIZT
|
||||||
|
// : Enums.Heizungsstatus.NICHT_VORHANDEN,
|
||||||
|
// flaeche: parseInt(ausweis.wohnflaeche),
|
||||||
|
// gebaeudetyp: ausweis.objekt_typ,
|
||||||
|
// gebaeudeteil: ausweis.objekt_gebaeudeteil,
|
||||||
|
// lueftung: ausweis.lueftungskonzept,
|
||||||
|
// // NOTE: Warum ist das kein Bool?
|
||||||
|
// kuehlung: ausweis.wird_gekuehlt ? "true" : "false",
|
||||||
|
// brennstoff_1: ausweis.energietraeger_1,
|
||||||
|
// brennstoff_2: ausweis.energietraeger_2,
|
||||||
|
// alternative_heizung: ausweis.alheizung ? true : false,
|
||||||
|
// alternative_kuehlung: ausweis.alkuehlung ? true : false,
|
||||||
|
// alternative_lueftung: ausweis.allueftung ? true : false,
|
||||||
|
// alternative_warmwasser: ausweis.alwarmwasser ? true : false,
|
||||||
|
// ausweisart: Enums.Ausweisart.VerbrauchsausweisWohnen,
|
||||||
|
// energieeffizienzklasse: "",
|
||||||
|
// aussenwand_gedaemmt: ausweis.aussenwand_gedaemmt ? true : false,
|
||||||
|
// aussenwand_min_12cm_gedaemmt: ausweis.aussenwand_min_12cm_gedaemmt ? true : false,
|
||||||
|
// bestellt: ausweis.bestellt ? true : false,
|
||||||
|
// boxpruefung: ausweis.boxpruefung ? true : false,
|
||||||
|
// brennwert_kessel: ausweis.brennwert_kessel ? true : false,
|
||||||
|
// dachgeschoss_gedaemmt: ausweis.dachgeschoss_gedaemmt ? true : false,
|
||||||
|
// dachgeschoss_min_12cm_gedaemmt: ausweis.dachgeschoss_min_12cm_gedaemmt ? true : false,
|
||||||
|
// doppel_verglasung: ausweis.doppel_verglasung ? true : false,
|
||||||
|
// dreifach_verglasung: ausweis.dreifach_verglasung ? true : false,
|
||||||
|
// durchlauf_erhitzer: ausweis.durchlauf_erhitzer ? true : false,
|
||||||
|
// einfach_verglasung: ausweis.einfach_verglasung ? true : false,
|
||||||
|
// einzelofen: ausweis.einzelofen ? true : false,
|
||||||
|
// erledigt: ausweis.erledigt ? true : false,
|
||||||
|
// fenster_dicht: ausweis.fenster_dicht ? true : false,
|
||||||
|
// fenster_teilweise_undicht: ausweis.fenster_teilweise_undicht ? true : false,
|
||||||
|
// heizungsrohre_gedaemmt: ausweis.heizungsrohre_gedaemmt ? true : false,
|
||||||
|
// isolier_verglasung: ausweis.isolier_verglasung ? true : false,
|
||||||
|
// keller_decke_gedaemmt: ausweis.keller_decke_gedaemmt ? true : false,
|
||||||
|
// keller_wand_gedaemmt: ausweis.keller_wand_gedaemmt ? true : false,
|
||||||
|
// niedertemperatur_kessel: ausweis.niedertemperatur_kessel ? true : false,
|
||||||
|
// oberste_geschossdecke_gedaemmt: ausweis.oberste_geschossdecke_gedaemmt ? true : false,
|
||||||
|
// oberste_geschossdecke_min_12cm_gedaemmt: ausweis.oberste_geschossdecke_min_12cm_gedaemmt ? true : false,
|
||||||
|
// raum_temperatur_regler: ausweis.raum_temperatur_regler ? true : false,
|
||||||
|
// rolllaeden_kaesten_gedaemmt: ausweis.rolllaeden_kaesten_gedaemmt ? true : false,
|
||||||
|
// solarsystem_warmwasser: ausweis.solarsystem_warmwasser ? true : false,
|
||||||
|
// standard_kessel: ausweis.standard_kessel ? true : false,
|
||||||
|
// waermepumpe: ausweis.waermepumpe ? true : false,
|
||||||
|
// warmwasser_rohre_gedaemmt: ausweis.warmwasser_rohre_gedaemmt ? true : false,
|
||||||
|
// zentralheizung: ausweis.zentralheizung ? true : false,
|
||||||
|
// zirkulation: ausweis.zirkulation ? true : false,
|
||||||
|
// photovoltaik: ausweis.photovoltaik ? true : false,
|
||||||
|
// leerstand: ausweis.leerstand,
|
||||||
|
// prueftext: ausweis["check-texts"],
|
||||||
|
|
||||||
|
// storniert: false,
|
||||||
|
// tueren_dicht: ausweis.tueren_dicht ? true : false,
|
||||||
|
// tueren_undicht: ausweis.tueren_undicht ? true : false,
|
||||||
|
// zurueckgestellt: ausweis.zurueckGestellt ? true : false,
|
||||||
|
// uid: faker.string.uuid(),
|
||||||
|
// ausstellungsdatum: moment(ausweis.bestelldatum).toDate(),
|
||||||
|
// erstellungsdatum: moment(ausweis.erstellungsdatum).toDate(),
|
||||||
|
// objekt: {
|
||||||
|
// connect: {
|
||||||
|
// id: gebaeudeStammdaten.id,
|
||||||
|
// },
|
||||||
|
// },
|
||||||
|
// },
|
||||||
|
// });
|
||||||
|
|
||||||
|
// let startdatum = moment(
|
||||||
|
// `${ausweis.energieverbrauch_zeitraum_jahr}-${ausweis.energieverbrauch_zeitraum_monat}-01`
|
||||||
|
// ).toDate();
|
||||||
|
|
||||||
|
// if (isNaN(startdatum.getTime())) {
|
||||||
|
// startdatum = new Date();
|
||||||
|
// }
|
||||||
|
|
||||||
|
// const verbrauchsausweisWohnen = await prisma.verbrauchsausweisWohnen.create(
|
||||||
|
// {
|
||||||
|
// data: {
|
||||||
|
// aufnahme: {
|
||||||
|
// connect: {
|
||||||
|
// id: gebaeudeAufnahmeAllgemein.id,
|
||||||
|
// },
|
||||||
|
// },
|
||||||
|
// benutzer: {
|
||||||
|
// connect: {
|
||||||
|
// id: benutzer.id,
|
||||||
|
// },
|
||||||
|
// },
|
||||||
|
// verbrauch_1: parseInt(ausweis.energieverbrauch_1_heizquelle_1),
|
||||||
|
// verbrauch_2: parseInt(ausweis.energieverbrauch_2_heizquelle_1),
|
||||||
|
// verbrauch_3: parseInt(ausweis.energieverbrauch_3_heizquelle_1),
|
||||||
|
// verbrauch_4: parseInt(ausweis.energieverbrauch_1_heizquelle_2),
|
||||||
|
// verbrauch_5: parseInt(ausweis.energieverbrauch_2_heizquelle_2),
|
||||||
|
// verbrauch_6: parseInt(ausweis.energieverbrauch_3_heizquelle_2),
|
||||||
|
// einheit_1: ausweis.energietraeger_einheit_heizquelle_1,
|
||||||
|
// einheit_2: ausweis.energietraeger_einheit_heizquelle_2,
|
||||||
|
// warmwasser_enthalten: ausweis.warmwasser_enthalten ? true : false,
|
||||||
|
// uid: faker.string.uuid(),
|
||||||
|
// alternative_heizung: ausweis.alheizung ? true : false,
|
||||||
|
// alternative_kuehlung: ausweis.alkuehlung ? true : false,
|
||||||
|
// alternative_lueftung: ausweis.allueftung ? true : false,
|
||||||
|
// alternative_warmwasser: ausweis.alwarmwasser ? true : false,
|
||||||
|
// anteil_warmwasser_1: ausweis.anteil_warmwasser_1,
|
||||||
|
// anteil_warmwasser_2: ausweis.anteil_warmwasser_2,
|
||||||
|
// ausstellgrund: ausweis.ausstellgrund,
|
||||||
|
// keller_beheizt: ausweis.keller_beheizt ? true : false,
|
||||||
|
// registriernummer: ausweis.regnummer,
|
||||||
|
// // Der Monat im alten System ist 1-basiert, in der neuen Datenbank 0-basiert
|
||||||
|
// // Also müssen wir hier 1 abziehen
|
||||||
|
// startdatum,
|
||||||
|
// warmwasser_anteil_bekannt: ausweis.warmwasser_anteil_bekannt ? true : false,
|
||||||
|
// zusaetzliche_heizquelle: ausweis.zusaetzliche_heizquelle ? true : false,
|
||||||
|
// },
|
||||||
|
// }
|
||||||
|
// );
|
||||||
|
|
||||||
|
// return verbrauchsausweisWohnen;
|
||||||
|
// }
|
||||||
|
|
||||||
|
// const ausweise = (await importVerbrauchsausweisWohnenAltesSystem(10)) as { data: any[], result_count: number };
|
||||||
|
|
||||||
|
// for (const ausweis of ausweise.data) {
|
||||||
|
// await verbrauchsausweisWohnenImportTranslate(ausweis);
|
||||||
|
// }
|
||||||
92
public/effizienz-icon.svg
Normal file
@@ -0,0 +1,92 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
width="106.48949mm"
|
||||||
|
height="127.93927mm"
|
||||||
|
viewBox="0 0 106.48949 127.93927"
|
||||||
|
version="1.1"
|
||||||
|
id="svg1"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg">
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="namedview1"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#000000"
|
||||||
|
borderopacity="0.25"
|
||||||
|
inkscape:showpageshadow="2"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pagecheckerboard="0"
|
||||||
|
inkscape:deskcolor="#d1d1d1"
|
||||||
|
inkscape:document-units="mm" />
|
||||||
|
<defs
|
||||||
|
id="defs1" />
|
||||||
|
<g
|
||||||
|
inkscape:label="Ebene 1"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer1"
|
||||||
|
transform="translate(-51.858335,-84.402082)">
|
||||||
|
<g
|
||||||
|
id="g9"
|
||||||
|
transform="matrix(0.26458333,0,0,0.26458333,51.858333,68.995396)">
|
||||||
|
<path
|
||||||
|
id="path3610"
|
||||||
|
d="m 0.02,129.3 v 59.43 h 250.93 l 21.58,-29.71 -21.65,-29.71 H 0.02 Z"
|
||||||
|
fill="#16a550" />
|
||||||
|
<path
|
||||||
|
id="path3612"
|
||||||
|
d="M 276.66,199.86 0.29,200.29 0,259.48 h 276.66 l 22.23,-29.42 -22.23,-30.21 v 0 z"
|
||||||
|
fill="#54cc4e" />
|
||||||
|
<path
|
||||||
|
id="path3614"
|
||||||
|
d="M 301.97,269.43 0,269.82 l 0.03,59.51 302.02,0.55 22.36,-30.23 -22.44,-30.23 v 0 z"
|
||||||
|
fill="#ffbc00" />
|
||||||
|
<path
|
||||||
|
id="path3616"
|
||||||
|
d="m 0,341.06 v 59.63 h 328.48 l 22.29,-29.81 -22.48,-29.81 H 0 Z"
|
||||||
|
fill="#ff5e0d" />
|
||||||
|
<path
|
||||||
|
id="path3618"
|
||||||
|
d="M 353.44,411.87 0.01,412.2 v 59.29 h 354.12 l 22.8,-29.81 z"
|
||||||
|
fill="#ff321d" />
|
||||||
|
<path
|
||||||
|
id="path3620"
|
||||||
|
d="m 0.02,482.15 v 59.63 l 379.93,-0.07 22.53,-29.76 -23.08,-29.76 z"
|
||||||
|
fill="#dd2238" />
|
||||||
|
<path
|
||||||
|
id="path3295"
|
||||||
|
d="m 0.02,58.23 v 61 H 224 l 22.32,-30.5 -22.39,-30.5 z"
|
||||||
|
fill="#128440" />
|
||||||
|
<path
|
||||||
|
d="M 45.88,103.36 43.77,96.42 H 33.15 l -2.11,6.94 H 24.38 L 34.67,74.1 h 7.55 l 10.32,29.26 z M 42.29,91.24 c -1.95,-6.29 -3.05,-9.84 -3.3,-10.66 -0.25,-0.82 -0.42,-1.47 -0.53,-1.95 -0.44,1.7 -1.69,5.91 -3.77,12.62 h 7.59 z"
|
||||||
|
fill="#ffffff"
|
||||||
|
id="path2" />
|
||||||
|
<path
|
||||||
|
d="m 24.51,144.44 h 9.07 c 4.13,0 7.13,0.59 9,1.76 1.87,1.18 2.8,3.05 2.8,5.61 0,1.74 -0.41,3.17 -1.23,4.29 -0.82,1.12 -1.9,1.79 -3.26,2.01 v 0.2 c 1.85,0.41 3.18,1.18 4,2.31 0.82,1.13 1.23,2.63 1.23,4.5 0,2.66 -0.96,4.73 -2.88,6.22 -1.92,1.49 -4.53,2.23 -7.82,2.23 h -10.9 v -29.14 z m 6.18,11.54 h 3.59 c 1.67,0 2.89,-0.26 3.64,-0.78 0.75,-0.52 1.13,-1.38 1.13,-2.57 0,-1.12 -0.41,-1.92 -1.23,-2.4 -0.82,-0.48 -2.11,-0.73 -3.88,-0.73 h -3.25 z m 0,4.9 v 7.59 h 4.03 c 1.7,0 2.96,-0.33 3.77,-0.98 0.81,-0.65 1.22,-1.65 1.22,-2.99 0,-2.42 -1.73,-3.63 -5.18,-3.63 H 30.7 Z"
|
||||||
|
fill="#ffffff"
|
||||||
|
id="path3" />
|
||||||
|
<path
|
||||||
|
d="m 37.77,219.84 c -2.33,0 -4.13,0.87 -5.4,2.62 -1.27,1.75 -1.91,4.18 -1.91,7.31 0,6.5 2.44,9.75 7.32,9.75 2.05,0 4.52,-0.51 7.43,-1.53 v 5.18 c -2.39,1 -5.06,1.49 -8.01,1.49 -4.24,0 -7.48,-1.29 -9.73,-3.86 -2.25,-2.57 -3.37,-6.26 -3.37,-11.07 0,-3.03 0.55,-5.68 1.65,-7.96 1.1,-2.28 2.69,-4.03 4.75,-5.24 2.07,-1.22 4.49,-1.82 7.27,-1.82 2.78,0 5.67,0.68 8.53,2.05 l -1.99,5.02 c -1.09,-0.52 -2.19,-0.97 -3.29,-1.36 -1.1,-0.39 -2.19,-0.58 -3.25,-0.58 z"
|
||||||
|
fill="#ffffff"
|
||||||
|
id="path5" />
|
||||||
|
<path
|
||||||
|
d="m 48.27,299.37 c 0,4.8 -1.37,8.47 -4.1,11.02 -2.73,2.55 -6.67,3.83 -11.83,3.83 h -8.25 v -29.14 h 9.15 c 4.76,0 8.45,1.26 11.08,3.77 2.63,2.51 3.95,6.02 3.95,10.52 z m -6.42,0.16 c 0,-6.26 -2.76,-9.39 -8.29,-9.39 h -3.29 v 18.98 h 2.65 c 5.95,0 8.93,-3.2 8.93,-9.59 z"
|
||||||
|
fill="#ffffff"
|
||||||
|
id="path6" />
|
||||||
|
<path
|
||||||
|
d="M 41.26,385.44 H 24.47 V 356.3 h 16.78 v 5.06 h -10.6 v 6.4 h 9.87 v 5.06 h -9.87 v 7.51 h 10.6 v 5.1 z"
|
||||||
|
fill="#ffffff"
|
||||||
|
id="path7" />
|
||||||
|
<path
|
||||||
|
d="m 30.59,456.25 h -6.08 v -29.14 h 16.7 v 5.06 H 30.59 v 7.51 h 9.89 v 5.04 h -9.89 v 11.52 z"
|
||||||
|
fill="#ffffff"
|
||||||
|
id="path8" />
|
||||||
|
<path
|
||||||
|
d="m 37.03,510.18 h 11.56 v 15.11 c -1.87,0.61 -3.64,1.04 -5.29,1.29 -1.65,0.25 -3.35,0.37 -5.07,0.37 -4.4,0 -7.76,-1.29 -10.08,-3.88 -2.32,-2.58 -3.48,-6.3 -3.48,-11.13 0,-4.83 1.35,-8.37 4.04,-11 2.69,-2.63 6.42,-3.95 11.19,-3.95 2.99,0 5.87,0.6 8.65,1.79 l -2.05,4.94 c -2.13,-1.06 -4.34,-1.59 -6.64,-1.59 -2.67,0 -4.81,0.9 -6.42,2.69 -1.61,1.79 -2.41,4.21 -2.41,7.24 0,3.03 0.65,5.58 1.94,7.25 1.29,1.67 3.18,2.5 5.65,2.5 1.29,0 2.6,-0.13 3.93,-0.4 v -6.08 h -5.52 v -5.14 z"
|
||||||
|
fill="#ffffff"
|
||||||
|
id="path9" />
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 4.6 KiB |
75
public/fonts/Content.svg
Normal file
@@ -0,0 +1,75 @@
|
|||||||
|
|
||||||
|
<?xml version="1.0" standalone="no"?>
|
||||||
|
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<metadata>Copyright (C) 2017 by original authors @ fontello.com</metadata>
|
||||||
|
<defs>
|
||||||
|
<font id="t3_content" horiz-adv-x="1000" >
|
||||||
|
<font-face font-family="t3_content" font-weight="400" font-stretch="normal" units-per-em="1000" ascent="850" descent="-150" />
|
||||||
|
<missing-glyph horiz-adv-x="1000" />
|
||||||
|
<glyph glyph-name="search" unicode="" d="M643 386q0 103-73 176t-177 74-177-74-73-176 73-177 177-73 177 73 73 177z m286-465q0-29-22-50t-50-21q-30 0-50 21l-191 191q-100-69-223-69-80 0-153 31t-125 84-84 125-31 153 31 152 84 126 125 84 153 31 153-31 125-84 84-126 31-152q0-123-69-223l191-191q21-21 21-51z" horiz-adv-x="928.6" />
|
||||||
|
|
||||||
|
<glyph glyph-name="experte" unicode="" d="M571 457v-232q0-22-15-38t-38-16-38 16-16 38v196h-35v-509q0-25-19-44t-44-18-44 18-18 44v259h-36v-259q0-25-19-44t-44-18-44 18-18 44v509h-36v-196q0-22-15-38t-38-16-38 16-16 38v232q0 45 31 76t76 31h357q45 0 76-31t31-76z m-160 250q0-52-37-88t-88-37-89 37-36 88 36 89 89 36 88-36 37-89z" horiz-adv-x="571.4" />
|
||||||
|
|
||||||
|
<glyph glyph-name="linktipp" unicode="" d="M813 171q0 23-16 38l-116 116q-16 16-38 16-24 0-40-18 1-1 10-10t12-12 9-11 7-14 2-15q0-23-16-38t-38-16q-8 0-15 2t-14 7-11 9-12 12-10 10q-19-17-19-40 0-23 16-38l115-116q15-15 38-15 22 0 38 15l82 81q16 16 16 37z m-393 394q0 22-15 38l-115 115q-16 16-38 16-22 0-38-15l-82-82q-16-15-16-37 0-22 16-38l116-116q15-15 38-15 23 0 40 17-2 2-11 11t-12 12-8 10-7 14-2 16q0 22 15 38t38 15q9 0 16-2t14-7 11-8 12-12 10-11q18 17 18 41z m500-394q0-66-48-113l-82-81q-46-47-113-47-68 0-114 48l-115 115q-46 47-46 114 0 68 49 116l-49 49q-48-49-116-49-67 0-114 47l-116 116q-47 47-47 114t47 113l82 82q47 46 114 46 67 0 114-47l115-116q46-46 46-113 0-69-49-117l49-49q48 49 116 49 67 0 114-47l116-116q47-47 47-114z" horiz-adv-x="928.6" />
|
||||||
|
|
||||||
|
<glyph glyph-name="zitat" unicode="" d="M429 671v-392q0-58-23-111t-61-91-91-61-111-23h-36q-14 0-25 11t-11 25v71q0 15 11 25t25 11h36q59 0 101 42t42 101v17q0 23-16 38t-38 16h-125q-44 0-76 31t-31 76v214q0 45 31 76t76 32h214q45 0 76-32t32-76z m500 0v-392q0-58-23-111t-61-91-91-61-111-23h-36q-14 0-25 11t-11 25v71q0 15 11 25t25 11h36q59 0 101 42t42 101v17q0 23-16 38t-38 16h-125q-44 0-76 31t-31 76v214q0 45 31 76t76 32h214q45 0 76-32t32-76z" horiz-adv-x="928.6" />
|
||||||
|
|
||||||
|
<glyph glyph-name="medien" unicode="" d="M994 331q0 19-30 19h-607q-22 0-48-12t-39-29l-164-203q-11-13-11-22 0-20 30-20h607q23 0 48 13t40 29l164 203q10 12 10 22z m-637 90h429v90q0 22-16 38t-38 15h-321q-23 0-38 16t-16 38v36q0 22-15 38t-38 15h-179q-22 0-38-15t-16-38v-476l143 175q25 30 65 49t78 19z m708-90q0-35-25-67l-165-203q-24-30-65-49t-78-19h-607q-51 0-88 37t-37 88v536q0 51 37 88t88 37h179q51 0 88-37t37-88v-18h303q52 0 88-37t37-88v-90h107q30 0 56-13t37-40q8-17 8-37z" horiz-adv-x="1071.4" />
|
||||||
|
|
||||||
|
<glyph glyph-name="newsletter" unicode="" d="M984 844q19-13 15-36l-142-857q-3-16-18-25-8-5-18-5-6 0-13 3l-294 120-166-182q-10-12-27-12-7 0-12 2-11 4-17 13t-6 21v252l-264 108q-20 8-22 30-2 22 18 33l928 536q20 12 38-1z m-190-837l123 739-800-462 187-76 482 356-267-444z" horiz-adv-x="1000" />
|
||||||
|
|
||||||
|
<glyph glyph-name="anleitung" unicode="" d="M213-54q0-45-31-70t-75-26q-60 0-96 37l31 49q28-25 60-25 16 0 28 8t12 24q0 35-59 31l-14 31q4 6 18 24t24 31 20 21v1q-9 0-27-1t-27 0v-30h-59v85h186v-49l-53-65q28-6 45-27t17-49z m1 350v-89h-202q-4 20-4 30 0 29 14 52t31 38 37 27 31 24 14 25q0 14-9 22t-22 7q-25 0-45-32l-47 33q13 28 40 44t59 16q40 0 68-23t28-63q0-28-19-51t-42-36-42-28-20-30h71v34h59z m786-178v-107q0-7-5-13t-13-5h-678q-8 0-13 5t-5 13v107q0 8 5 13t13 5h678q7 0 13-6t5-12z m-786 502v-56h-187v56h60q0 22 0 67t1 68v7h-1q-5-10-28-30l-40 42 76 71h59v-225h60z m786-216v-108q0-7-5-12t-13-5h-678q-8 0-13 5t-5 12v108q0 7 5 12t13 5h678q7 0 13-5t5-12z m0 285v-107q0-7-5-12t-13-6h-678q-8 0-13 6t-5 12v107q0 8 5 13t13 5h678q7 0 13-5t5-13z" horiz-adv-x="1000" />
|
||||||
|
|
||||||
|
<glyph glyph-name="rechner" unicode="" d="M214-7q0 29-21 50t-50 21-51-21-21-50 21-51 51-21 50 21 21 51z m215 0q0 29-21 50t-51 21-50-21-21-50 21-51 50-21 51 21 21 51z m-215 214q0 30-21 51t-50 21-51-21-21-51 21-50 51-21 50 21 21 50z m429-214q0 29-21 50t-51 21-50-21-21-50 21-51 50-21 51 21 21 51z m-214 214q0 30-21 51t-51 21-50-21-21-51 21-50 50-21 51 21 21 50z m-215 214q0 30-21 51t-50 21-51-21-21-51 21-50 51-21 50 21 21 50z m429-214q0 30-21 51t-51 21-50-21-21-51 21-50 50-21 51 21 21 50z m-214 214q0 30-21 51t-51 21-50-21-21-51 21-50 50-21 51 21 21 50z m428-428v214q0 29-21 50t-50 22-50-22-22-50v-214q0-29 22-50t50-22 50 22 21 50z m-214 428q0 30-21 51t-51 21-50-21-21-51 21-50 50-21 51 21 21 50z m214 179v143q0 14-10 25t-26 11h-714q-14 0-25-11t-11-25v-143q0-14 11-25t25-11h714q15 0 26 11t10 25z m0-179q0 30-21 51t-50 21-51-21-21-51 21-50 51-21 50 21 21 50z m72 358v-858q0-29-22-50t-50-21h-786q-29 0-50 21t-21 50v858q0 29 21 50t50 21h786q29 0 50-21t22-50z" horiz-adv-x="1000" />
|
||||||
|
|
||||||
|
<glyph glyph-name="teilen" unicode="" d="M650 200q62 0 106-43t44-107q0-62-44-106t-106-44-106 44-44 106q0 6 1 14t1 12l-260 156q-42-32-92-32-62 0-106 44t-44 106 44 106 106 44q54 0 92-30l260 156q0 4-1 12t-1 12q0 62 44 106t106 44 106-43 44-107q0-62-44-106t-106-44q-52 0-90 32l-262-156q2-8 2-26 0-16-2-24l262-156q36 30 90 30z" horiz-adv-x="800" />
|
||||||
|
|
||||||
|
<glyph glyph-name="circle" unicode="" d="M857 350q0-117-57-215t-156-156-215-58-216 58-155 156-58 215 58 215 155 156 216 58 215-58 156-156 57-215z" horiz-adv-x="857.1" />
|
||||||
|
|
||||||
|
<glyph glyph-name="plus" unicode="" d="M786 439v-107q0-22-16-38t-38-15h-232v-233q0-22-16-37t-38-16h-107q-22 0-38 16t-15 37v233h-232q-23 0-38 15t-16 38v107q0 23 16 38t38 16h232v232q0 22 15 38t38 16h107q23 0 38-16t16-38v-232h232q23 0 38-16t16-38z" horiz-adv-x="785.7" />
|
||||||
|
|
||||||
|
<glyph glyph-name="minus" unicode="" d="M786 439v-107q0-22-16-38t-38-15h-678q-23 0-38 15t-16 38v107q0 23 16 38t38 16h678q23 0 38-16t16-38z" horiz-adv-x="785.7" />
|
||||||
|
|
||||||
|
<glyph glyph-name="rss" unicode="" d="M214 100q0-45-31-76t-76-31-76 31-31 76 31 76 76 31 76-31 31-76z m286-69q1-15-9-26-10-12-27-12h-75q-14 0-24 9t-11 23q-12 128-103 219t-219 103q-14 1-23 11t-9 24v75q0 16 12 26 9 10 24 10h3q89-7 170-45t145-101q63-63 101-145t45-171z m286-1q1-15-10-26-10-11-26-11h-80q-14 0-25 10t-10 23q-7 120-57 228t-129 188-188 129-227 57q-14 1-24 11t-10 24v80q0 16 11 26 10 10 25 10h1q147-8 280-67t238-164q104-104 164-238t67-280z" horiz-adv-x="785.7" />
|
||||||
|
|
||||||
|
<glyph glyph-name="pin" unicode="" d="M268 368v250q0 8-5 13t-13 5-13-5-5-13v-250q0-8 5-13t13-5 13 5 5 13z m375-197q0-14-11-25t-25-10h-239l-29-270q-1-7-6-11t-11-5h-1q-15 0-17 15l-43 271h-225q-15 0-25 10t-11 25q0 69 44 124t99 55v286q-29 0-50 21t-22 50 22 50 50 22h357q29 0 50-22t21-50-21-50-50-21v-286q55 0 99-55t44-124z" horiz-adv-x="642.9" />
|
||||||
|
|
||||||
|
<glyph glyph-name="spin1" unicode="" d="M496 850c-176 0-331-90-421-226-18-27-33-55-46-85-12-29-21-60-28-92 0 0 0-1 0-1l0 0 0 0c0-1 0-2 0-2 0-7 5-12 11-12l101 0c5 0 10 4 11 9 29 113 109 206 214 253 20 10 41 17 63 23 31 7 62 11 95 11l0 0 0 0 0 0c25 0 50-2 74-7 5-1 10-2 14-3 6-1 10-3 14-4l0 0c5-1 11 1 13 6l51 87c0 0 1 1 1 2 2 6-1 13-7 15-22 7-43 13-65 17-5 1-9 1-13 2-27 5-54 7-82 7l0 0 0 0z m327-114c-5 0-9-2-11-6l-50-87c-3-4-2-10 2-14 29-29 54-63 73-101 4-7 7-14 11-22 19-46 30-97 30-151l0 0 0 0c0-77-22-149-62-209-7-11-15-23-24-33-9-11-18-21-28-31l0 0 0 0 0 0c-4-4-5-10-2-14l50-87c0-1 1-2 2-3 4-5 11-5 16-1 58 52 104 117 134 190 6 15 11 29 15 44 14 46 21 94 21 144 0 108-34 209-92 291-11 16-23 31-37 46-13 14-26 28-41 41l0 0c-1 1-1 1-2 1-2 1-4 2-5 2z m-811-468l0 0c-1 0-2 0-3 0-6-1-10-8-9-14 34-166 149-302 302-366 30-12 61-21 93-28 32-6 66-10 100-10l0 0 0 0c40 0 79 5 117 14 7 1 14 3 22 5 6 2 13 5 20 7 1 0 2 1 3 1 6 3 8 10 4 16l-50 87c-3 5-8 7-13 6-14-4-28-7-42-9-3-1-6-1-8-2-18-2-35-3-53-3l0 0 0 0c-128 0-242 63-311 160-1 0-1 0-1 0-13 19-25 40-35 61-10 21-18 43-24 65-1 6-6 10-11 10l-101 0z" horiz-adv-x="1000" />
|
||||||
|
|
||||||
|
<glyph glyph-name="zoom" unicode="" d="M0 403q0 185 131 316t316 131 318-131 131-316q0-141-82-256l186-186-111-111-186 186q-115-82-256-82-185 0-316 131t-131 318z m127 0q0-133 94-227t226-93 227 93 94 227-94 225-227 93-226-93-94-225z m129-65l0 127 129 0 0 129 127 0 0-129 129 0 0-127-129 0 0-129-127 0 0 129-129 0z" horiz-adv-x="1000" />
|
||||||
|
|
||||||
|
<glyph glyph-name="bookmark" unicode="" d="M643 707h-572v-693l237 227 49 47 50-47 236-227v693z m7 72q12 0 24-5 19-8 29-23t11-35v-719q0-19-11-35t-29-23q-10-4-24-4-27 0-47 18l-246 236-246-236q-20-19-46-19-13 0-25 5-18 7-29 23t-11 35v719q0 19 11 35t29 23q12 5 25 5h585z" horiz-adv-x="714.3" />
|
||||||
|
|
||||||
|
<glyph glyph-name="fazit" unicode="" d="M464 797l447-446-447-448-157 160 175 176-464 0 0 224 464 0-175 176z" horiz-adv-x="928" />
|
||||||
|
|
||||||
|
<glyph glyph-name="close" unicode="" d="M724 112q0-22-15-38l-76-76q-16-15-38-15t-38 15l-164 165-164-165q-16-15-38-15t-38 15l-76 76q-16 16-16 38t16 38l164 164-164 164q-16 16-16 38t16 38l76 76q16 16 38 16t38-16l164-164 164 164q16 16 38 16t38-16l76-76q15-15 15-38t-15-38l-164-164 164-164q15-15 15-38z" horiz-adv-x="785.7" />
|
||||||
|
|
||||||
|
<glyph glyph-name="check" unicode="" d="M933 534q0-22-16-38l-404-404-76-76q-16-15-38-15t-38 15l-76 76-202 202q-15 16-15 38t15 38l76 76q16 16 38 16t38-16l164-165 366 367q16 16 38 16t38-16l76-76q16-15 16-38z" horiz-adv-x="1000" />
|
||||||
|
|
||||||
|
<glyph glyph-name="sparen" unicode="" d="M545 121l19-89q2-7-1-13t-10-8l-3 0q-2-1-6-2t-9-3-12-3-14-3-16-2-19-3-21-2-21 0q-131 0-228 73t-133 196h-53q-7 0-13 5t-5 13v63q0 7 5 12t13 6h37q-1 31 0 58h-37q-8 0-13 5t-5 13v64q0 8 5 13t13 5h55q37 117 135 188t224 72q57 0 108-13 6-2 11-9 4-6 2-13l-24-89q-2-7-8-11t-13-1l-2 1q-3 0-7 1l-10 2t-12 2-15 2-16 1-16 1q-71 0-126-36t-84-98h261q9 0 14-7 6-7 4-15l-13-63q-3-15-18-15h-273q-1-20 0-58h257q8 0 13-7 5-7 4-15l-14-63q-1-6-6-10t-11-4h-216q27-65 84-104t127-38q10 0 20 1t19 2 16 2 14 3 10 3l7 1 3 2q7 2 14-2 7-3 9-11z" horiz-adv-x="571.4" />
|
||||||
|
|
||||||
|
<glyph glyph-name="info-circled" unicode="" d="M571 82v89q0 8-5 13t-12 5h-54v286q0 8-5 13t-13 5h-178q-8 0-13-5t-5-13v-89q0-8 5-13t13-5h53v-179h-53q-8 0-13-5t-5-13v-89q0-8 5-13t13-5h250q7 0 12 5t5 13z m-71 500v89q0 8-5 13t-13 5h-107q-8 0-13-5t-5-13v-89q0-8 5-13t13-5h107q8 0 13 5t5 13z m357-232q0-117-57-215t-156-156-215-58-216 58-155 156-58 215 58 215 155 156 216 58 215-58 156-156 57-215z" horiz-adv-x="857.1" />
|
||||||
|
|
||||||
|
<glyph glyph-name="attention" unicode="" d="M571 83v106q0 8-5 13t-12 5h-108q-7 0-12-5t-5-13v-106q0-8 5-13t12-6h108q7 0 12 6t5 13z m-1 208l10 257q0 6-5 10-7 6-14 6h-122q-6 0-14-6-5-4-5-12l9-255q0-5 6-9t13-3h103q8 0 14 3t5 9z m-7 522l428-786q20-35-1-70-9-17-26-26t-35-10h-858q-18 0-35 10t-26 26q-21 35-1 70l429 786q9 17 26 27t36 10 36-10 27-27z" horiz-adv-x="1000" />
|
||||||
|
|
||||||
|
<glyph glyph-name="youtube-play" unicode="" d="M397 221l270 139-270 141v-280z m103 481q94 0 181-3t128-5l41-2q0 0 9-1t13-2 13-2 16-5 16-7 17-11 16-15q4-3 9-10t16-33 15-56q4-36 7-76t3-64v-98q1-81-10-162-4-30-14-55t-18-35l-8-9q-7-8-16-15t-17-10-16-7-16-5-13-2-13-2-9-1q-140-11-350-11-115 2-201 4t-111 4l-28 3-20 2q-20 3-30 5t-29 12-31 23q-4 3-9 10t-16 33-15 56q-4 36-7 76t-3 64v98q-1 81 10 162 4 31 14 55t18 35l8 9q8 9 16 15t17 11 16 7 16 5 13 2 13 2 9 1q140 10 350 10z" horiz-adv-x="1000" />
|
||||||
|
|
||||||
|
<glyph glyph-name="download" unicode="" d="M714 100q0 15-10 25t-25 11-25-11-11-25 11-25 25-11 25 11 10 25z m143 0q0 15-10 25t-26 11-25-11-10-25 10-25 25-11 26 11 10 25z m72 125v-179q0-22-16-37t-38-16h-821q-23 0-38 16t-16 37v179q0 22 16 38t38 16h259l75-76q33-32 76-32t76 32l76 76h259q22 0 38-16t16-38z m-182 318q10-23-8-39l-250-250q-10-11-25-11t-25 11l-250 250q-17 16-8 39 10 21 33 21h143v250q0 15 11 25t25 11h143q14 0 25-11t10-25v-250h143q24 0 33-21z" horiz-adv-x="928.6" />
|
||||||
|
|
||||||
|
<glyph glyph-name="praxistipp" unicode="" d="M411 529q0-8-6-13t-12-5-13 5-5 13q0 25-30 39t-59 14q-7 0-13 5t-5 13 5 13 13 5q28 0 55-9t49-30 21-50z m89 0q0 40-19 74t-50 57-69 35-76 12-76-12-69-35-50-57-20-74q0-57 38-101 6-6 17-18t17-19q72-85 79-166h127q8 81 79 166 6 6 17 19t17 18q38 44 38 101z m71 0q0-87-57-150-25-27-42-48t-33-54-19-60q26-15 26-46 0-20-13-35 13-15 13-36 0-29-25-45 8-13 8-26 0-26-18-40t-43-14q-11-25-34-39t-48-15-49 15-33 39q-26 0-44 14t-17 40q0 13 7 26-25 16-25 45 0 21 14 36-14 15-14 35 0 31 26 46-2 28-19 60t-33 54-41 48q-58 63-58 150 0 55 25 103t65 79 92 49 104 19 104-19 91-49 66-79 24-103z" horiz-adv-x="571.4" />
|
||||||
|
|
||||||
|
<glyph glyph-name="mail" unicode="" d="M929 11v428q-18-20-39-36-149-115-238-189-28-24-46-37t-48-28-57-13h-2q-26 0-57 13t-48 28-46 37q-88 74-238 189-21 16-39 36v-428q0-7 6-13t12-5h822q7 0 12 5t6 13z m0 586v14t-1 7-1 7-3 5-5 4-8 2h-822q-7 0-12-6t-6-12q0-94 83-159 107-84 223-176 4-3 20-17t25-21 25-17 28-16 24-5h2q11 0 24 5t28 16 25 17 25 21 20 17q116 92 224 176 30 24 56 65t26 73z m71 21v-607q0-37-26-63t-63-27h-822q-36 0-63 27t-26 63v607q0 37 26 63t63 26h822q37 0 63-26t26-63z" horiz-adv-x="1000" />
|
||||||
|
|
||||||
|
<glyph glyph-name="star" unicode="" d="M929 489q0-12-15-27l-202-197 48-279q0-4 0-12 0-11-6-19t-17-9q-10 0-22 7l-251 132-250-132q-12-7-23-7-11 0-17 9t-6 19q0 4 1 12l48 279-203 197q-14 15-14 27 0 21 31 26l280 40 126 254q11 23 27 23t28-23l125-254 280-40q32-5 32-26z" horiz-adv-x="928.6" />
|
||||||
|
|
||||||
|
<glyph glyph-name="star-empty" unicode="" d="M635 290l170 166-235 34-106 213-105-213-236-34 171-166-41-235 211 111 211-111z m294 199q0-12-15-27l-202-197 48-279q0-4 0-12 0-28-23-28-10 0-22 7l-251 132-250-132q-12-7-23-7-11 0-17 9t-6 19q0 4 1 12l48 279-203 197q-14 15-14 27 0 21 31 26l280 40 126 254q11 23 27 23t28-23l125-254 280-40q32-5 32-26z" horiz-adv-x="928.6" />
|
||||||
|
|
||||||
|
<glyph glyph-name="comment-empty" unicode="" d="M500 636q-114 0-213-39t-157-105-59-142q0-62 40-119t113-98l48-28-15-53q-13-51-39-97 85 36 154 96l24 21 32-3q38-5 72-5 114 0 213 39t157 105 59 142-59 142-157 105-213 39z m500-286q0-97-67-179t-182-130-251-48q-39 0-81 4-110-97-257-135-27-8-63-12h-3q-8 0-15 6t-9 15v1q-2 2 0 6t1 6 2 5l4 5t4 5 4 5q4 5 17 19t20 22 17 22 18 28 15 33 15 42q-88 50-138 123t-51 157q0 97 67 179t182 130 251 48 251-48 182-130 67-179z" horiz-adv-x="1000" />
|
||||||
|
|
||||||
|
<glyph glyph-name="print" unicode="" d="M214-7h500v143h-500v-143z m0 357h500v214h-89q-22 0-38 16t-16 38v89h-357v-357z m643-36q0 15-10 25t-26 11-25-11-10-25 10-25 25-10 26 10 10 25z m72 0v-232q0-7-6-12t-12-6h-125v-89q0-22-16-38t-38-16h-536q-22 0-37 16t-16 38v89h-125q-7 0-13 6t-5 12v232q0 44 32 76t75 31h36v304q0 22 16 38t37 16h375q23 0 50-12t42-26l85-85q15-16 27-43t11-49v-143h35q45 0 76-31t32-76z" horiz-adv-x="928.6" />
|
||||||
|
|
||||||
|
<glyph glyph-name="calendar-empty" unicode="" d="M71-79h786v572h-786v-572z m215 679v161q0 8-5 13t-13 5h-36q-8 0-13-5t-5-13v-161q0-8 5-13t13-5h36q8 0 13 5t5 13z m428 0v161q0 8-5 13t-13 5h-35q-8 0-13-5t-5-13v-161q0-8 5-13t13-5h35q8 0 13 5t5 13z m215 36v-715q0-29-22-50t-50-21h-786q-29 0-50 21t-21 50v715q0 29 21 50t50 21h72v54q0 37 26 63t63 26h36q37 0 63-26t26-63v-54h214v54q0 37 27 63t63 26h35q37 0 64-26t26-63v-54h71q29 0 50-21t22-50z" horiz-adv-x="928.6" />
|
||||||
|
</font>
|
||||||
|
</defs>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 14 KiB |
BIN
public/fonts/Content.woff
Normal file
BIN
public/fonts/Immo-Sans/immoSans-Bold.eot
Normal file
BIN
public/fonts/Immo-Sans/immoSans-Regular.eot
Normal file
BIN
public/fonts/Immo-Sans/immoSans-Regular.woff
Normal file
BIN
public/fonts/Immo-Sans/immoSans-Regular.woff2
Normal file
3559
public/images/dashboard/AusweisHaken.svg
Normal file
|
After Width: | Height: | Size: 2.4 MiB |
3559
public/images/dashboard/AusweisKreuz.svg
Normal file
|
After Width: | Height: | Size: 2.4 MiB |
3646
public/images/dashboard/GEGNachweisHaken.svg
Normal file
|
After Width: | Height: | Size: 3.1 MiB |
3646
public/images/dashboard/GEGNachweisKreuz.svg
Normal file
|
After Width: | Height: | Size: 3.1 MiB |
36850
public/images/dashboard/PlanunterlagenHaken.svg
Normal file
|
After Width: | Height: | Size: 5.2 MiB |
36850
public/images/dashboard/PlanunterlagenKreuz.svg
Normal file
|
After Width: | Height: | Size: 5.2 MiB |
864
public/images/dashboard/SanierungsfahrplanHaken.svg
Normal file
|
After Width: | Height: | Size: 582 KiB |
902
public/images/dashboard/SanierungsfahrplanKreuz.svg
Normal file
|
After Width: | Height: | Size: 583 KiB |
40357
public/images/dashboard/UnterlagenHaken.svg
Normal file
|
After Width: | Height: | Size: 10 MiB |
40357
public/images/dashboard/UnterlagenKreuz.svg
Normal file
|
After Width: | Height: | Size: 10 MiB |
|
Before Width: | Height: | Size: 39 KiB |
|
Before Width: | Height: | Size: 40 KiB |
|
Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 23 KiB |
16
public/images/form-l.svg
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="63.5mm" height="73.73mm" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 180 209">
|
||||||
|
<defs>
|
||||||
|
<style>
|
||||||
|
.cls-1 {
|
||||||
|
fill: #fff;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</defs>
|
||||||
|
<g id="Ebene_5" data-name="Ebene 5">
|
||||||
|
<rect class="cls-1" x="5.5" width="169" height="209"/>
|
||||||
|
</g>
|
||||||
|
<g id="Ebene_3" data-name="Ebene 3">
|
||||||
|
<image width="180" height="209" transform="translate(0 0)" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAALQAAADRCAYAAABl9JjbAAABhWlDQ1BJQ0MgcHJvZmlsZQAAKJF9kTtIw1AUhv+mFh9UFO0g4pChOlkQFXGUKhbBQmkrtOpgctMXNGlIUlwcBdeCg4/FqoOLs64OroIg+ABxcnRSdJESz00KLWK8cLgf/73/z7nnAkK9zFSzYwJQNctIxqJiJrsqdr6iGwH0Uw1IzNTjqcU0PNfXPXx8v4vwLO97f65eJWcywCcSzzHdsIg3iGc2LZ3zPnGIFSWF+Jx43KAGiR+5Lrv8xrngsMAzQ0Y6OU8cIhYLbSy3MSsaKvE0cVhRNcoXMi4rnLc4q+Uqa/bJXxjMaSsprlONIIYlxJGACBlVlFCGhQjtGikmknQe9fAPO/4EuWRylcDIsYAKVEiOH/wPfs/WzE9NuknBKBB4se2PUaBzF2jUbPv72LYbJ4D/GbjSWv5KHZj9JL3W0sJHQN82cHHd0uQ94HIHGHrSJUNyJD+VkM8D72f0TVlg8BboWXPn1jzH6QOQplkt3wAHh8BYgbLXPd7d1T63f+805/cDDsFyfxOiTQ4AAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQfkCQUQITdTy3LrAAAALHRFWHRDb21tZW50AEZpbGUgd3JpdHRlbiBieSBBZG9iZSBQaG90b3Nob3A/IDQuMFGAuAkAAAfGSURBVHja7d1LT1PrHsfx37NsxEKhBUJpkRAFvAQSDVHjjMF+A74DBw6cwMvZvgNnJmfgnKFBjCQFw7VIoCCUcpHa0guW9ZzB2aggbo9KaVf7/SQm6sSy1td/n7XaPpUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOVlOAR1w3LeUYsxn/VnwLMx/29EG0PUqJ2ga5XD+QZBAwQNliJAGeKt5QtC7kfWZ9ScdwAAS47a8vTpU/vx40cdHh5ezLrCWhljjtfKsvbrSuPSpUuy1sp13coFZ4wCgYCeP39uCNqDfD6fffDggfr6+k7EVYmQtra2FAgE1NTUVLHHcnh4qBcvXtCeVwUCAfvy5cu/quGxTE1N2b29vYrf4YhEItwy9HLQ1fJYXr9+XRWPJRwOl+1x8MIKKrL8IWiAoFGNynlBStAefnr17BR1HIJmGnFMCBqsoQGCBggaIGiAoEHQAEEDBA0QNEDQIGiAoAGCBggaIGgQNM5ij3/9s/kh7+SvAj4OwR8x0olPYFixgQoTusYCP711LUeFoD1c9KmA+UwhQXt7YX0qYCY0QXtyEv9IJXf6JGj89iT+4QF2OMQE7eHOdeouB2togvbSsuP0fWgWzBXGfeg/6Pl4+jKFmdAAQQMEDYIGCBogaICgAYIGQQMEDRA0QNAAQYOgAYIGCBogaICgQdAAQQMEDRA0QNAgaPwa9uy4WOe60cyTJ0/s7OysSqXSl80MXdeV4zhyXbcuduI0xshaK8dxVCgUND09TWVeDXpsbEz379/X8PDwiclkra3LbWWNMbpy5YoGBgZsKBRSc3Ozrl27xnZhXgna5/Pp0aNHevz4MSftG6lUym5vb6tUKml9fd12d3dzfLwQtDFG+Xyeo3pKOBw2kpROp+3MzIxyudxGY2NjF0eGi0JPCwaDZmho6NnU1FR0Z2eHq0WC9j6/3z86MDCgVCql8fFxu7i4SNgE7f1JHY1G1dPTo4aGBs3NzRF1Na6h8f9rbW01knRwcGBXV1e1sbFhrbVqaWlRc3MzF40E7U1NTU1GkiYmJmyxWFQ0GuWgsOTwvocPH5rh4WHT0NCgWCzGEoSga0NPT4/p7OzUxMSEzefzf3NECNrzotGo6e7u1urq6kgsFrPJZJKJTdDedvXqVeM4jkqlkrLZrHZ3d4mai0Jvu3nzppGkDx8+2LW1NWUyGWuMUSAQ4C4IQXt7Wu/v79t3796pVCppc3PTRqPRX466Ht4gdq5B897f8gmFQiaXy20YY/4Tj8dHlpeXbW9vr+H8lHENzfdal1djY2OX3+8fjUQicl1XCwsLdmlpiSlSrqBd1+WIXoBwOGxaW1uVy+WUy+WUSCS4xVeOJUc9vom/Utrb278c7KmpKStpRNIoE5o1tOfdvXvXpNNpxeNxyxqaNXRNuH79uhzH0atXr+zk5KQtFAp/1eP5+Z0lh5VkWENXl0AgYNLptHUcR47jKJFIjGWz2RP3rOthQvt+M+Yzo2YNXVnBYPDLCXj//r3d2tpSIpGwly9fViQSMfVwfs71OYigq0dfX5+RpPX1dSWTSe3v79t6eAb1/Wqw//a0Va/bFVR71Nls1sZiMRWLRYI+2as9rvXMZYfjOFpZWdH8/LzN5XLfxU/w5Xf6GDuOo4WFBRWLRTGhv5/Q9mcTuqWlRbdv36baKrW0tPR3Pp8f8fv96u/vr7nz5Pzi/37zz1Q2Pwq6vb2daqpYf3//6OHhoQqFglKplK3XoM+6q2GMMd8dEG7dVb979+6Zvr6+Z8vLy0qn02fes66LJcdZExne5Pf7RyWNTk5O2kwmMzY7O6uBgQFTL0GbX/x7eMStW7d0dHSkbDar6elpe+fOHU+fU16rrnOBQMAEg0ETCoUUDAY1Pz/v6addPrECSV/3B5mZmbFra2vHH/VSKBTy1MRmQuOEwcFBs7Ozo+XlZW1sbMhrF4xMaHxnaGjISNLm5qadm5sb89K1EkHjh6LRqNne3rbj4+P28+fP6u3tVbVv1s6SA/+qo6PDdHZ2KhKJKJ/Pq9o3vWFC46eOP12+sbFhd3d3lUwmrTFGnZ2dhqDhWV1dXWZ3d9cuLS3JGKNUKmWPv26DoOFJ33449+3bt3ZlZcVW0zd7sYbGb7tx44aKxaKqaW8QgsZvCwaDpqOjQ9ZaxeNxG4/HK74/CEHjj7S1tZlwOKx8Pq9cLqdkMjmSzWYrNrFZQ+NcJvXx72dnZ20qlVImk7GO43x5SZ0JDU86fgvqmzdvFIvFLvylcyY0zl04HFZzc7OstVpYWBjLZDIX9s1eBI1z9+3mNuvr63ZtbU17e3u2ra2t7FGf+5LD5+P/CL7q7u42oVDo2adPn7S1tWUXFxfLuj/Iudbnuq729/c5izihq6trdHJyciSRSCiXy6lQKJTt3zrXp4DBwUGbSCTk9/vluu6J/SGMMd/9XS36dl+Mf/uZrbVyHKcujokxRkdHR3JdV67r6uDgQKVSqfp/aL4wEgAAXMAaGj9eWnPsUetBc71RBrz0fUFX+UBNT+iz9gXEn+NlvQpE/bON4wEmNFhDs4YGzmlCi7sc5RkeHIKKBc2xBwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH7uv//W7t17DoVCAAAAAElFTkSuQmCC"/>
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 3.8 KiB |
16
public/images/form-r.svg
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="63.5mm" height="73.73mm" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 180 209">
|
||||||
|
<defs>
|
||||||
|
<style>
|
||||||
|
.cls-1 {
|
||||||
|
fill: #fff;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</defs>
|
||||||
|
<g id="Ebene_5" data-name="Ebene 5">
|
||||||
|
<rect class="cls-1" x="5.5" width="169" height="209"/>
|
||||||
|
</g>
|
||||||
|
<g id="Ebene_4" data-name="Ebene 4">
|
||||||
|
<image width="180" height="209" transform="translate(0 0)" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAALQAAADRCAYAAABl9JjbAAABhWlDQ1BJQ0MgcHJvZmlsZQAAKJF9kTtIw1AUhv+mFh9UFO0g4pChOlkQFXGUKhbBQmkrtOpgctMXNGlIUlwcBdeCg4/FqoOLs64OroIg+ABxcnRSdJESz00KLWK8cLgf/73/z7nnAkK9zFSzYwJQNctIxqJiJrsqdr6iGwH0Uw1IzNTjqcU0PNfXPXx8v4vwLO97f65eJWcywCcSzzHdsIg3iGc2LZ3zPnGIFSWF+Jx43KAGiR+5Lrv8xrngsMAzQ0Y6OU8cIhYLbSy3MSsaKvE0cVhRNcoXMi4rnLc4q+Uqa/bJXxjMaSsprlONIIYlxJGACBlVlFCGhQjtGikmknQe9fAPO/4EuWRylcDIsYAKVEiOH/wPfs/WzE9NuknBKBB4se2PUaBzF2jUbPv72LYbJ4D/GbjSWv5KHZj9JL3W0sJHQN82cHHd0uQ94HIHGHrSJUNyJD+VkM8D72f0TVlg8BboWXPn1jzH6QOQplkt3wAHh8BYgbLXPd7d1T63f+805/cDDsFyfxOiTQ4AAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQfkCQUQHxZeZ3nIAAAALHRFWHRDb21tZW50AEZpbGUgd3JpdHRlbiBieSBBZG9iZSBQaG90b3Nob3A/IDQuMFGAuAkAAAJzSURBVHja7d3PbmFhGMDh9xzsLYSbcAdiM0s7vY5ZWomNWLgIO4lr4JasWEqIbzZ0OkabNq0/h+dJGgmtyDk/X18kvggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHhcmUPApc3n818RESmll06n87tQQWdZliIi8jyP/X5/vC5SSs7sM62Uh3P+9tyXSqXY7XbH6wqzmKZ+v69ezhoOhykiLtZHfok7bbVazhxntdvtwj1mqzM3ayR3bHkkgkbQIGgQNAgaQYOgQdAgaBA0ggZBg6BB0CBoBA2CBkGDoEHQCBoEDYIGQYOgETQIGgQNggZBI+iD45YTH9zuqFIY6eTyo9+Bqzdi5MAMbeSg8M7MzsnIwb2NHNk3H8S5v0+j0Si63W6s1+u/Vx72rON5VavVWCwW0ev1vtrep5W/MkqcbJb47rOs0WhEs9lUL/+ZzWZ38R88fXIMMXJw05HjWy8KbXeMZx8U6X1oL/zw7EMj97pCwy0JGkGDoEHQIGgEDYIGQYOgQdAIGgQNggZBg6ARNAgaBA2CBkEjaBA0CBoEDYJG0CBoEDTcZdCTycQ3kHLWdDq9aBuX+DLnVK/Xo1arxXa7/feGlCLPc9/8/wTObRJVLpdjtVrFcrk83a/nx5R/+g7H43FsNpvY7XbHjYZeL8X8PLIsi/1+/xr1sYFSqRSVSiUGg4GDBAA/M0Yetr17+wOFnSHt4chjrdCCvj4frPBQyg7B1VdpMEODGdoMDfDOCu19aAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgcv4AtNGVUtf+RMwAAAAASUVORK5CYII="/>
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 2.0 KiB |
16
public/images/form-t.svg
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="63.5mm" height="73.73mm" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 180 209">
|
||||||
|
<defs>
|
||||||
|
<style>
|
||||||
|
.cls-1 {
|
||||||
|
fill: #fff;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</defs>
|
||||||
|
<g id="Ebene_5" data-name="Ebene 5">
|
||||||
|
<rect class="cls-1" x="5.5" width="169" height="209"/>
|
||||||
|
</g>
|
||||||
|
<g id="Ebene_1" data-name="Ebene 1">
|
||||||
|
<image width="180" height="209" transform="translate(0 0)" xlink:href="data:image/png;base64,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"/>
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 3.8 KiB |
16
public/images/form-u.svg
Normal file
|
After Width: | Height: | Size: 17 KiB |
@@ -1,32 +1,23 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<svg id="Ebene_1" xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 143 163.6">
|
<svg id="Ebene_1" data-name="Ebene 1" xmlns="http://www.w3.org/2000/svg" width="50.66mm" height="57.61mm" viewBox="0 0 143.6 163.3">
|
||||||
<!-- Generator: Adobe Illustrator 29.1.0, SVG Export Plug-In . SVG Version: 2.1.0 Build 142) -->
|
|
||||||
<defs>
|
<defs>
|
||||||
<style>
|
<style>
|
||||||
.st0 {
|
.cls-1 {
|
||||||
display: none;
|
|
||||||
fill: #878787;
|
|
||||||
}
|
|
||||||
|
|
||||||
.st1 {
|
|
||||||
fill: #445096;
|
fill: #445096;
|
||||||
}
|
}
|
||||||
|
|
||||||
.st2 {
|
.cls-2 {
|
||||||
fill: #c6c6c6;
|
fill: #c6c6c6;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
</defs>
|
</defs>
|
||||||
<path class="st0" d="M387,57.9c0,3.8-1,6.9-3.1,9.2-2.1,2.3-4.9,3.4-8.5,3.4h-16c-3.8,0-6.8-1.3-8.8-3.9-1.8-2.2-2.7-5-2.7-8.5V21.2c0-3.6,1-6.6,3-8.9,2-2.3,4.8-3.5,8.3-3.5h16.1c3.7,0,6.6,1.2,8.6,3.5s3,5.4,3,9.2l-10.9,2.8c0-3-1.5-4.5-4.6-4.5h-8.5c-2.7,0-4.1,1.3-4.1,3.9v32.1c0,2.5,1.4,3.7,4.1,3.7h9c2.8,0,4.1-1.5,4.1-4.4l10.9,2.7h.1Z"/>
|
<path class="cls-1" d="M18.1,143.8H3.7V62.5h14.4v81.2h0v.1Z"/>
|
||||||
<g>
|
<path class="cls-1" d="M84.8,127.2c0,4.8-1.3,8.7-3.8,11.7-2.7,3.1-6.4,4.7-11.1,4.7h-36.5v-14.4h3.6v-52.4h-3.6v-14.4h36.5c4.7,0,8.4,1.6,11.1,4.7,2.5,3,3.8,6.9,3.8,11.7v11c0,6-1.8,10.3-5.4,13,3.6,3,5.4,7.4,5.4,13.2v11.2h0ZM70.5,91.2v-9.3c0-3.2-1.7-4.8-5.1-4.8h-13.9v19h14.1c3.3,0,4.9-1.6,4.9-4.8h0v-.1ZM70.5,124.6v-9.2c0-1.4-.5-2.6-1.4-3.5s-2.1-1.4-3.5-1.4h-14.1v19h13.9c3.4,0,5.1-1.6,5.1-4.8h0v-.1Z"/>
|
||||||
<path class="st1" d="M17.6,144.6H3.2V63.3h14.4v81.2h0Z"/>
|
<path class="cls-1" d="M18.1,76.9v-14.4h3.7v14.4h-3.7Z"/>
|
||||||
<path class="st1" d="M84.3,128c0,4.8-1.3,8.7-3.8,11.7-2.7,3.1-6.4,4.7-11.1,4.7h-36.5v-14.4h3.6v-52.4h-3.6v-14.4h36.5c4.7,0,8.4,1.6,11.1,4.7,2.5,3,3.8,6.9,3.8,11.7v11c0,6-1.8,10.3-5.4,13,3.6,3,5.4,7.4,5.4,13.2v11.2ZM70,92v-9.3c0-3.2-1.7-4.8-5.1-4.8h-13.9v19h14.1c3.3,0,4.9-1.6,4.9-4.8h0ZM70,125.4v-9.2c0-1.4-.5-2.6-1.4-3.5s-2.1-1.4-3.5-1.4h-14.1v19h13.9c3.4,0,5.1-1.6,5.1-4.8h0Z"/>
|
<path class="cls-1" d="M0,76.9v-14.4h3.7v14.4H0Z"/>
|
||||||
<path class="st1" d="M17.6,77.7v-14.4h3.7v14.4h-3.7Z"/>
|
<path class="cls-1" d="M18.1,143.8v-14.4h3.7v14.4h-3.7Z"/>
|
||||||
<path class="st1" d="M-.5,77.7v-14.4h3.7v14.4H-.5Z"/>
|
<path class="cls-1" d="M0,143.8v-14.4h3.7v14.4H0Z"/>
|
||||||
<path class="st1" d="M17.6,144.6v-14.4h3.7v14.4h-3.7Z"/>
|
<path class="cls-2" d="M125,129.4h-11.8c-3.6,0-5.3-1.6-5.3-4.9v-43.1c0-3.3,1.8-4.9,5.3-4.9h11.8c3.6,0,5.4,1.9,5.4,5.7h13.1c0-7.4,0-12.7-2.7-15.7s-6.4-4.5-11.1-4.5h-21.1c-5.1,0-8.9,1.7-11.6,5.1-2.3,2.9-3.5,6.6-3.5,11.2v49.1c0,4.6,1.2,8.3,3.5,11.2,2.7,3.4,6.5,5.1,11.6,5.1h21.1c4.7,0,8.4-1.5,11.1-4.5,2.7-3,2.7-8.3,2.7-15.7h-13.1c0,3.8-1.8,5.7-5.4,5.7v.2h0Z"/>
|
||||||
<path class="st1" d="M-.5,144.6v-14.4h3.7v14.4H-.5Z"/>
|
<polygon class="cls-1" points="90.9 13.6 71.8 0 52.7 13.6 0 51.6 19.2 51.6 71.8 13.6 124.4 51.6 143.5 51.6 90.9 13.6"/>
|
||||||
<path class="st2" d="M124.5,130.2h-11.8c-3.6,0-5.3-1.6-5.3-4.9v-43.1c0-3.3,1.8-4.9,5.3-4.9h11.8c3.6,0,5.4,1.9,5.4,5.7h13.1c0-7.4,0-12.7-2.7-15.7s-6.4-4.5-11.1-4.5h-21.1c-5.1,0-8.9,1.7-11.6,5.1-2.3,2.9-3.5,6.6-3.5,11.2v49.1c0,4.6,1.2,8.3,3.5,11.2,2.7,3.4,6.5,5.1,11.6,5.1h21.1c4.7,0,8.4-1.5,11.1-4.5,2.7-3,2.7-8.3,2.7-15.7h-13.1c0,3.8-1.8,5.7-5.4,5.7v.2Z"/>
|
<path class="cls-1" d="M.2,163.3v-9.3h143.4v9.3H.2Z"/>
|
||||||
<polygon class="st1" points="90.4 14.4 71.3 .8 52.2 14.4 -.5 52.4 18.7 52.4 71.3 14.4 123.9 52.4 143 52.4 90.4 14.4"/>
|
|
||||||
<path class="st1" d="M-.3,164.1v-9.3h143.4v9.3H-.3Z"/>
|
|
||||||
</g>
|
|
||||||
</svg>
|
</svg>
|
||||||
|
Before Width: | Height: | Size: 2.0 KiB After Width: | Height: | Size: 1.5 KiB |
@@ -1,5 +1,5 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<svg id="Ebene_1" data-name="Ebene 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 143.6 163.3">
|
<svg id="Ebene_1" data-name="Ebene 1" xmlns="http://www.w3.org/2000/svg" width="50.66mm" height="57.61mm" viewBox="0 0 143.6 163.3">
|
||||||
<defs>
|
<defs>
|
||||||
<style>
|
<style>
|
||||||
.cls-1 {
|
.cls-1 {
|
||||||
@@ -12,7 +12,7 @@
|
|||||||
</style>
|
</style>
|
||||||
</defs>
|
</defs>
|
||||||
<path class="cls-1" d="M18.1,143.8H3.7V62.5h14.4v81.2h0v.1Z"/>
|
<path class="cls-1" d="M18.1,143.8H3.7V62.5h14.4v81.2h0v.1Z"/>
|
||||||
<path class="cls-1" d="M84.8,127.2c0,4.8-1.3,8.7-3.8,11.7-2.7,3.1-6.4,4.7-11.1,4.7h-36.5v-14.4h3.6v-52.4h-3.6v-14.4h36.5c4.7,0,8.4,1.6,11.1,4.7,2.5,3,3.8,6.9,3.8,11.7v11c0,6-1.8,10.3-5.4,13,3.6,3,5.4,7.4,5.4,13.2v11.2h0ZM70.5,91.2v-9.3c0-3.2-1.7-4.8-5.1-4.8h-13.9v19h14.1c3.3,0,4.9-1.6,4.9-4.8h0v-.1ZM70.5,124.6v-9.2c0-1.4-.5-2.6-1.4-3.5s-2.1-1.4-3.5-1.4h-14.1v19h13.9c3.4,0,5.1-1.6,5.1-4.8h0v-.1Z"/>
|
<path class="cls-1" d="M84.8,127.2c0,4.8-1.3,8.7-3.8,11.7-2.7,3.1-6.4,4.7-11.1,4.7h-36.5v-14.4h3.6v-52.4h-3.6v-14.4h36.5c4.7,0,8.4,1.6,11.1,4.7,2.5,3,3.8,6.9,3.8,11.7v11c0,6-1.8,10.3-5.4,13,3.6,3,5.4,7.4,5.4,13.2v11.2h0ZM70.5,91.2v-9.3c0-3.2-1.7-4.8-5.1-4.8h-13.9v19h14.1c3.3,0,4.9-1.6,4.9-4.8h0s0-.1,0-.1ZM70.5,124.6v-9.2c0-1.4-.5-2.6-1.4-3.5s-2.1-1.4-3.5-1.4h-14.1v19h13.9c3.4,0,5.1-1.6,5.1-4.8h0v-.1Z"/>
|
||||||
<path class="cls-1" d="M18.1,76.9v-14.4h3.7v14.4h-3.7Z"/>
|
<path class="cls-1" d="M18.1,76.9v-14.4h3.7v14.4h-3.7Z"/>
|
||||||
<path class="cls-1" d="M0,76.9v-14.4h3.7v14.4H0Z"/>
|
<path class="cls-1" d="M0,76.9v-14.4h3.7v14.4H0Z"/>
|
||||||
<path class="cls-1" d="M18.1,143.8v-14.4h3.7v14.4h-3.7Z"/>
|
<path class="cls-1" d="M18.1,143.8v-14.4h3.7v14.4h-3.7Z"/>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.5 KiB |
35
public/images/immowelt-old/gewerbegebaeude_immowelt.svg
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<svg id="Ebene_1" data-name="Ebene 1" xmlns="http://www.w3.org/2000/svg" width="95.61mm" height="39.29mm" viewBox="0 0 271.02 111.38">
|
||||||
|
<defs>
|
||||||
|
<style>
|
||||||
|
.cls-1 {
|
||||||
|
fill: #fc0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cls-2 {
|
||||||
|
fill: #222;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</defs>
|
||||||
|
<g id="Wellen">
|
||||||
|
<path class="cls-1" d="M271.01,65.51c-1.29,5.97-4.05,11.58-7.44,16.72-3.45,5.11-7.71,9.7-12.58,13.54-4.84,3.88-10.32,6.93-16.02,9.32-5.73,2.35-11.73,3.94-17.8,4.98-12.17,1.95-24.54,1.59-36.56-.24-12.04-1.81-23.79-5.03-35.08-9.32,11.79,2.6,23.6,4.87,35.49,6.03,5.94.54,11.89.93,17.82.81,5.93-.06,11.84-.48,17.66-1.48,11.62-1.85,22.92-5.93,32.54-12.75,4.79-3.42,9.17-7.47,12.89-12.12,3.73-4.64,6.91-9.81,9.09-15.48h-.01Z"/>
|
||||||
|
<path class="cls-1" d="M.01,87.43c5.04-3.14,10.5-5.58,16.05-7.75,5.56-2.17,11.29-3.9,17.08-5.42,11.63-2.86,23.59-4.58,35.64-5,12.04-.44,24.14.34,36.07,2.2,5.97.92,11.88,2.16,17.74,3.6,2.92.72,5.86,1.55,8.71,2.38,2.85.83,5.61,1.64,8.41,2.4,5.59,1.59,11.21,3.07,16.84,4.41,5.62,1.39,11.28,2.59,16.93,3.66,11.31,2.11,22.72,3.52,34.02,3.34,11.25-.23,22.53-2.12,32.47-7.4,2.49-1.29,4.9-2.77,7.2-4.44,2.3-1.67,4.45-3.55,6.55-5.53,4.16-3.99,7.81-8.6,11.16-13.48-2.24,5.48-5.15,10.75-8.81,15.56-3.65,4.83-8.15,9.1-13.22,12.64-5.12,3.47-10.81,6.13-16.72,8.01-5.91,1.89-12.03,2.97-18.13,3.53-12.24,1.1-24.42.14-36.31-1.64-11.9-1.82-23.57-4.56-35.04-7.76-2.87-.81-5.75-1.67-8.55-2.51-2.79-.85-5.52-1.61-8.31-2.36-5.54-1.51-11.15-2.75-16.78-3.85-11.27-2.16-22.72-3.47-34.23-3.89-11.51-.39-23.1.02-34.61,1.56-5.77.69-11.5,1.73-17.22,2.97-2.86.62-5.7,1.32-8.52,2.12-2.84.76-5.65,1.64-8.43,2.64h.01Z"/>
|
||||||
|
</g>
|
||||||
|
<g id="Gewerbegebaeude">
|
||||||
|
<path class="cls-2" d="M102.43,66.76V0l-34.28,10.84v54.01c11.44-.32,22.93.35,34.28,1.92h0Z"/>
|
||||||
|
<path class="cls-2" d="M254.82,64.65c-.02-6.59,0-45.44,0-45.44l-24.88-6.69v66.43s11.96-.84,24.22-12.71c.42-.41.66-.99.65-1.6h.01Z"/>
|
||||||
|
<g>
|
||||||
|
<polygon class="cls-2" points="106.61 8.82 106.61 .65 226.67 21.34 226.67 28.05 106.61 8.82"/>
|
||||||
|
<polygon class="cls-2" points="107.24 23.27 107.24 14.47 226.67 31.7 226.67 37.55 107.24 23.27"/>
|
||||||
|
<polygon class="cls-2" points="107.24 37.33 107.24 28.54 226.67 40.36 226.67 46.21 107.24 37.33"/>
|
||||||
|
<polygon class="cls-2" points="107.24 51.47 107.24 42.68 226.67 49.62 226.67 55.47 107.24 51.47"/>
|
||||||
|
<polygon class="cls-2" points="107.24 64.67 107.24 55.88 226.67 58.51 226.67 64.36 107.24 64.67"/>
|
||||||
|
<path class="cls-2" d="M122.77,70.43c3.1.69,6.21,1.48,9.24,2.28,1.2.32,2.39.63,3.57.94l91.08.55v-5.86l-119.43-.7h-.09c5.22.81,10.49,1.66,15.63,2.79Z"/>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<polygon class="cls-2" points="9.36 49.75 9.24 44 65.31 20.7 65.31 40.13 9.36 49.75"/>
|
||||||
|
<polygon class="cls-2" points="65.31 55.18 9.62 60.96 9.45 53.35 65.31 44.42 65.31 55.18"/>
|
||||||
|
<path class="cls-2" d="M43.87,67.07c7.08-1.11,14.25-1.82,21.44-2.12v-5.15l-55.63,4.35.17,7.82s34.02-4.9,34.02-4.9Z"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 2.9 KiB |
BIN
public/images/immowelt-old/hero-desktop.png
Normal file
|
After Width: | Height: | Size: 480 KiB |
|
Before Width: | Height: | Size: 72 KiB After Width: | Height: | Size: 72 KiB |
1
public/images/immowelt-old/immonet.svg
Normal file
@@ -0,0 +1 @@
|
|||||||
|
<svg viewBox="0 0 149 32" xmlns="http://www.w3.org/2000/svg" class="css-1qno6kt"><title>Immonet Startseite</title><path fill="#00B6F5" d="M84.25 17.265v8.29h-3.494v-7.254c0-1.924-.872-2.96-2.473-2.96-1.454 0-2.764 1.036-2.764 2.96v7.254h-3.493V12.38h3.347v1.48c.873-1.332 2.328-1.924 3.783-1.924 3.056.148 5.093 2.22 5.093 5.33zm14.986 1.777v1.184H90.07c.437 1.924 1.746 2.665 3.347 2.665a4.473 4.473 0 0 0 3.201-1.333l2.037 2.22c-1.455 1.333-3.347 1.926-5.528 1.926-3.93 0-6.694-2.665-6.694-6.81 0-4.146 2.619-6.959 6.548-6.959 3.783.149 6.256 2.962 6.256 7.107zm-9.167-1.185h5.675c-.29-1.628-1.31-2.664-2.765-2.664-1.6 0-2.619 1.036-2.91 2.664zm20.953-2.22h-4.656v4.737c0 1.629.873 2.22 1.892 2.22.873 0 1.746-.444 2.473-.887l1.31 2.812c-1.164.74-2.474 1.333-4.22 1.333-3.202 0-4.801-1.777-4.801-5.182v-5.033h-2.474v-3.109h2.328v-3.85h3.493v3.85h4.656zm18.917-1.777V7.495h3.492v18.06h-3.347v-1.48c-.873 1.037-2.037 1.777-3.783 1.777-3.492 0-6.257-2.961-6.257-6.958 0-3.997 2.62-6.958 6.257-6.958a5.536 5.536 0 0 1 3.638 1.925zm-6.548 5.182c0 2.072 1.309 3.552 3.346 3.552 2.038 0 3.347-1.48 3.347-3.552 0-2.073-1.31-3.553-3.347-3.553s-3.346 1.48-3.346 3.553zm25.609 0v1.184h-9.168c.438 1.924 1.747 2.665 3.347 2.665a5.038 5.038 0 0 0 3.202-1.184l2.037 2.22c-1.455 1.332-3.346 1.924-5.529 1.924-3.929 0-6.694-2.665-6.694-6.81s2.619-6.957 6.548-6.957c3.638 0 6.257 2.813 6.257 6.958zm-9.168-1.185h5.675c-.29-1.628-1.309-2.664-2.764-2.664-1.746 0-2.619 1.036-2.911 2.664zm-21.388 5.626c.145 1.332-1.019 2.517-2.329 2.369-1.018 0-2.037-1.037-2.037-2.073-.146-1.332 1.018-2.516 2.328-2.369 1.019 0 2.038 1.037 2.038 2.073z"></path><path fill="#000" d="M4.365 8.235c0 1.332-1.018 2.22-2.182 2.22C.873 10.456 0 9.42 0 8.236c0-1.332 1.019-2.22 2.183-2.22 1.31-.149 2.182.888 2.182 2.22zm-.436 17.32H.436V12.38H3.93zm24.445-8.29v8.29h-3.492v-7.254c0-1.924-.873-2.96-2.474-2.96-1.455 0-2.765 1.036-2.765 2.96v7.254h-3.492v-7.254c0-1.924-.873-2.96-2.473-2.96-1.455 0-2.765 1.036-2.765 2.96v7.254H7.421V12.38h3.346v1.48c.873-1.332 2.328-1.924 3.783-1.924 1.892 0 3.347.888 4.22 2.22 1.019-1.628 2.62-2.22 4.365-2.22 3.202.148 5.24 2.22 5.24 5.33zm24.446 0v8.29h-3.493v-7.254c0-1.924-.873-2.96-2.474-2.96-1.454 0-2.764 1.036-2.764 2.96v7.254h-3.492v-7.254c0-1.924-.874-2.96-2.474-2.96-1.455 0-2.765 1.036-2.765 2.96v7.254h-3.492V12.38h3.346v1.48c.873-1.332 2.328-1.924 3.784-1.924 1.891 0 3.346.888 4.22 2.22 1.018-1.628 2.618-2.22 4.364-2.22 3.202.148 5.24 2.22 5.24 5.33zm16.587 1.777c0 3.997-2.91 6.958-6.984 6.958s-6.984-2.96-6.984-6.958c0-3.997 2.91-6.958 6.984-6.958s6.984 2.96 6.984 6.958zm-10.331 0c0 2.072 1.455 3.552 3.347 3.552 1.891 0 3.492-1.48 3.492-3.552 0-2.073-1.456-3.553-3.492-3.553-1.892 0-3.347 1.48-3.347 3.553z"></path></svg>
|
||||||
|
After Width: | Height: | Size: 2.7 KiB |
|
Before Width: | Height: | Size: 2.8 KiB After Width: | Height: | Size: 2.8 KiB |
40
public/images/immowelt-old/wohngebaeude_immowelt.svg
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<svg id="Ebene_1" data-name="Ebene 1" xmlns="http://www.w3.org/2000/svg" width="95.61mm" height="39.47mm" viewBox="0 0 271.02 111.88">
|
||||||
|
<defs>
|
||||||
|
<style>
|
||||||
|
.cls-1 {
|
||||||
|
fill: #fc0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cls-2 {
|
||||||
|
fill: #222;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cls-3 {
|
||||||
|
fill: #c6c6c6;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</defs>
|
||||||
|
<g id="Wellen">
|
||||||
|
<path class="cls-1" d="M271.01,66.01c-1.29,5.97-4.05,11.58-7.44,16.72-3.45,5.11-7.71,9.7-12.58,13.54-4.84,3.88-10.32,6.93-16.02,9.32-5.73,2.35-11.73,3.94-17.8,4.98-12.17,1.95-24.54,1.59-36.56-.24-12.04-1.81-23.79-5.03-35.08-9.32,11.79,2.6,23.6,4.87,35.49,6.03,5.94.54,11.89.93,17.82.81,5.93-.06,11.84-.48,17.66-1.48,11.62-1.85,22.92-5.93,32.54-12.75,4.79-3.42,9.17-7.47,12.89-12.12,3.73-4.64,6.91-9.81,9.09-15.48h-.01Z"/>
|
||||||
|
<path class="cls-1" d="M.01,87.93c5.04-3.14,10.5-5.58,16.05-7.75,5.56-2.17,11.29-3.9,17.08-5.42,11.63-2.86,23.59-4.58,35.64-5,12.04-.44,24.14.34,36.07,2.2,5.97.92,11.88,2.16,17.74,3.6,2.92.72,5.86,1.55,8.71,2.38,2.85.83,5.61,1.64,8.41,2.4,5.59,1.59,11.21,3.07,16.84,4.41,5.62,1.39,11.28,2.59,16.93,3.66,11.31,2.11,22.72,3.52,34.02,3.34,11.25-.23,22.53-2.12,32.47-7.4,2.49-1.29,4.9-2.77,7.2-4.44,2.3-1.67,4.45-3.55,6.55-5.53,4.16-3.99,7.81-8.6,11.16-13.48-2.24,5.48-5.15,10.75-8.81,15.56-3.65,4.83-8.15,9.1-13.22,12.64-5.12,3.47-10.81,6.13-16.72,8.01-5.91,1.89-12.03,2.97-18.13,3.53-12.24,1.1-24.42.14-36.31-1.64-11.9-1.82-23.57-4.56-35.04-7.76-2.87-.81-5.75-1.67-8.55-2.51-2.79-.85-5.52-1.61-8.31-2.36-5.54-1.51-11.15-2.75-16.78-3.85-11.27-2.16-22.72-3.47-34.23-3.89-11.51-.39-23.1.02-34.61,1.56-5.77.69-11.5,1.73-17.22,2.97-2.86.62-5.7,1.32-8.52,2.12-2.84.76-5.65,1.64-8.43,2.64h.01Z"/>
|
||||||
|
</g>
|
||||||
|
<g id="Wohngebaeude">
|
||||||
|
<g>
|
||||||
|
<path class="cls-2" d="M62.11,66.01L103.84,11.59l52.17,63.63s72.22,24.35,98.81-11.35l-26.6-38.82-27.22-4.45V0h-19.83v39.66h-7.08v-22.76L101.53,4.02l-39.42,61.99Z"/>
|
||||||
|
<polygon class="cls-2" points="72.54 39.06 91.67 14.16 47.38 14.16 10.08 72.88 49.01 19.22 72.54 39.06"/>
|
||||||
|
<g>
|
||||||
|
<rect class="cls-3" x="90.52" y="35.34" width="11.33" height="12.75"/>
|
||||||
|
<rect class="cls-3" x="103.27" y="35.34" width="11.33" height="12.75"/>
|
||||||
|
<rect class="cls-3" x="90.52" y="49.51" width="11.33" height="12.75"/>
|
||||||
|
<rect class="cls-3" x="103.27" y="49.51" width="11.33" height="12.75"/>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<rect class="cls-3" x="40.94" y="35.41" width="5.67" height="8.5"/>
|
||||||
|
<rect class="cls-3" x="48.03" y="35.41" width="5.67" height="8.5"/>
|
||||||
|
<rect class="cls-3" x="40.94" y="45.33" width="5.67" height="8.5"/>
|
||||||
|
<rect class="cls-3" x="48.03" y="45.33" width="5.67" height="8.5"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 2.6 KiB |