Places, Agents, Serials, Entries

This commit is contained in:
Simon Martens
2025-02-08 15:24:13 +01:00
parent f4cbb037e0
commit cfce7a2dc7
32 changed files with 451342 additions and 154 deletions

449743
data/GM-BIBLIO.xml Normal file

File diff suppressed because it is too large Load Diff

692
data/GM-BIBLIO.xsd Normal file
View File

@@ -0,0 +1,692 @@
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:od="urn:schemas-microsoft-com:officedata">
<xsd:element name="dataroot">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="GM-BIBLIO" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
<xsd:attribute name="generated" type="xsd:dateTime"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="GM-BIBLIO">
<xsd:annotation>
<xsd:appinfo>
<od:index index-name="AUTOR" index-key="AUTOR " primary="no" unique="no" clustered="no" order="asc"/>
<od:index index-name="AUTORTITEL" index-key="AUTOR TITEL " primary="no" unique="no" clustered="no" order="asc asc"/>
<od:index index-name="ERSCHIENEN IN" index-key="ERSCHIENEN_x0020_IN " primary="no" unique="no" clustered="no" order="asc"/>
<od:index index-name="HERAUSGEBER" index-key="HERAUSGEBER " primary="no" unique="no" clustered="no" order="asc"/>
<od:index index-name="IND_KURZTI" index-key="AUTOR TITEL KURZTITEL " primary="no" unique="no" clustered="no" order="asc asc asc"/>
<od:index index-name="INDEXLANG" index-key="AUTOR TITEL KURZTITEL " primary="no" unique="no" clustered="no" order="asc asc asc"/>
<od:index index-name="INHALT" index-key="INHALT " primary="no" unique="no" clustered="no" order="asc"/>
<od:index index-name="JAHR" index-key="JAHR " primary="no" unique="no" clustered="no" order="asc"/>
<od:index index-name="KURZTITEL" index-key="KURZTITEL " primary="no" unique="no" clustered="no" order="asc"/>
<od:index index-name="NACHWEIS" index-key="NACHWEIS " primary="no" unique="no" clustered="no" order="asc"/>
<od:index index-name="NUMMER" index-key="NUMMER " primary="no" unique="yes" clustered="no" order="asc"/>
<od:index index-name="ORT" index-key="ORT " primary="no" unique="no" clustered="no" order="asc"/>
<od:index index-name="PrimaryKey" index-key="NUMMER " primary="yes" unique="yes" clustered="no" order="asc"/>
<od:index index-name="STANDORT" index-key="STANDORT " primary="no" unique="no" clustered="no" order="asc"/>
<od:index index-name="TITEL" index-key="TITEL " primary="no" unique="no" clustered="no" order="asc"/>
<od:index index-name="VORHANDEN ALS" index-key="VORHANDEN_x0020_ALS " primary="no" unique="no" clustered="no" order="asc"/>
<od:index index-name="ZUGEHÖRIG" index-key="ZUGEHÖRIG " primary="no" unique="no" clustered="no" order="asc"/>
<od:index index-name="ZUSTAND" index-key="ZUSTAND " primary="no" unique="no" clustered="no" order="asc"/>
<od:tableProperty name="OrderByOn" type="1" value="0"/>
<od:tableProperty name="Description" type="10" value="2006-12-01"/>
<od:tableProperty name="DatasheetFontName" type="10" value="Acc97"/>
<od:tableProperty name="DatasheetFontHeight" type="3" value="11"/>
<od:tableProperty name="DatasheetFontWeight" type="3" value="400"/>
<od:tableProperty name="DatasheetFontItalic" type="1" value="0"/>
<od:tableProperty name="DatasheetFontUnderline" type="1" value="0"/>
<od:tableProperty name="TabularCharSet" type="2" value="0"/>
<od:tableProperty name="TabularFamily" type="2" value="34"/>
<od:tableProperty name="DatasheetForeColor" type="4" value="33554432"/>
<od:tableProperty name="RowHeight" type="3" value="280"/>
<od:tableProperty name="ValidationText" type="10" value="Falsches Änderungsdatum!"/>
<od:tableProperty name="Orientation" type="2" value="0"/>
<od:tableProperty name="DatasheetForeColor12" type="4" value="33554432"/>
<od:tableProperty name="DefaultView" type="2" value="2"/>
<od:tableProperty name="GUID" type="9" value="alj0yuvJJE6qJ95Ck9eiKg==
"/>
<od:tableProperty name="DisplayViewsOnSharePointSite" type="2" value="1"/>
<od:tableProperty name="TotalsRow" type="1" value="0"/>
<od:tableProperty name="FilterOnLoad" type="1" value="0"/>
<od:tableProperty name="OrderByOnLoad" type="1" value="1"/>
<od:tableProperty name="HideNewField" type="1" value="0"/>
<od:tableProperty name="BackTint" type="6" value="100"/>
<od:tableProperty name="BackShade" type="6" value="100"/>
<od:tableProperty name="ThemeFontIndex" type="4" value="-1"/>
<od:tableProperty name="AlternateBackThemeColorIndex" type="4" value="-1"/>
<od:tableProperty name="AlternateBackTint" type="6" value="100"/>
<od:tableProperty name="AlternateBackShade" type="6" value="100"/>
<od:tableProperty name="DatasheetGridlinesThemeColorIndex" type="4" value="-1"/>
<od:tableProperty name="DatasheetForeThemeColorIndex" type="4" value="-1"/>
<od:tableProperty name="OrderBy" type="12" value="[GM-BIBLIO].[STANDORT]"/>
<od:tableProperty name="ValidationRule" type="12" value="[GEÄNDERT]=Date()"/>
</xsd:appinfo>
</xsd:annotation>
<xsd:complexType>
<xsd:sequence>
<xsd:element name="NUMMER" minOccurs="1" od:jetType="autonumber" od:sqlSType="int" od:autoUnique="yes" od:nonNullable="yes" type="xsd:int">
<xsd:annotation>
<xsd:appinfo>
<od:fieldProperty name="ColumnWidth" type="3" value="1185"/>
<od:fieldProperty name="ColumnOrder" type="3" value="0"/>
<od:fieldProperty name="ColumnHidden" type="1" value="0"/>
<od:fieldProperty name="TextAlign" type="2" value="0"/>
<od:fieldProperty name="AggregateType" type="4" value="-1"/>
<od:fieldProperty name="ResultType" type="2" value="0"/>
<od:fieldProperty name="CurrencyLCID" type="4" value="0"/>
<od:fieldProperty name="GUID" type="9" value="ICC5ASWZUEqOKLksYedCvw==
"/>
</xsd:appinfo>
</xsd:annotation>
</xsd:element>
<xsd:element name="EINGETRAGEN_x003F_" minOccurs="1" od:jetType="yesno" od:sqlSType="bit" od:nonNullable="yes" type="xsd:boolean">
<xsd:annotation>
<xsd:appinfo>
<od:fieldProperty name="ColumnWidth" type="3" value="570"/>
<od:fieldProperty name="ColumnOrder" type="3" value="0"/>
<od:fieldProperty name="ColumnHidden" type="1" value="0"/>
<od:fieldProperty name="Format" type="10" value="Yes/No"/>
<od:fieldProperty name="Required" type="1" value="0"/>
<od:fieldProperty name="DisplayControl" type="3" value="106"/>
<od:fieldProperty name="TextAlign" type="2" value="0"/>
<od:fieldProperty name="AggregateType" type="4" value="-1"/>
<od:fieldProperty name="ResultType" type="2" value="0"/>
<od:fieldProperty name="CurrencyLCID" type="4" value="0"/>
<od:fieldProperty name="GUID" type="9" value="+7BHgDPVL0aGUqiAtvWRuA==
"/>
</xsd:appinfo>
</xsd:annotation>
</xsd:element>
<xsd:element name="GESUCHT_x003F_" minOccurs="1" od:jetType="yesno" od:sqlSType="bit" od:nonNullable="yes" type="xsd:boolean">
<xsd:annotation>
<xsd:appinfo>
<od:fieldProperty name="ColumnWidth" type="3" value="1410"/>
<od:fieldProperty name="ColumnOrder" type="3" value="0"/>
<od:fieldProperty name="ColumnHidden" type="1" value="0"/>
<od:fieldProperty name="Format" type="10" value="Yes/No"/>
<od:fieldProperty name="Required" type="1" value="0"/>
<od:fieldProperty name="DisplayControl" type="3" value="106"/>
<od:fieldProperty name="TextAlign" type="2" value="0"/>
<od:fieldProperty name="AggregateType" type="4" value="-1"/>
<od:fieldProperty name="ResultType" type="2" value="0"/>
<od:fieldProperty name="CurrencyLCID" type="4" value="0"/>
<od:fieldProperty name="GUID" type="9" value="sQ3K2h9no0esXIFspxUJsw==
"/>
</xsd:appinfo>
</xsd:annotation>
</xsd:element>
<xsd:element name="AUTOR" minOccurs="0" od:jetType="text" od:sqlSType="nvarchar">
<xsd:annotation>
<xsd:appinfo>
<od:fieldProperty name="ColumnWidth" type="3" value="540"/>
<od:fieldProperty name="ColumnOrder" type="3" value="0"/>
<od:fieldProperty name="ColumnHidden" type="1" value="0"/>
<od:fieldProperty name="Required" type="1" value="0"/>
<od:fieldProperty name="AllowZeroLength" type="1" value="1"/>
<od:fieldProperty name="DisplayControl" type="3" value="109"/>
<od:fieldProperty name="IMEMode" type="2" value="0"/>
<od:fieldProperty name="IMESentenceMode" type="2" value="3"/>
<od:fieldProperty name="UnicodeCompression" type="1" value="1"/>
<od:fieldProperty name="TextAlign" type="2" value="0"/>
<od:fieldProperty name="AggregateType" type="4" value="-1"/>
<od:fieldProperty name="ResultType" type="2" value="0"/>
<od:fieldProperty name="CurrencyLCID" type="4" value="0"/>
<od:fieldProperty name="GUID" type="9" value="ykD/0FNDL0SJeicSjy90kg==
"/>
</xsd:appinfo>
</xsd:annotation>
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="254"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="HERAUSGEBER" minOccurs="0" od:jetType="text" od:sqlSType="nvarchar">
<xsd:annotation>
<xsd:appinfo>
<od:fieldProperty name="ColumnWidth" type="3" value="150"/>
<od:fieldProperty name="ColumnOrder" type="3" value="0"/>
<od:fieldProperty name="ColumnHidden" type="1" value="0"/>
<od:fieldProperty name="Required" type="1" value="0"/>
<od:fieldProperty name="AllowZeroLength" type="1" value="1"/>
<od:fieldProperty name="DisplayControl" type="3" value="109"/>
<od:fieldProperty name="IMEMode" type="2" value="0"/>
<od:fieldProperty name="IMESentenceMode" type="2" value="3"/>
<od:fieldProperty name="UnicodeCompression" type="1" value="1"/>
<od:fieldProperty name="TextAlign" type="2" value="0"/>
<od:fieldProperty name="AggregateType" type="4" value="-1"/>
<od:fieldProperty name="ResultType" type="2" value="0"/>
<od:fieldProperty name="CurrencyLCID" type="4" value="0"/>
<od:fieldProperty name="GUID" type="9" value="sBkWG2vy4kat8kWnxvvdpg==
"/>
</xsd:appinfo>
</xsd:annotation>
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="254"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="TITEL" minOccurs="0" od:jetType="text" od:sqlSType="nvarchar">
<xsd:annotation>
<xsd:appinfo>
<od:fieldProperty name="ColumnWidth" type="3" value="2715"/>
<od:fieldProperty name="ColumnOrder" type="3" value="0"/>
<od:fieldProperty name="ColumnHidden" type="1" value="0"/>
<od:fieldProperty name="Required" type="1" value="0"/>
<od:fieldProperty name="AllowZeroLength" type="1" value="1"/>
<od:fieldProperty name="DisplayControl" type="3" value="109"/>
<od:fieldProperty name="IMEMode" type="2" value="0"/>
<od:fieldProperty name="IMESentenceMode" type="2" value="3"/>
<od:fieldProperty name="UnicodeCompression" type="1" value="1"/>
<od:fieldProperty name="TextAlign" type="2" value="0"/>
<od:fieldProperty name="AggregateType" type="4" value="-1"/>
<od:fieldProperty name="ResultType" type="2" value="0"/>
<od:fieldProperty name="CurrencyLCID" type="4" value="0"/>
<od:fieldProperty name="GUID" type="9" value="mfbaEzEIUECN+de3R24XdA==
"/>
</xsd:appinfo>
</xsd:annotation>
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="254"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="UNTERTITEL" minOccurs="0" od:jetType="memo" od:sqlSType="ntext">
<xsd:annotation>
<xsd:appinfo>
<od:fieldProperty name="ColumnWidth" type="3" value="4395"/>
<od:fieldProperty name="ColumnOrder" type="3" value="0"/>
<od:fieldProperty name="ColumnHidden" type="1" value="0"/>
<od:fieldProperty name="Required" type="1" value="0"/>
<od:fieldProperty name="AllowZeroLength" type="1" value="1"/>
<od:fieldProperty name="IMEMode" type="2" value="0"/>
<od:fieldProperty name="IMESentenceMode" type="2" value="3"/>
<od:fieldProperty name="UnicodeCompression" type="1" value="1"/>
<od:fieldProperty name="TextFormat" type="2" value="0"/>
<od:fieldProperty name="TextAlign" type="2" value="0"/>
<od:fieldProperty name="AggregateType" type="4" value="-1"/>
<od:fieldProperty name="ResultType" type="2" value="0"/>
<od:fieldProperty name="CurrencyLCID" type="4" value="0"/>
<od:fieldProperty name="GUID" type="9" value="VckNiN8/20aB19QfpCLrYw==
"/>
</xsd:appinfo>
</xsd:annotation>
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="536870910"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="ERSCHIENEN_x0020_IN" minOccurs="0" od:jetType="text" od:sqlSType="nvarchar">
<xsd:annotation>
<xsd:appinfo>
<od:fieldProperty name="ColumnWidth" type="3" value="375"/>
<od:fieldProperty name="ColumnOrder" type="3" value="0"/>
<od:fieldProperty name="ColumnHidden" type="1" value="0"/>
<od:fieldProperty name="Required" type="1" value="0"/>
<od:fieldProperty name="AllowZeroLength" type="1" value="1"/>
<od:fieldProperty name="DisplayControl" type="3" value="109"/>
<od:fieldProperty name="IMEMode" type="2" value="0"/>
<od:fieldProperty name="IMESentenceMode" type="2" value="3"/>
<od:fieldProperty name="UnicodeCompression" type="1" value="1"/>
<od:fieldProperty name="TextAlign" type="2" value="0"/>
<od:fieldProperty name="AggregateType" type="4" value="-1"/>
<od:fieldProperty name="ResultType" type="2" value="0"/>
<od:fieldProperty name="CurrencyLCID" type="4" value="0"/>
<od:fieldProperty name="GUID" type="9" value="t87NBw9ZaE2zrpohmKf9Dw==
"/>
</xsd:appinfo>
</xsd:annotation>
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="254"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="ORT" minOccurs="0" od:jetType="text" od:sqlSType="nvarchar">
<xsd:annotation>
<xsd:appinfo>
<od:fieldProperty name="ColumnWidth" type="3" value="1215"/>
<od:fieldProperty name="ColumnOrder" type="3" value="0"/>
<od:fieldProperty name="ColumnHidden" type="1" value="0"/>
<od:fieldProperty name="Required" type="1" value="0"/>
<od:fieldProperty name="AllowZeroLength" type="1" value="1"/>
<od:fieldProperty name="DisplayControl" type="3" value="109"/>
<od:fieldProperty name="IMEMode" type="2" value="0"/>
<od:fieldProperty name="IMESentenceMode" type="2" value="3"/>
<od:fieldProperty name="UnicodeCompression" type="1" value="1"/>
<od:fieldProperty name="TextAlign" type="2" value="0"/>
<od:fieldProperty name="AggregateType" type="4" value="-1"/>
<od:fieldProperty name="ResultType" type="2" value="0"/>
<od:fieldProperty name="CurrencyLCID" type="4" value="0"/>
<od:fieldProperty name="GUID" type="9" value="sRu+mfkwUk2uoeEn7nbklA==
"/>
</xsd:appinfo>
</xsd:annotation>
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="254"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="JAHR" minOccurs="0" od:jetType="longinteger" od:sqlSType="int" type="xsd:int">
<xsd:annotation>
<xsd:appinfo>
<od:fieldProperty name="ColumnWidth" type="3" value="1080"/>
<od:fieldProperty name="ColumnOrder" type="3" value="0"/>
<od:fieldProperty name="ColumnHidden" type="1" value="0"/>
<od:fieldProperty name="DecimalPlaces" type="2" value="255"/>
<od:fieldProperty name="DefaultValue" type="12" value="0"/>
<od:fieldProperty name="Required" type="1" value="0"/>
<od:fieldProperty name="DisplayControl" type="3" value="109"/>
<od:fieldProperty name="TextAlign" type="2" value="0"/>
<od:fieldProperty name="AggregateType" type="4" value="-1"/>
<od:fieldProperty name="ResultType" type="2" value="0"/>
<od:fieldProperty name="CurrencyLCID" type="4" value="0"/>
<od:fieldProperty name="GUID" type="9" value="vY2c3m2T0km8gef1bbLqnQ==
"/>
</xsd:appinfo>
</xsd:annotation>
</xsd:element>
<xsd:element name="NACHWEIS" minOccurs="0" od:jetType="text" od:sqlSType="nvarchar">
<xsd:annotation>
<xsd:appinfo>
<od:fieldProperty name="ColumnWidth" type="3" value="390"/>
<od:fieldProperty name="ColumnOrder" type="3" value="0"/>
<od:fieldProperty name="ColumnHidden" type="1" value="0"/>
<od:fieldProperty name="Required" type="1" value="0"/>
<od:fieldProperty name="AllowZeroLength" type="1" value="1"/>
<od:fieldProperty name="DisplayControl" type="3" value="111"/>
<od:fieldProperty name="RowSourceType" type="10" value="Value List"/>
<od:fieldProperty name="RowSource" type="12" value="&quot;Diesch&quot;;&quot;Köhring&quot;;&quot;Lanckoronska/Rühmann&quot;;&quot;Wilpert/Gühring&quot;"/>
<od:fieldProperty name="BoundColumn" type="3" value="1"/>
<od:fieldProperty name="ColumnCount" type="3" value="1"/>
<od:fieldProperty name="ColumnHeads" type="1" value="0"/>
<od:fieldProperty name="ColumnWidths" type="10" value="1441"/>
<od:fieldProperty name="ListRows" type="3" value="8"/>
<od:fieldProperty name="ListWidth" type="10" value="0Twip"/>
<od:fieldProperty name="LimitToList" type="1" value="0"/>
<od:fieldProperty name="IMEMode" type="2" value="0"/>
<od:fieldProperty name="IMESentenceMode" type="2" value="3"/>
<od:fieldProperty name="UnicodeCompression" type="1" value="1"/>
<od:fieldProperty name="TextAlign" type="2" value="0"/>
<od:fieldProperty name="AllowValueListEdits" type="1" value="0"/>
<od:fieldProperty name="AggregateType" type="4" value="-1"/>
<od:fieldProperty name="ShowOnlyRowSourceValues" type="1" value="0"/>
<od:fieldProperty name="ResultType" type="2" value="0"/>
<od:fieldProperty name="CurrencyLCID" type="4" value="0"/>
<od:fieldProperty name="GUID" type="9" value="Lk5YUMbNcU+SbNT+JVZuKg==
"/>
</xsd:appinfo>
</xsd:annotation>
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="254"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="KURZTITEL" minOccurs="0" od:jetType="text" od:sqlSType="nvarchar">
<xsd:annotation>
<xsd:appinfo>
<od:fieldProperty name="ColumnWidth" type="3" value="5595"/>
<od:fieldProperty name="ColumnOrder" type="3" value="0"/>
<od:fieldProperty name="ColumnHidden" type="1" value="0"/>
<od:fieldProperty name="Required" type="1" value="0"/>
<od:fieldProperty name="AllowZeroLength" type="1" value="1"/>
<od:fieldProperty name="DisplayControl" type="3" value="109"/>
<od:fieldProperty name="IMEMode" type="2" value="0"/>
<od:fieldProperty name="IMESentenceMode" type="2" value="3"/>
<od:fieldProperty name="UnicodeCompression" type="1" value="1"/>
<od:fieldProperty name="TextAlign" type="2" value="0"/>
<od:fieldProperty name="AggregateType" type="4" value="-1"/>
<od:fieldProperty name="ResultType" type="2" value="0"/>
<od:fieldProperty name="CurrencyLCID" type="4" value="0"/>
<od:fieldProperty name="GUID" type="9" value="HNc19CGw1UeDC+6A6YzeNg==
"/>
</xsd:appinfo>
</xsd:annotation>
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="254"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="ZUGEHÖRIG" minOccurs="0" od:jetType="text" od:sqlSType="nvarchar">
<xsd:annotation>
<xsd:appinfo>
<od:fieldProperty name="ColumnWidth" type="3" value="480"/>
<od:fieldProperty name="ColumnOrder" type="3" value="0"/>
<od:fieldProperty name="ColumnHidden" type="1" value="0"/>
<od:fieldProperty name="Required" type="1" value="0"/>
<od:fieldProperty name="AllowZeroLength" type="1" value="0"/>
<od:fieldProperty name="DisplayControl" type="3" value="111"/>
<od:fieldProperty name="RowSourceType" type="10" value="Value List"/>
<od:fieldProperty name="RowSource" type="12" value="&quot;H-Archiv&quot;;&quot;Zschokke&quot;;&quot;Kalender&quot;;&quot;Almanach&quot;;&quot;Rätsel&quot;;&quot;BLB&quot;;&quot;Zeit&quot;"/>
<od:fieldProperty name="BoundColumn" type="3" value="1"/>
<od:fieldProperty name="ColumnCount" type="3" value="1"/>
<od:fieldProperty name="ColumnHeads" type="1" value="0"/>
<od:fieldProperty name="ColumnWidths" type="10" value="1701"/>
<od:fieldProperty name="ListRows" type="3" value="8"/>
<od:fieldProperty name="ListWidth" type="10" value="1701Twip"/>
<od:fieldProperty name="LimitToList" type="1" value="0"/>
<od:fieldProperty name="IMEMode" type="2" value="0"/>
<od:fieldProperty name="IMESentenceMode" type="2" value="3"/>
<od:fieldProperty name="UnicodeCompression" type="1" value="1"/>
<od:fieldProperty name="TextAlign" type="2" value="0"/>
<od:fieldProperty name="AllowValueListEdits" type="1" value="0"/>
<od:fieldProperty name="AggregateType" type="4" value="-1"/>
<od:fieldProperty name="ShowOnlyRowSourceValues" type="1" value="0"/>
<od:fieldProperty name="ResultType" type="2" value="0"/>
<od:fieldProperty name="CurrencyLCID" type="4" value="0"/>
<od:fieldProperty name="GUID" type="9" value="9vdV50VrLEygZrCL79g6IA==
"/>
</xsd:appinfo>
</xsd:annotation>
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="254"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="VORHANDEN_x0020_ALS" minOccurs="0" od:jetType="text" od:sqlSType="nvarchar">
<xsd:annotation>
<xsd:appinfo>
<od:fieldProperty name="ColumnWidth" type="3" value="750"/>
<od:fieldProperty name="ColumnOrder" type="3" value="0"/>
<od:fieldProperty name="ColumnHidden" type="1" value="0"/>
<od:fieldProperty name="Required" type="1" value="0"/>
<od:fieldProperty name="AllowZeroLength" type="1" value="0"/>
<od:fieldProperty name="DisplayControl" type="3" value="111"/>
<od:fieldProperty name="RowSourceType" type="10" value="Value List"/>
<od:fieldProperty name="RowSource" type="12" value="&quot;Nicht vorhanden&quot;;&quot;Original&quot;;&quot;Reprint&quot;;&quot;Fotokopie&quot;;&quot;Mangel&quot;;&quot;x. Exemplar&quot;"/>
<od:fieldProperty name="BoundColumn" type="3" value="1"/>
<od:fieldProperty name="ColumnCount" type="3" value="1"/>
<od:fieldProperty name="ColumnHeads" type="1" value="0"/>
<od:fieldProperty name="ColumnWidths" type="10" value="1441"/>
<od:fieldProperty name="ListRows" type="3" value="8"/>
<od:fieldProperty name="ListWidth" type="10" value="2835Twip"/>
<od:fieldProperty name="LimitToList" type="1" value="0"/>
<od:fieldProperty name="IMEMode" type="2" value="0"/>
<od:fieldProperty name="IMESentenceMode" type="2" value="3"/>
<od:fieldProperty name="UnicodeCompression" type="1" value="1"/>
<od:fieldProperty name="TextAlign" type="2" value="0"/>
<od:fieldProperty name="AllowValueListEdits" type="1" value="0"/>
<od:fieldProperty name="AggregateType" type="4" value="-1"/>
<od:fieldProperty name="ShowOnlyRowSourceValues" type="1" value="0"/>
<od:fieldProperty name="ResultType" type="2" value="0"/>
<od:fieldProperty name="CurrencyLCID" type="4" value="0"/>
<od:fieldProperty name="GUID" type="9" value="2nEZ5rEwLUmMYpuKAAZwBg==
"/>
</xsd:appinfo>
</xsd:annotation>
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="100"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="INHALT" minOccurs="0" od:jetType="text" od:sqlSType="nvarchar">
<xsd:annotation>
<xsd:appinfo>
<od:fieldProperty name="ColumnWidth" type="3" value="600"/>
<od:fieldProperty name="ColumnOrder" type="3" value="0"/>
<od:fieldProperty name="ColumnHidden" type="1" value="0"/>
<od:fieldProperty name="Required" type="1" value="0"/>
<od:fieldProperty name="AllowZeroLength" type="1" value="1"/>
<od:fieldProperty name="DisplayControl" type="3" value="111"/>
<od:fieldProperty name="RowSourceType" type="10" value="Value List"/>
<od:fieldProperty name="RowSource" type="12" value="&quot;H-Orig&quot;;&quot;H-Sam&quot;;&quot;H-Ged&quot;;&quot;H-Pros&quot;;&quot;H-Bib&quot;;&quot;H-Theol&quot;;&quot;H-Bri&quot;;&quot;H-Sonst&quot;;&quot;H-Anth&quot;;&quot;H-Sek&quot;;&quot;H-Biog&quot;;&quot;B-Gesch&quot;;&quot;B-Recht&quot;;&quot;B-Ort&quot;;&quot;B-Kirch&quot;;&quot;Marx&quot;;&quot;Philosoph&quot;;&quot;SozW&quot;;&quot;LitW&quot;;&quot;Sprache&quot;;&quot;Biog&quot;;&quot;EA&quot;;&quot;Buch&quot;"/>
<od:fieldProperty name="BoundColumn" type="3" value="1"/>
<od:fieldProperty name="ColumnCount" type="3" value="1"/>
<od:fieldProperty name="ColumnHeads" type="1" value="0"/>
<od:fieldProperty name="ColumnWidths" type="10" value="1441"/>
<od:fieldProperty name="ListRows" type="3" value="8"/>
<od:fieldProperty name="ListWidth" type="10" value="1441Twip"/>
<od:fieldProperty name="LimitToList" type="1" value="0"/>
<od:fieldProperty name="IMEMode" type="2" value="0"/>
<od:fieldProperty name="IMESentenceMode" type="2" value="3"/>
<od:fieldProperty name="UnicodeCompression" type="1" value="1"/>
<od:fieldProperty name="TextAlign" type="2" value="0"/>
<od:fieldProperty name="AllowValueListEdits" type="1" value="0"/>
<od:fieldProperty name="AggregateType" type="4" value="-1"/>
<od:fieldProperty name="ShowOnlyRowSourceValues" type="1" value="0"/>
<od:fieldProperty name="ResultType" type="2" value="0"/>
<od:fieldProperty name="CurrencyLCID" type="4" value="0"/>
<od:fieldProperty name="GUID" type="9" value="Fqm3tNb9lEmEdfhAk4PFaA==
"/>
</xsd:appinfo>
</xsd:annotation>
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="254"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="ZUSTAND" minOccurs="0" od:jetType="text" od:sqlSType="nvarchar">
<xsd:annotation>
<xsd:appinfo>
<od:fieldProperty name="ColumnWidth" type="3" value="480"/>
<od:fieldProperty name="ColumnOrder" type="3" value="0"/>
<od:fieldProperty name="ColumnHidden" type="1" value="0"/>
<od:fieldProperty name="Required" type="1" value="0"/>
<od:fieldProperty name="AllowZeroLength" type="1" value="1"/>
<od:fieldProperty name="DisplayControl" type="3" value="109"/>
<od:fieldProperty name="IMEMode" type="2" value="0"/>
<od:fieldProperty name="IMESentenceMode" type="2" value="3"/>
<od:fieldProperty name="UnicodeCompression" type="1" value="0"/>
<od:fieldProperty name="TextAlign" type="2" value="0"/>
<od:fieldProperty name="AggregateType" type="4" value="-1"/>
<od:fieldProperty name="ResultType" type="2" value="0"/>
<od:fieldProperty name="CurrencyLCID" type="4" value="0"/>
<od:fieldProperty name="GUID" type="9" value="+Xh+epAnnEabVRSA0+5JLg==
"/>
</xsd:appinfo>
</xsd:annotation>
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="2"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="NOTIZ_x0020_ÄUSSERES" minOccurs="0" od:jetType="memo" od:sqlSType="ntext">
<xsd:annotation>
<xsd:appinfo>
<od:fieldProperty name="ColumnWidth" type="3" value="480"/>
<od:fieldProperty name="ColumnOrder" type="3" value="0"/>
<od:fieldProperty name="ColumnHidden" type="1" value="0"/>
<od:fieldProperty name="Required" type="1" value="0"/>
<od:fieldProperty name="AllowZeroLength" type="1" value="1"/>
<od:fieldProperty name="IMEMode" type="2" value="0"/>
<od:fieldProperty name="IMESentenceMode" type="2" value="3"/>
<od:fieldProperty name="UnicodeCompression" type="1" value="1"/>
<od:fieldProperty name="TextFormat" type="2" value="0"/>
<od:fieldProperty name="TextAlign" type="2" value="0"/>
<od:fieldProperty name="AggregateType" type="4" value="-1"/>
<od:fieldProperty name="ResultType" type="2" value="0"/>
<od:fieldProperty name="CurrencyLCID" type="4" value="0"/>
<od:fieldProperty name="GUID" type="9" value="UVqY27zpiEqY47YPNj+0wA==
"/>
</xsd:appinfo>
</xsd:annotation>
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="536870910"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="NOTIZ_x0020_INHALT" minOccurs="0" od:jetType="memo" od:sqlSType="ntext">
<xsd:annotation>
<xsd:appinfo>
<od:fieldProperty name="ColumnWidth" type="3" value="315"/>
<od:fieldProperty name="ColumnOrder" type="3" value="0"/>
<od:fieldProperty name="ColumnHidden" type="1" value="0"/>
<od:fieldProperty name="Required" type="1" value="0"/>
<od:fieldProperty name="AllowZeroLength" type="1" value="1"/>
<od:fieldProperty name="IMEMode" type="2" value="0"/>
<od:fieldProperty name="IMESentenceMode" type="2" value="3"/>
<od:fieldProperty name="UnicodeCompression" type="1" value="1"/>
<od:fieldProperty name="TextFormat" type="2" value="0"/>
<od:fieldProperty name="TextAlign" type="2" value="0"/>
<od:fieldProperty name="AggregateType" type="4" value="-1"/>
<od:fieldProperty name="ResultType" type="2" value="0"/>
<od:fieldProperty name="CurrencyLCID" type="4" value="0"/>
<od:fieldProperty name="GUID" type="9" value="ldAozT0qfU6nO2EOdlteWA==
"/>
</xsd:appinfo>
</xsd:annotation>
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="536870910"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="ALLGEMEINE_x0020_BEMERKUNG" minOccurs="0" od:jetType="memo" od:sqlSType="ntext">
<xsd:annotation>
<xsd:appinfo>
<od:fieldProperty name="ColumnWidth" type="3" value="240"/>
<od:fieldProperty name="ColumnOrder" type="3" value="0"/>
<od:fieldProperty name="ColumnHidden" type="1" value="0"/>
<od:fieldProperty name="Required" type="1" value="0"/>
<od:fieldProperty name="AllowZeroLength" type="1" value="0"/>
<od:fieldProperty name="IMEMode" type="2" value="0"/>
<od:fieldProperty name="IMESentenceMode" type="2" value="3"/>
<od:fieldProperty name="UnicodeCompression" type="1" value="1"/>
<od:fieldProperty name="TextFormat" type="2" value="0"/>
<od:fieldProperty name="TextAlign" type="2" value="0"/>
<od:fieldProperty name="AggregateType" type="4" value="-1"/>
<od:fieldProperty name="ResultType" type="2" value="0"/>
<od:fieldProperty name="CurrencyLCID" type="4" value="0"/>
<od:fieldProperty name="GUID" type="9" value="6g1/t9mJKkCtMrdSkyQjng==
"/>
</xsd:appinfo>
</xsd:annotation>
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="536870910"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="STANDORT" minOccurs="0" od:jetType="text" od:sqlSType="nvarchar">
<xsd:annotation>
<xsd:appinfo>
<od:fieldProperty name="ColumnWidth" type="3" value="3015"/>
<od:fieldProperty name="ColumnOrder" type="3" value="0"/>
<od:fieldProperty name="ColumnHidden" type="1" value="0"/>
<od:fieldProperty name="Required" type="1" value="0"/>
<od:fieldProperty name="AllowZeroLength" type="1" value="1"/>
<od:fieldProperty name="DisplayControl" type="3" value="109"/>
<od:fieldProperty name="IMEMode" type="2" value="0"/>
<od:fieldProperty name="IMESentenceMode" type="2" value="3"/>
<od:fieldProperty name="UnicodeCompression" type="1" value="1"/>
<od:fieldProperty name="TextAlign" type="2" value="0"/>
<od:fieldProperty name="AggregateType" type="4" value="-1"/>
<od:fieldProperty name="ResultType" type="2" value="0"/>
<od:fieldProperty name="CurrencyLCID" type="4" value="0"/>
<od:fieldProperty name="GUID" type="9" value="Twag0/zsgE2OWw3xSwNiAw==
"/>
</xsd:appinfo>
</xsd:annotation>
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="254"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="AUFGENOMMEN" minOccurs="1" od:jetType="datetime" od:sqlSType="datetime" od:nonNullable="yes" type="xsd:dateTime">
<xsd:annotation>
<xsd:appinfo>
<od:fieldProperty name="ColumnWidth" type="3" value="1965"/>
<od:fieldProperty name="ColumnOrder" type="3" value="0"/>
<od:fieldProperty name="ColumnHidden" type="1" value="0"/>
<od:fieldProperty name="Required" type="1" value="1"/>
<od:fieldProperty name="Format" type="10" value="General Date"/>
<od:fieldProperty name="ValidationText" type="10" value="falsches Aufnahmedatum!"/>
<od:fieldProperty name="DefaultValue" type="12" value="=Date()"/>
<od:fieldProperty name="IMEMode" type="2" value="0"/>
<od:fieldProperty name="IMESentenceMode" type="2" value="3"/>
<od:fieldProperty name="TextAlign" type="2" value="0"/>
<od:fieldProperty name="AggregateType" type="4" value="-1"/>
<od:fieldProperty name="ShowDatePicker" type="3" value="1"/>
<od:fieldProperty name="ResultType" type="2" value="0"/>
<od:fieldProperty name="CurrencyLCID" type="4" value="0"/>
<od:fieldProperty name="GUID" type="9" value="LufN9lhoEk6TUXAiQZoCqQ==
"/>
<od:fieldProperty name="ValidationRule" type="12" value="=Date()"/>
</xsd:appinfo>
</xsd:annotation>
</xsd:element>
<xsd:element name="GEÄNDERT" minOccurs="1" od:jetType="datetime" od:sqlSType="datetime" od:nonNullable="yes" type="xsd:dateTime">
<xsd:annotation>
<xsd:appinfo>
<od:fieldProperty name="ColumnWidth" type="3" value="2805"/>
<od:fieldProperty name="ColumnOrder" type="3" value="0"/>
<od:fieldProperty name="ColumnHidden" type="1" value="0"/>
<od:fieldProperty name="Required" type="1" value="1"/>
<od:fieldProperty name="ValidationText" type="10" value="falsches Änderungsdatum!"/>
<od:fieldProperty name="DefaultValue" type="12" value="=Date()"/>
<od:fieldProperty name="IMEMode" type="2" value="0"/>
<od:fieldProperty name="IMESentenceMode" type="2" value="3"/>
<od:fieldProperty name="TextAlign" type="2" value="0"/>
<od:fieldProperty name="AggregateType" type="4" value="-1"/>
<od:fieldProperty name="ShowDatePicker" type="3" value="1"/>
<od:fieldProperty name="ResultType" type="2" value="0"/>
<od:fieldProperty name="CurrencyLCID" type="4" value="0"/>
<od:fieldProperty name="GUID" type="9" value="k3WyOeQD/E6gfB55NJNq8w==
"/>
<od:fieldProperty name="ValidationRule" type="12" value="=Date()"/>
</xsd:appinfo>
</xsd:annotation>
</xsd:element>
<xsd:element name="UNKLAR" minOccurs="1" od:jetType="yesno" od:sqlSType="bit" od:nonNullable="yes" type="xsd:boolean">
<xsd:annotation>
<xsd:appinfo>
<od:fieldProperty name="ColumnWidth" type="3" value="1080"/>
<od:fieldProperty name="ColumnOrder" type="3" value="0"/>
<od:fieldProperty name="ColumnHidden" type="1" value="0"/>
<od:fieldProperty name="Format" type="10" value="Yes/No"/>
<od:fieldProperty name="Required" type="1" value="0"/>
<od:fieldProperty name="DisplayControl" type="3" value="106"/>
<od:fieldProperty name="TextAlign" type="2" value="0"/>
<od:fieldProperty name="AggregateType" type="4" value="-1"/>
<od:fieldProperty name="ResultType" type="2" value="0"/>
<od:fieldProperty name="CurrencyLCID" type="4" value="0"/>
<od:fieldProperty name="GUID" type="9" value="EHUmgVmzR02lJjg0uoYZkQ==
"/>
</xsd:appinfo>
</xsd:annotation>
</xsd:element>
<xsd:element name="BEARBEITET_x0020_VON" minOccurs="1" od:jetType="text" od:sqlSType="nvarchar" od:nonNullable="yes">
<xsd:annotation>
<xsd:appinfo>
<od:fieldProperty name="ColumnWidth" type="3" value="765"/>
<od:fieldProperty name="ColumnOrder" type="3" value="0"/>
<od:fieldProperty name="ColumnHidden" type="1" value="0"/>
<od:fieldProperty name="Required" type="1" value="1"/>
<od:fieldProperty name="AllowZeroLength" type="1" value="1"/>
<od:fieldProperty name="ValidationText" type="10" value="Ungültiges Namenskürzel!"/>
<od:fieldProperty name="DisplayControl" type="3" value="109"/>
<od:fieldProperty name="IMEMode" type="2" value="0"/>
<od:fieldProperty name="IMESentenceMode" type="2" value="3"/>
<od:fieldProperty name="UnicodeCompression" type="1" value="0"/>
<od:fieldProperty name="TextAlign" type="2" value="0"/>
<od:fieldProperty name="AggregateType" type="4" value="-1"/>
<od:fieldProperty name="ResultType" type="2" value="0"/>
<od:fieldProperty name="CurrencyLCID" type="4" value="0"/>
<od:fieldProperty name="GUID" type="9" value="wlThy9f6hUqpiP9aTfY8lQ==
"/>
<od:fieldProperty name="ValidationRule" type="12" value="&quot;ab&quot; Or &quot;gm&quot; Or &quot;mb&quot; Or &quot;ms&quot; Or &quot;wb&quot; Or &quot;jr&quot; Or &quot;uw&quot; Or &quot;jb&quot; Or &quot;sg&quot;"/>
</xsd:appinfo>
</xsd:annotation>
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="2"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>

View File

@@ -1,6 +1,6 @@
package models
package dbmodels
var EDITORSTATE_VALUES = []string{"Unknown", "Inspected", "Partially Edited", "Waiting", "Edited"}
var EDITORSTATE_VALUES = []string{"Unknown", "ToDo", "Seen", "Partially Edited", "Waiting", "Edited"}
var MEDIA_TYPE_VALUES = []string{
"audio",
@@ -410,6 +410,7 @@ const (
MUSENALMID_FIELD = "musenalm_id"
EDITSTATE_FIELD = "edit_state"
COMMENT_FIELD = "edit_comment"
META_FIELD = "edit_fielddata"
AGENTS_NAME_FIELD = "name"
AGENTS_CORP_FIELD = "corporate_body"
@@ -423,6 +424,7 @@ const (
SERIES_NAME_FIELD = "name"
SERIES_PSEUDONYMS_FIELD = "pseudonyms"
SERIES_FREQUENCY_FIELD = "frequency"
RELATION_TYPE_FIELD = "type"
RELATION_CONJECTURE_FIELD = "conjecture"

8
dbmodels/deprecated.go Normal file
View File

@@ -0,0 +1,8 @@
package dbmodels
type Deprecated struct {
Reihentitel string `json:"reihentitel"`
Norm string `json:"norm"`
BiblioID int `json:"biblio"`
Status []string `json:"status"`
}

10
dbmodels/exemplar.go Normal file
View File

@@ -0,0 +1,10 @@
package dbmodels
type Exemplar struct {
Location string `json:",omitempty"`
Identifier string `json:",omitempty"`
Annotation string `json:",omitempty"`
Condition string `json:",omitempty"`
Owner string `json:",omitempty"`
Media string `json:",omitempty"`
}

View File

@@ -0,0 +1,5 @@
package dbmodels
type MetaData struct {
Conjecture bool `json:"conjecture"`
}

9
helpers/datatypes/map.go Normal file
View File

@@ -0,0 +1,9 @@
package datatypes
func MakeMap[T any, U comparable](data []T, f func(T) U) map[U]T {
m := make(map[U]T)
for _, v := range data {
m[f(v)] = v
}
return m
}

View File

@@ -1,7 +1,7 @@
package migrations
import (
"github.com/Theodor-Springmann-Stiftung/musenalm/models"
"github.com/Theodor-Springmann-Stiftung/musenalm/dbmodels"
"github.com/pocketbase/pocketbase/core"
m "github.com/pocketbase/pocketbase/migrations"
)
@@ -14,7 +14,7 @@ func init() {
return app.Save(places)
}, func(app core.App) error {
places, err := app.FindCollectionByNameOrId(models.PLACES_TABLE)
places, err := app.FindCollectionByNameOrId(dbmodels.PLACES_TABLE)
if err != nil {
return nil
}
@@ -24,16 +24,16 @@ func init() {
}
func placesTable() *core.Collection {
collection := core.NewBaseCollection(models.PLACES_TABLE)
collection := core.NewBaseCollection(dbmodels.PLACES_TABLE)
setBasicPublicRules(collection)
return collection
}
func placesFields() core.FieldsList {
fields := core.NewFieldsList(
&core.TextField{Name: models.PLACES_NAME_FIELD, Required: true, Presentable: true},
&core.BoolField{Name: models.AGENTS_FICTIONAL_FIELD, Required: false},
&core.URLField{Name: models.URI_FIELD, Required: false, OnlyDomains: []string{"geonames.org"}},
&core.TextField{Name: dbmodels.PLACES_NAME_FIELD, Required: true, Presentable: true},
&core.BoolField{Name: dbmodels.AGENTS_FICTIONAL_FIELD, Required: false},
&core.URLField{Name: dbmodels.URI_FIELD, Required: false, OnlyDomains: []string{"geonames.org"}},
)
setMusenalmIDField(&fields)
@@ -45,6 +45,6 @@ func placesFields() core.FieldsList {
func placesIndexes(collection *core.Collection) {
addMusenalmIDIndex(collection)
addIndex(collection, models.PLACES_NAME_FIELD, false)
addIndex(collection, models.URI_FIELD, true)
addIndex(collection, dbmodels.PLACES_NAME_FIELD, false)
addIndex(collection, dbmodels.URI_FIELD, false)
}

View File

@@ -1,7 +1,7 @@
package migrations
import (
"github.com/Theodor-Springmann-Stiftung/musenalm/models"
"github.com/Theodor-Springmann-Stiftung/musenalm/dbmodels"
"github.com/pocketbase/pocketbase/core"
m "github.com/pocketbase/pocketbase/migrations"
)
@@ -14,7 +14,7 @@ func init() {
return app.Save(agents)
}, func(app core.App) error {
agents, err := app.FindCollectionByNameOrId(models.AGENTS_TABLE)
agents, err := app.FindCollectionByNameOrId(dbmodels.AGENTS_TABLE)
if err != nil {
return nil
}
@@ -24,21 +24,21 @@ func init() {
}
func agentsTable() *core.Collection {
collection := core.NewBaseCollection(models.AGENTS_TABLE)
collection := core.NewBaseCollection(dbmodels.AGENTS_TABLE)
setBasicPublicRules(collection)
return collection
}
func agentsFields() core.FieldsList {
fields := core.NewFieldsList(
&core.TextField{Name: models.AGENTS_NAME_FIELD, Required: true, Presentable: true},
&core.BoolField{Name: models.AGENTS_CORP_FIELD, Required: false},
&core.BoolField{Name: models.AGENTS_FICTIONAL_FIELD, Required: false},
&core.URLField{Name: models.URI_FIELD, Required: false},
&core.TextField{Name: models.AGENTS_BIOGRAPHICAL_DATA_FIELD, Required: false, Presentable: true},
&core.TextField{Name: models.AGENTS_PROFESSION_FIELD, Required: false},
&core.TextField{Name: models.AGENTS_PSEUDONYMS_FIELD, Required: false},
&core.TextField{Name: models.REFERENCES_FIELD, Required: false},
&core.TextField{Name: dbmodels.AGENTS_NAME_FIELD, Required: true, Presentable: true},
&core.BoolField{Name: dbmodels.AGENTS_CORP_FIELD, Required: false},
&core.BoolField{Name: dbmodels.AGENTS_FICTIONAL_FIELD, Required: false},
&core.URLField{Name: dbmodels.URI_FIELD, Required: false},
&core.TextField{Name: dbmodels.AGENTS_BIOGRAPHICAL_DATA_FIELD, Required: false, Presentable: true},
&core.TextField{Name: dbmodels.AGENTS_PROFESSION_FIELD, Required: false},
&core.TextField{Name: dbmodels.AGENTS_PSEUDONYMS_FIELD, Required: false},
&core.TextField{Name: dbmodels.REFERENCES_FIELD, Required: false},
)
setMusenalmIDField(&fields)
@@ -50,6 +50,6 @@ func agentsFields() core.FieldsList {
func agentsIndexes(collection *core.Collection) {
addMusenalmIDIndex(collection)
addIndex(collection, models.AGENTS_NAME_FIELD, false)
addIndex(collection, models.URI_FIELD, true)
addIndex(collection, dbmodels.AGENTS_NAME_FIELD, false)
addIndex(collection, dbmodels.URI_FIELD, false)
}

View File

@@ -1,7 +1,7 @@
package migrations
import (
"github.com/Theodor-Springmann-Stiftung/musenalm/models"
"github.com/Theodor-Springmann-Stiftung/musenalm/dbmodels"
"github.com/pocketbase/pocketbase/core"
m "github.com/pocketbase/pocketbase/migrations"
)
@@ -14,7 +14,7 @@ func init() {
return app.Save(series)
}, func(app core.App) error {
series, err := app.FindCollectionByNameOrId(models.SERIES_TABLE)
series, err := app.FindCollectionByNameOrId(dbmodels.SERIES_TABLE)
if err != nil {
return nil
}
@@ -24,16 +24,17 @@ func init() {
}
func seriesTable() *core.Collection {
collection := core.NewBaseCollection(models.SERIES_TABLE)
collection := core.NewBaseCollection(dbmodels.SERIES_TABLE)
setBasicPublicRules(collection)
return collection
}
func seriesFields() core.FieldsList {
fields := core.NewFieldsList(
&core.TextField{Name: models.SERIES_NAME_FIELD, Required: true, Presentable: true},
&core.TextField{Name: models.SERIES_PSEUDONYMS_FIELD, Required: false},
&core.TextField{Name: models.REFERENCES_FIELD, Required: false},
&core.TextField{Name: dbmodels.SERIES_NAME_FIELD, Required: true, Presentable: true},
&core.TextField{Name: dbmodels.SERIES_PSEUDONYMS_FIELD, Required: false},
&core.TextField{Name: dbmodels.REFERENCES_FIELD, Required: false},
&core.TextField{Name: dbmodels.SERIES_FREQUENCY_FIELD, Required: false},
)
setMusenalmIDField(&fields)

View File

@@ -3,7 +3,7 @@ package migrations
import (
"errors"
"github.com/Theodor-Springmann-Stiftung/musenalm/models"
"github.com/Theodor-Springmann-Stiftung/musenalm/dbmodels"
"github.com/pocketbase/pocketbase/core"
m "github.com/pocketbase/pocketbase/migrations"
)
@@ -21,7 +21,7 @@ func init() {
return app.Save(entries)
}, func(app core.App) error {
entries, err := app.FindCollectionByNameOrId(models.ENTRIES_TABLE)
entries, err := app.FindCollectionByNameOrId(dbmodels.ENTRIES_TABLE)
if err != nil {
return nil
}
@@ -31,87 +31,82 @@ func init() {
}
func entriesTable() *core.Collection {
collection := core.NewBaseCollection(models.ENTRIES_TABLE)
collection := core.NewBaseCollection(dbmodels.ENTRIES_TABLE)
setBasicPublicRules(collection)
return collection
}
func entriesFields(app core.App) *core.FieldsList {
places, err := app.FindCollectionByNameOrId(models.PLACES_TABLE)
places, err := app.FindCollectionByNameOrId(dbmodels.PLACES_TABLE)
if err != nil {
return nil
}
fields := core.NewFieldsList(
// Title information
&core.TextField{Name: models.PREFERRED_TITLE_FIELD, Required: true, Presentable: true},
&core.TextField{Name: models.VARIANT_TITLE_FIELD, Required: false, Presentable: false},
&core.BoolField{Name: models.PARALLEL_TITLE_FIELD, Required: false},
&core.TextField{Name: dbmodels.PREFERRED_TITLE_FIELD, Required: true, Presentable: true},
&core.TextField{Name: dbmodels.VARIANT_TITLE_FIELD, Required: false, Presentable: false},
&core.TextField{Name: dbmodels.PARALLEL_TITLE_FIELD, Required: false},
// Transcribed information
&core.TextField{Name: models.TITLE_STMT_FIELD, Required: false, Presentable: false},
&core.TextField{Name: models.SUBTITLE_STMT_FIELD, Required: false, Presentable: false},
&core.TextField{Name: models.INCIPIT_STMT_FIELD, Required: false, Presentable: false},
&core.TextField{Name: dbmodels.TITLE_STMT_FIELD, Required: false, Presentable: false},
&core.TextField{Name: dbmodels.SUBTITLE_STMT_FIELD, Required: false, Presentable: false},
&core.TextField{Name: dbmodels.INCIPIT_STMT_FIELD, Required: false, Presentable: false},
&core.TextField{Name: models.RESPONSIBILITY_STMT_FIELD, Required: false, Presentable: false},
&core.TextField{Name: models.PLACE_STMT_FIELD, Required: false, Presentable: false},
&core.TextField{Name: models.PUBLICATION_STMT_FIELD, Required: false, Presentable: false},
&core.TextField{Name: dbmodels.RESPONSIBILITY_STMT_FIELD, Required: false, Presentable: false},
&core.TextField{Name: dbmodels.PLACE_STMT_FIELD, Required: false, Presentable: false},
&core.TextField{Name: dbmodels.PUBLICATION_STMT_FIELD, Required: false, Presentable: false},
// Other discerning Information
&core.NumberField{Name: models.YEAR_FIELD, Required: false},
&core.TextField{Name: models.EDITION_FIELD, Required: false},
&core.NumberField{Name: dbmodels.YEAR_FIELD, Required: false},
&core.TextField{Name: dbmodels.EDITION_FIELD, Required: false},
// Media Information
&core.SelectField{
Name: models.LANGUAGE_FIELD,
Name: dbmodels.LANGUAGE_FIELD,
Required: false,
Values: models.LANGUAGE_VALUES,
MaxSelect: len(models.LANGUAGE_VALUES),
Values: dbmodels.LANGUAGE_VALUES,
MaxSelect: len(dbmodels.LANGUAGE_VALUES),
},
&core.SelectField{
Name: models.CONTENT_TYPE_FIELD,
Name: dbmodels.CONTENT_TYPE_FIELD,
Required: false,
Values: models.CONTENT_TYPE_VALUES,
MaxSelect: len(models.CONTENT_TYPE_VALUES),
Values: dbmodels.CONTENT_TYPE_VALUES,
MaxSelect: len(dbmodels.CONTENT_TYPE_VALUES),
},
// Physical Description
&core.TextField{Name: models.EXTENT_FIELD, Required: false},
&core.TextField{Name: models.DIMENSIONS_FIELD, Required: false},
&core.TextField{Name: dbmodels.EXTENT_FIELD, Required: false},
&core.TextField{Name: dbmodels.DIMENSIONS_FIELD, Required: false},
&core.SelectField{
Name: models.CARRIER_TYPE_FIELD,
Name: dbmodels.CARRIER_TYPE_FIELD,
Required: false,
Values: models.MEDIA_TYPE_VALUES,
MaxSelect: len(models.MEDIA_TYPE_VALUES),
Values: dbmodels.MEDIA_TYPE_VALUES,
MaxSelect: len(dbmodels.MEDIA_TYPE_VALUES),
},
&core.SelectField{
Name: models.CARRIER_TYPE_FIELD,
Name: dbmodels.CARRIER_TYPE_FIELD,
Required: false,
Values: models.CARRIER_TYPE_VALUES,
MaxSelect: len(models.CARRIER_TYPE_VALUES),
Values: dbmodels.CARRIER_TYPE_VALUES,
MaxSelect: len(dbmodels.CARRIER_TYPE_VALUES),
},
// Norm Data
&core.TextField{Name: models.REFERENCES_FIELD, Required: false},
&core.TextField{Name: dbmodels.REFERENCES_FIELD, Required: false},
&core.RelationField{
Name: models.PLACES_TABLE,
Name: dbmodels.PLACES_TABLE,
Required: false,
CollectionId: places.Id,
CascadeDelete: false,
MaxSelect: 5000,
},
// Musenalm specific data
&core.SelectField{
Name: models.MUSENALM_BAENDE_STATUS_FIELD,
Required: false,
Values: models.MUSENALM_STATUS_VALUES,
MaxSelect: len(models.MUSENALM_STATUS_VALUES),
},
&core.JSONField{Name: models.MUSENALM_DEPRECATED_FIELD, Required: false},
// Exemplare:
&core.JSONField{Name: models.ITEMS_TABLE, Required: false},
&core.JSONField{Name: dbmodels.ITEMS_TABLE, Required: false},
// EDIT DATA:
&core.JSONField{Name: dbmodels.META_FIELD, Required: false},
&core.JSONField{Name: dbmodels.MUSENALM_DEPRECATED_FIELD, Required: false},
)
setMusenalmIDField(&fields)
@@ -123,15 +118,15 @@ func entriesFields(app core.App) *core.FieldsList {
func entriesIndexes(collection *core.Collection) {
addMusenalmIDIndex(collection)
addIndex(collection, models.PREFERRED_TITLE_FIELD, false)
addIndex(collection, models.VARIANT_TITLE_FIELD, false)
addIndex(collection, models.PARALLEL_TITLE_FIELD, false)
addIndex(collection, models.TITLE_STMT_FIELD, false)
addIndex(collection, models.SUBTITLE_STMT_FIELD, false)
addIndex(collection, models.INCIPIT_STMT_FIELD, false)
addIndex(collection, models.RESPONSIBILITY_STMT_FIELD, false)
addIndex(collection, models.PLACE_STMT_FIELD, false)
addIndex(collection, models.PUBLICATION_STMT_FIELD, false)
addIndex(collection, models.YEAR_FIELD, false)
addIndex(collection, models.EDITION_FIELD, false)
addIndex(collection, dbmodels.PREFERRED_TITLE_FIELD, false)
addIndex(collection, dbmodels.VARIANT_TITLE_FIELD, false)
addIndex(collection, dbmodels.PARALLEL_TITLE_FIELD, false)
addIndex(collection, dbmodels.TITLE_STMT_FIELD, false)
addIndex(collection, dbmodels.SUBTITLE_STMT_FIELD, false)
addIndex(collection, dbmodels.INCIPIT_STMT_FIELD, false)
addIndex(collection, dbmodels.RESPONSIBILITY_STMT_FIELD, false)
addIndex(collection, dbmodels.PLACE_STMT_FIELD, false)
addIndex(collection, dbmodels.PUBLICATION_STMT_FIELD, false)
addIndex(collection, dbmodels.YEAR_FIELD, false)
addIndex(collection, dbmodels.EDITION_FIELD, false)
}

View File

@@ -1,23 +1,23 @@
package migrations
import (
"github.com/Theodor-Springmann-Stiftung/musenalm/models"
"github.com/Theodor-Springmann-Stiftung/musenalm/dbmodels"
"github.com/pocketbase/pocketbase/core"
m "github.com/pocketbase/pocketbase/migrations"
)
func init() {
m.Register(func(app core.App) error {
collection, err := basicRelationCollection(app, models.ENTRIES_TABLE, models.SERIES_TABLE, models.SERIES_RELATIONS)
collection, err := basicRelationCollection(app, dbmodels.ENTRIES_TABLE, dbmodels.SERIES_TABLE, dbmodels.SERIES_RELATIONS)
if err != nil {
return err
}
collection.Fields.Add(&core.TextField{Name: models.NUMBERING_FIELD, Required: false, Presentable: true})
collection.Fields.Add(&core.TextField{Name: dbmodels.NUMBERING_FIELD, Required: false, Presentable: true})
return app.Save(collection)
}, func(app core.App) error {
collection, err := app.FindCollectionByNameOrId(models.RelationTableName(models.ENTRIES_TABLE, models.SERIES_TABLE))
collection, err := app.FindCollectionByNameOrId(dbmodels.RelationTableName(dbmodels.ENTRIES_TABLE, dbmodels.SERIES_TABLE))
if err != nil {
return nil
}

View File

@@ -3,7 +3,7 @@ package migrations
import (
"errors"
"github.com/Theodor-Springmann-Stiftung/musenalm/models"
"github.com/Theodor-Springmann-Stiftung/musenalm/dbmodels"
"github.com/pocketbase/pocketbase/core"
m "github.com/pocketbase/pocketbase/migrations"
)
@@ -21,7 +21,7 @@ func init() {
return app.Save(partials)
}, func(app core.App) error {
partials, err := app.FindCollectionByNameOrId(models.PARTIALS_TABLE)
partials, err := app.FindCollectionByNameOrId(dbmodels.PARTIALS_TABLE)
if err != nil {
return nil
}
@@ -31,92 +31,92 @@ func init() {
}
func partialsTable() *core.Collection {
collection := core.NewBaseCollection(models.PARTIALS_TABLE)
collection := core.NewBaseCollection(dbmodels.PARTIALS_TABLE)
setBasicPublicRules(collection)
return collection
}
func partialsFields(app core.App) *core.FieldsList {
entries, err := app.FindCollectionByNameOrId(models.ENTRIES_TABLE)
entries, err := app.FindCollectionByNameOrId(dbmodels.ENTRIES_TABLE)
if err != nil {
return nil
}
fields := core.NewFieldsList(
// Title information
&core.TextField{Name: models.PREFERRED_TITLE_FIELD, Required: true, Presentable: true},
&core.TextField{Name: models.VARIANT_TITLE_FIELD, Required: false, Presentable: false},
&core.BoolField{Name: models.PARALLEL_TITLE_FIELD, Required: false},
&core.TextField{Name: dbmodels.PREFERRED_TITLE_FIELD, Required: true, Presentable: true},
&core.TextField{Name: dbmodels.VARIANT_TITLE_FIELD, Required: false, Presentable: false},
&core.BoolField{Name: dbmodels.PARALLEL_TITLE_FIELD, Required: false},
// Transcribed information
&core.TextField{Name: models.TITLE_STMT_FIELD, Required: false, Presentable: false},
&core.TextField{Name: models.SUBTITLE_STMT_FIELD, Required: false, Presentable: false},
&core.TextField{Name: models.INCIPIT_STMT_FIELD, Required: false, Presentable: false},
&core.TextField{Name: dbmodels.TITLE_STMT_FIELD, Required: false, Presentable: false},
&core.TextField{Name: dbmodels.SUBTITLE_STMT_FIELD, Required: false, Presentable: false},
&core.TextField{Name: dbmodels.INCIPIT_STMT_FIELD, Required: false, Presentable: false},
&core.TextField{Name: models.RESPONSIBILITY_STMT_FIELD, Required: false, Presentable: false},
&core.TextField{Name: models.PLACE_STMT_FIELD, Required: false, Presentable: false},
&core.TextField{Name: models.PUBLICATION_STMT_FIELD, Required: false, Presentable: false},
&core.TextField{Name: dbmodels.RESPONSIBILITY_STMT_FIELD, Required: false, Presentable: false},
&core.TextField{Name: dbmodels.PLACE_STMT_FIELD, Required: false, Presentable: false},
&core.TextField{Name: dbmodels.PUBLICATION_STMT_FIELD, Required: false, Presentable: false},
// Other discerning Information
&core.NumberField{Name: models.YEAR_FIELD, Required: false},
&core.TextField{Name: models.EDITION_FIELD, Required: false},
&core.NumberField{Name: dbmodels.YEAR_FIELD, Required: false},
&core.TextField{Name: dbmodels.EDITION_FIELD, Required: false},
// Media Information
&core.SelectField{
Name: models.LANGUAGE_FIELD,
Name: dbmodels.LANGUAGE_FIELD,
Required: false,
Values: models.LANGUAGE_VALUES,
MaxSelect: len(models.LANGUAGE_VALUES),
Values: dbmodels.LANGUAGE_VALUES,
MaxSelect: len(dbmodels.LANGUAGE_VALUES),
},
&core.SelectField{
Name: models.CONTENT_TYPE_FIELD,
Name: dbmodels.CONTENT_TYPE_FIELD,
Required: false,
Values: models.CONTENT_TYPE_VALUES,
MaxSelect: len(models.CONTENT_TYPE_VALUES),
Values: dbmodels.CONTENT_TYPE_VALUES,
MaxSelect: len(dbmodels.CONTENT_TYPE_VALUES),
},
// Physical Description
&core.TextField{Name: models.EXTENT_FIELD, Required: false},
&core.TextField{Name: models.DIMENSIONS_FIELD, Required: false},
&core.TextField{Name: dbmodels.EXTENT_FIELD, Required: false},
&core.TextField{Name: dbmodels.DIMENSIONS_FIELD, Required: false},
&core.SelectField{
Name: models.MEDIA_TYPE_FIELD,
Name: dbmodels.MEDIA_TYPE_FIELD,
Required: false,
Values: models.MEDIA_TYPE_VALUES,
MaxSelect: len(models.MEDIA_TYPE_VALUES),
Values: dbmodels.MEDIA_TYPE_VALUES,
MaxSelect: len(dbmodels.MEDIA_TYPE_VALUES),
},
&core.SelectField{
Name: models.CARRIER_TYPE_FIELD,
Name: dbmodels.CARRIER_TYPE_FIELD,
Required: false,
Values: models.CARRIER_TYPE_VALUES,
MaxSelect: len(models.CARRIER_TYPE_VALUES),
Values: dbmodels.CARRIER_TYPE_VALUES,
MaxSelect: len(dbmodels.CARRIER_TYPE_VALUES),
},
// Musenalm specific data
&core.SelectField{
Name: models.MUSENALM_INHALTE_TYPE_FIELD,
Name: dbmodels.MUSENALM_INHALTE_TYPE_FIELD,
Required: false,
Values: models.MUSENALM_TYPE_VALUES,
MaxSelect: len(models.MUSENALM_TYPE_VALUES),
Values: dbmodels.MUSENALM_TYPE_VALUES,
MaxSelect: len(dbmodels.MUSENALM_TYPE_VALUES),
},
&core.SelectField{
Name: models.MUSENALM_PAGINATION_FIELD,
Name: dbmodels.MUSENALM_PAGINATION_FIELD,
Required: false,
Values: models.MUSENALM_PAGINATION_VALUES,
MaxSelect: len(models.MUSENALM_PAGINATION_VALUES),
Values: dbmodels.MUSENALM_PAGINATION_VALUES,
MaxSelect: len(dbmodels.MUSENALM_PAGINATION_VALUES),
},
&core.FileField{
Name: models.SCAN_FIELD,
Name: dbmodels.SCAN_FIELD,
Required: false,
MaxSize: 100 * 1024 * 1024,
MaxSelect: 1000,
MimeTypes: models.MUSENALM_MIME_TYPES,
MimeTypes: dbmodels.MUSENALM_MIME_TYPES,
Thumbs: []string{"0x300", "0x500", "0x1000", "300x0", "500x0", "1000x0"},
}, // 100 MB a file
// Band:
&core.NumberField{Name: models.NUMBERING_FIELD, Required: false},
&core.NumberField{Name: dbmodels.NUMBERING_FIELD, Required: false},
&core.RelationField{
Name: models.ENTRIES_TABLE,
Name: dbmodels.ENTRIES_TABLE,
Required: true,
CollectionId: entries.Id,
CascadeDelete: false,
@@ -134,15 +134,15 @@ func partialsFields(app core.App) *core.FieldsList {
func partialsIndexes(collection *core.Collection) {
addMusenalmIDIndex(collection)
addIndex(collection, models.PREFERRED_TITLE_FIELD, false)
addIndex(collection, models.VARIANT_TITLE_FIELD, false)
addIndex(collection, models.PARALLEL_TITLE_FIELD, false)
addIndex(collection, models.TITLE_STMT_FIELD, false)
addIndex(collection, models.SUBTITLE_STMT_FIELD, false)
addIndex(collection, models.INCIPIT_STMT_FIELD, false)
addIndex(collection, models.RESPONSIBILITY_STMT_FIELD, false)
addIndex(collection, models.PLACE_STMT_FIELD, false)
addIndex(collection, models.PUBLICATION_STMT_FIELD, false)
addIndex(collection, models.YEAR_FIELD, false)
addIndex(collection, models.EDITION_FIELD, false)
addIndex(collection, dbmodels.PREFERRED_TITLE_FIELD, false)
addIndex(collection, dbmodels.VARIANT_TITLE_FIELD, false)
addIndex(collection, dbmodels.PARALLEL_TITLE_FIELD, false)
addIndex(collection, dbmodels.TITLE_STMT_FIELD, false)
addIndex(collection, dbmodels.SUBTITLE_STMT_FIELD, false)
addIndex(collection, dbmodels.INCIPIT_STMT_FIELD, false)
addIndex(collection, dbmodels.RESPONSIBILITY_STMT_FIELD, false)
addIndex(collection, dbmodels.PLACE_STMT_FIELD, false)
addIndex(collection, dbmodels.PUBLICATION_STMT_FIELD, false)
addIndex(collection, dbmodels.YEAR_FIELD, false)
addIndex(collection, dbmodels.EDITION_FIELD, false)
}

View File

@@ -1,21 +1,21 @@
package migrations
import (
"github.com/Theodor-Springmann-Stiftung/musenalm/models"
"github.com/Theodor-Springmann-Stiftung/musenalm/dbmodels"
"github.com/pocketbase/pocketbase/core"
m "github.com/pocketbase/pocketbase/migrations"
)
func init() {
m.Register(func(app core.App) error {
collections, err := basicRelationCollection(app, models.PARTIALS_TABLE, models.AGENTS_TABLE, models.AGENT_RELATIONS)
collections, err := basicRelationCollection(app, dbmodels.PARTIALS_TABLE, dbmodels.AGENTS_TABLE, dbmodels.AGENT_RELATIONS)
if err != nil {
return err
}
return app.Save(collections)
}, func(app core.App) error {
collection, err := app.FindCollectionByNameOrId(models.RelationTableName(models.PARTIALS_TABLE, models.AGENTS_TABLE))
collection, err := app.FindCollectionByNameOrId(dbmodels.RelationTableName(dbmodels.PARTIALS_TABLE, dbmodels.AGENTS_TABLE))
if err != nil {
return nil
}

View File

@@ -1,21 +1,21 @@
package migrations
import (
"github.com/Theodor-Springmann-Stiftung/musenalm/models"
"github.com/Theodor-Springmann-Stiftung/musenalm/dbmodels"
"github.com/pocketbase/pocketbase/core"
m "github.com/pocketbase/pocketbase/migrations"
)
func init() {
m.Register(func(app core.App) error {
collections, err := basicRelationCollection(app, models.ENTRIES_TABLE, models.AGENTS_TABLE, models.AGENT_RELATIONS)
collections, err := basicRelationCollection(app, dbmodels.ENTRIES_TABLE, dbmodels.AGENTS_TABLE, dbmodels.AGENT_RELATIONS)
if err != nil {
return err
}
return app.Save(collections)
}, func(app core.App) error {
collection, err := app.FindCollectionByNameOrId(models.RelationTableName(models.ENTRIES_TABLE, models.AGENTS_TABLE))
collection, err := app.FindCollectionByNameOrId(dbmodels.RelationTableName(dbmodels.ENTRIES_TABLE, dbmodels.AGENTS_TABLE))
if err != nil {
return nil
}

View File

@@ -0,0 +1,48 @@
package migrations
import (
"github.com/Theodor-Springmann-Stiftung/musenalm/dbmodels"
"github.com/Theodor-Springmann-Stiftung/musenalm/migrations/seed"
"github.com/Theodor-Springmann-Stiftung/musenalm/xmlmodels"
"github.com/pocketbase/pocketbase/core"
m "github.com/pocketbase/pocketbase/migrations"
)
func init() {
m.Register(func(app core.App) error {
adb, err := xmlmodels.ReadAccessDB(xmlmodels.DATA_PATH)
if err != nil {
return err
}
*adb.Reihen = xmlmodels.SanitizeReihen(*adb.Reihen, *adb.Relationen_Bände_Reihen)
seed.SeedTableAgents(app, *adb.Akteure)
seed.SeedTablePlaces(app, *adb.Orte)
seed.SeedTableSeries(app, *adb.Reihen)
seed.SeedTableEntries(app, *adb.Bände, *adb.BIBLIO, *adb.Orte)
return nil
}, func(app core.App) error {
return delete_data(app)
})
}
func delete_data(app core.App) error {
_ = deleteTableContents(app, dbmodels.RelationTableName(dbmodels.ENTRIES_TABLE, dbmodels.SERIES_TABLE))
_ = deleteTableContents(app, dbmodels.RelationTableName(dbmodels.ENTRIES_TABLE, dbmodels.AGENTS_TABLE))
_ = deleteTableContents(app, dbmodels.RelationTableName(dbmodels.PARTIALS_TABLE, dbmodels.AGENTS_TABLE))
_ = deleteTableContents(app, dbmodels.PARTIALS_TABLE)
_ = deleteTableContents(app, dbmodels.ENTRIES_TABLE)
_ = deleteTableContents(app, dbmodels.SERIES_TABLE)
_ = deleteTableContents(app, dbmodels.AGENTS_TABLE)
_ = deleteTableContents(app, dbmodels.PLACES_TABLE)
return nil
}
func deleteTableContents(app core.App, table string) error {
_, err := app.DB().NewQuery("DELETE FROM " + table).Execute()
if err != nil {
return err
}
return nil
}

View File

@@ -1,30 +1,30 @@
package migrations
import (
"github.com/Theodor-Springmann-Stiftung/musenalm/models"
"github.com/Theodor-Springmann-Stiftung/musenalm/dbmodels"
"github.com/pocketbase/pocketbase/core"
"github.com/pocketbase/pocketbase/tools/types"
)
func setBasicPublicRules(collection *core.Collection) {
collection.ViewRule = types.Pointer(models.PUBLIC_VIEW_RULE)
collection.ViewRule = types.Pointer(dbmodels.PUBLIC_VIEW_RULE)
}
func setMusenalmIDField(fieldlist *core.FieldsList) {
fieldlist.Add(&core.TextField{Name: models.MUSENALMID_FIELD, Max: 64, Required: false})
fieldlist.Add(&core.TextField{Name: dbmodels.MUSENALMID_FIELD, Max: 64, Required: false})
}
func setEditorStateField(fieldlist *core.FieldsList) {
fieldlist.Add(&core.SelectField{Name: models.EDITSTATE_FIELD, Required: false, Values: models.EDITORSTATE_VALUES})
fieldlist.Add(&core.SelectField{Name: dbmodels.EDITSTATE_FIELD, Required: false, Values: dbmodels.EDITORSTATE_VALUES})
}
func setNotesAndAnnotationsField(fieldlist *core.FieldsList) {
fieldlist.Add(&core.EditorField{Name: models.ANNOTATION_FIELD, Required: false, ConvertURLs: false})
fieldlist.Add(&core.EditorField{Name: models.COMMENT_FIELD, Required: false, ConvertURLs: false})
fieldlist.Add(&core.EditorField{Name: dbmodels.ANNOTATION_FIELD, Required: false, ConvertURLs: false})
fieldlist.Add(&core.EditorField{Name: dbmodels.COMMENT_FIELD, Required: false, ConvertURLs: false})
}
func addMusenalmIDIndex(collection *core.Collection) {
addIndex(collection, models.MUSENALMID_FIELD, true)
addIndex(collection, dbmodels.MUSENALMID_FIELD, true)
}
func addIndex(collection *core.Collection, field string, unique bool) {
@@ -43,15 +43,15 @@ func basicRelationCollection(app core.App, sourcetablename, targettablename stri
return nil, err
}
collection := core.NewBaseCollection(models.RelationTableName(stable.Name, ttable.Name))
collection := core.NewBaseCollection(dbmodels.RelationTableName(stable.Name, ttable.Name))
setBasicPublicRules(collection)
fields := core.NewFieldsList(
&core.RelationField{Name: stable.Name, Required: true, CollectionId: stable.Id, MinSelect: 1, MaxSelect: 1},
&core.RelationField{Name: ttable.Name, Required: true, CollectionId: ttable.Id, MinSelect: 1, MaxSelect: 1},
&core.SelectField{Name: models.RELATION_TYPE_FIELD, Required: true, Values: relations, MaxSelect: 1},
&core.BoolField{Name: models.RELATION_CONJECTURE_FIELD, Required: false},
&core.BoolField{Name: models.RELATION_UNCERTAIN_FIELD, Required: false},
&core.SelectField{Name: dbmodels.RELATION_TYPE_FIELD, Required: true, Values: relations, MaxSelect: 1},
&core.BoolField{Name: dbmodels.RELATION_CONJECTURE_FIELD, Required: false},
&core.BoolField{Name: dbmodels.RELATION_UNCERTAIN_FIELD, Required: false},
)
setNotesAndAnnotationsField(&fields)
@@ -59,7 +59,7 @@ func basicRelationCollection(app core.App, sourcetablename, targettablename stri
collection.Fields = fields
addIndex(collection, stable.Name, false)
addIndex(collection, ttable.Name, false)
addIndex(collection, models.RELATION_TYPE_FIELD, false)
addIndex(collection, dbmodels.RELATION_TYPE_FIELD, false)
return collection, nil
}

View File

@@ -1 +0,0 @@
package migrations

41
migrations/seed/agents.go Normal file
View File

@@ -0,0 +1,41 @@
package seed
import (
"fmt"
"github.com/Theodor-Springmann-Stiftung/musenalm/dbmodels"
"github.com/Theodor-Springmann-Stiftung/musenalm/xmlmodels"
"github.com/pocketbase/pocketbase/core"
)
func SeedTableAgents(app core.App, akteure xmlmodels.Akteure) error {
collection, err := app.FindCollectionByNameOrId(dbmodels.AGENTS_TABLE)
records := make([]*core.Record, 0, len(akteure.Akteure))
if err != nil {
fmt.Println(err)
}
for i := 0; i < len(akteure.Akteure); i++ {
record := core.NewRecord(collection)
akteur := akteure.Akteure[i]
record.Set(dbmodels.AGENTS_CORP_FIELD, akteur.Körperschaft)
record.Set(dbmodels.AGENTS_NAME_FIELD, NormalizeString(akteur.Name))
record.Set(dbmodels.REFERENCES_FIELD, NormalizeString(akteur.Nachweis))
record.Set(dbmodels.AGENTS_BIOGRAPHICAL_DATA_FIELD, NormalizeString(akteur.Lebensdaten))
record.Set(dbmodels.AGENTS_PROFESSION_FIELD, NormalizeString(akteur.Beruf))
record.Set(dbmodels.AGENTS_PSEUDONYMS_FIELD, NormalizeString(akteur.Pseudonyme))
record.Set(dbmodels.ANNOTATION_FIELD, NormalizeString(akteur.Anmerkungen))
record.Set(dbmodels.MUSENALMID_FIELD, akteur.ID)
n := akteur.Name
if n == "" {
record.Set(dbmodels.EDITSTATE_FIELD, dbmodels.EDITORSTATE_VALUES[1])
} else {
record.Set(dbmodels.EDITSTATE_FIELD, dbmodels.EDITORSTATE_VALUES[len(dbmodels.EDITORSTATE_VALUES)-1])
}
records = append(records, record)
}
return batchSave(app, records)
}

28
migrations/seed/common.go Normal file
View File

@@ -0,0 +1,28 @@
package seed
import (
"strings"
"github.com/pocketbase/pocketbase/core"
)
func NormalizeString(s string) string {
s = strings.TrimSpace(s)
s = strings.ReplaceAll(s, "<div>", "")
s = strings.ReplaceAll(s, "</div>", "")
return s
}
func batchSave(app core.App, records []*core.Record) error {
app.RunInTransaction(func(txapp core.App) error {
for _, record := range records {
if err := txapp.Save(record); err != nil {
app.Logger().Error("Error saving record.", "error", err, "record", record)
continue
}
}
return nil
})
return nil
}

224
migrations/seed/entries.go Normal file
View File

@@ -0,0 +1,224 @@
package seed
import (
"fmt"
"regexp"
"strconv"
"strings"
"github.com/Theodor-Springmann-Stiftung/musenalm/dbmodels"
"github.com/Theodor-Springmann-Stiftung/musenalm/helpers/datatypes"
"github.com/Theodor-Springmann-Stiftung/musenalm/xmlmodels"
"github.com/pocketbase/pocketbase/core"
)
func SeedTableEntries(
app core.App,
entries xmlmodels.Bände,
biblio map[int]xmlmodels.BIBLIOEintrag,
orte xmlmodels.Orte,
) error {
collection, err := app.FindCollectionByNameOrId(dbmodels.ENTRIES_TABLE)
records := make([]*core.Record, 0, len(entries.Bände))
r := regexp.MustCompile("\\d{6}")
if err != nil {
fmt.Println(err)
}
omap := datatypes.MakeMap(orte.Orte, func(o xmlmodels.Ort) string { return o.ID })
ocoll, err := app.FindCollectionByNameOrId(dbmodels.PLACES_TABLE)
if err != nil {
app.Logger().Error("Error finding collection", "error", err, "collection", dbmodels.PLACES_TABLE)
return err
}
for i := 0; i < len(entries.Bände); i++ {
band := entries.Bände[i]
record := core.NewRecord(collection)
// TODO: Hier bevorzugter reihentitel + jahr, oder irgendein reihentitel, oder reihentitelALT
if band.ReihentitelALT == "" {
continue
}
record.Set(dbmodels.PREFERRED_TITLE_FIELD, NormalizeString(band.ReihentitelALT))
record.Set(dbmodels.TITLE_STMT_FIELD, NormalizeString(band.Titelangabe))
record.Set(dbmodels.REFERENCES_FIELD, NormalizeString(band.Nachweis))
record.Set(dbmodels.ANNOTATION_FIELD, NormalizeString(band.Anmerkungen))
if band.Jahr != 0 {
record.Set(dbmodels.YEAR_FIELD, band.Jahr)
}
record.Set(dbmodels.RESPONSIBILITY_STMT_FIELD, NormalizeString(band.Verantwortlichkeitsangabe))
record.Set(dbmodels.PUBLICATION_STMT_FIELD, NormalizeString(band.Ortsangabe))
record.Set(dbmodels.EXTENT_FIELD, NormalizeString(band.Struktur))
record.Set(dbmodels.CARRIER_TYPE_FIELD, "Band")
record.Set(dbmodels.CONTENT_TYPE_FIELD, []string{"unbewegtes Bild", "Text"})
record.Set(dbmodels.MEDIA_TYPE_FIELD, "ohne Hilfsmittel")
record.Set(dbmodels.LANGUAGE_FIELD, "ger")
record.Set(dbmodels.MUSENALMID_FIELD, band.ID)
if band.Erfasst {
record.Set(dbmodels.EDITSTATE_FIELD, dbmodels.EDITORSTATE_VALUES[len(dbmodels.EDITORSTATE_VALUES)-1])
} else if band.Gesichtet {
record.Set(dbmodels.EDITSTATE_FIELD, dbmodels.EDITORSTATE_VALUES[2])
} else if band.BiblioID != 0 {
record.Set(dbmodels.EDITSTATE_FIELD, dbmodels.EDITORSTATE_VALUES[1])
} else {
record.Set(dbmodels.EDITSTATE_FIELD, dbmodels.EDITORSTATE_VALUES[0])
}
handleDeprecated(record, band)
handleItems(r, band, &biblio, record)
handleOrte(record, band, omap, app, ocoll)
records = append(records, record)
}
return batchSave(app, records)
}
func handleOrte(
record *core.Record,
band xmlmodels.Band,
orte map[string]xmlmodels.Ort,
app core.App,
ocollection *core.Collection,
) {
for _, v := range band.Orte {
o, ok := orte[v.Value]
if ok {
n := NormalizeString(o.Name)
e := false
if strings.HasPrefix(n, "[") {
n = n[1 : len(n)-1]
e = true
}
ort, err := app.FindFirstRecordByData(dbmodels.PLACES_TABLE, dbmodels.PLACES_NAME_FIELD, n)
if err == nil {
before := record.GetStringSlice(dbmodels.PLACES_TABLE)
record.Set(dbmodels.PLACES_TABLE, append(before, ort.Id))
} else {
orec := core.NewRecord(ocollection)
orec.Set(dbmodels.PLACES_NAME_FIELD, n)
orec.Set(dbmodels.ANNOTATION_FIELD, o.Anmerkungen)
orec.Set(dbmodels.PLACES_FICTIONAL_FIELD, o.Fiktiv)
orec.Set(dbmodels.EDITSTATE_FIELD, dbmodels.EDITORSTATE_VALUES[len(dbmodels.EDITORSTATE_VALUES)-1])
if err := app.Save(orec); err != nil {
app.Logger().Error("Error saving record", "error", err, "record", orec)
continue
} else {
before := record.GetStringSlice(dbmodels.PLACES_TABLE)
record.Set(dbmodels.PLACES_TABLE, append(before, orec.Id))
}
}
if e {
// INFO: We do not need to get the record metadata here, as we know that the record is new
record.Set(
dbmodels.META_FIELD,
map[string]dbmodels.MetaData{dbmodels.PLACES_TABLE: {Conjecture: true}},
)
}
}
}
}
func handleDeprecated(record *core.Record, band xmlmodels.Band) {
depr := dbmodels.Deprecated{
Reihentitel: NormalizeString(band.ReihentitelALT),
Norm: NormalizeString(band.Norm),
BiblioID: band.BiblioID,
Status: band.Status.Value,
}
record.Set(dbmodels.MUSENALM_DEPRECATED_FIELD, depr)
}
func handleItems(r *regexp.Regexp, band xmlmodels.Band, biblio *map[int]xmlmodels.BIBLIOEintrag, record *core.Record) {
nst := NormalizeString(band.Norm)
matches := r.FindAllStringSubmatchIndex(nst, -1)
t := map[string]string{}
for i, m := range matches {
nr := nst[m[0]:m[1]]
end := len(nst)
if m[1] >= len(nst) {
t[nr] = ""
continue
}
if len(matches)-1 > i {
end = matches[i+1][0]
}
rest := nst[m[1]:end]
var last []rune
for y, c := range rest {
if c == '\\' && y < len(rest)-1 && rest[y+1] == ')' {
break
}
if c != '(' && c != ')' {
last = append(last, c)
}
}
if last != nil && len(last) > 0 {
t[nr] = string(last)
}
}
var exemlist []dbmodels.Exemplar
if band.BiblioID != 0 {
exem := dbmodels.Exemplar{Identifier: strconv.Itoa(band.BiblioID)}
if e, ok := (*biblio)[band.BiblioID]; ok {
exem.Location = strings.TrimSpace(e.Standort)
exem.Condition = strings.TrimSpace(e.Zustand)
message := ""
message = appendMessage(e.NotizÄusseres, message)
message = appendMessage(e.NotizInhalt, message)
message = appendMessage(e.Anmerkungen, message)
exem.Annotation = message
}
exemlist = append(exemlist, exem)
}
for nr, m := range t {
exem := dbmodels.Exemplar{Identifier: nr}
no, err := strconv.Atoi(strings.TrimSpace(nr))
message := strings.TrimSpace(m)
if err != nil {
if e, ok := (*biblio)[no]; ok {
exem.Location = strings.TrimSpace(e.Standort)
exem.Condition = strings.TrimSpace(e.Zustand)
message = appendMessage(e.NotizÄusseres, message)
message = appendMessage(e.NotizInhalt, message)
message = appendMessage(e.Anmerkungen, message)
}
}
exem.Annotation = message
if exem.Identifier != "" {
exemlist = append(exemlist, exem)
}
}
if len(exemlist) > 0 {
record.Set(dbmodels.ITEMS_TABLE, exemlist)
}
}
func appendMessage(message string, toAppend string) string {
notiza := strings.TrimSpace(toAppend)
if notiza != "" {
if message != "" {
message += "\n"
}
message += notiza
}
return message
}

37
migrations/seed/places.go Normal file
View File

@@ -0,0 +1,37 @@
package seed
import (
"fmt"
"github.com/Theodor-Springmann-Stiftung/musenalm/dbmodels"
"github.com/Theodor-Springmann-Stiftung/musenalm/xmlmodels"
"github.com/pocketbase/pocketbase/core"
)
func SeedTablePlaces(app core.App, orte xmlmodels.Orte) error {
collection, err := app.FindCollectionByNameOrId(dbmodels.PLACES_TABLE)
records := make([]*core.Record, 0, len(orte.Orte))
if err != nil {
fmt.Println(err)
}
for i := 0; i < len(orte.Orte); i++ {
ort := orte.Orte[i]
record := core.NewRecord(collection)
record.Set(dbmodels.PLACES_NAME_FIELD, NormalizeString(ort.Name))
record.Set(dbmodels.ANNOTATION_FIELD, NormalizeString(ort.Anmerkungen))
record.Set(dbmodels.PLACES_FICTIONAL_FIELD, ort.Fiktiv)
record.Set(dbmodels.MUSENALMID_FIELD, ort.ID)
n := ort.Name
if n == "" {
record.Set(dbmodels.EDITSTATE_FIELD, dbmodels.EDITORSTATE_VALUES[1])
} else {
record.Set(dbmodels.EDITSTATE_FIELD, dbmodels.EDITORSTATE_VALUES[len(dbmodels.EDITORSTATE_VALUES)-1])
}
records = append(records, record)
}
return batchSave(app, records)
}

43
migrations/seed/series.go Normal file
View File

@@ -0,0 +1,43 @@
package seed
import (
"fmt"
"github.com/Theodor-Springmann-Stiftung/musenalm/dbmodels"
"github.com/Theodor-Springmann-Stiftung/musenalm/xmlmodels"
"github.com/pocketbase/pocketbase/core"
)
func SeedTableSeries(app core.App, reihen xmlmodels.Reihentitel) error {
collection, err := app.FindCollectionByNameOrId(dbmodels.SERIES_TABLE)
records := make([]*core.Record, 0, len(reihen.Reihen))
if err != nil {
fmt.Println(err)
}
for i := 0; i < len(reihen.Reihen); i++ {
record := core.NewRecord(collection)
reihe := reihen.Reihen[i]
if reihe.Titel == "" {
record.Set(dbmodels.SERIES_NAME_FIELD, reihe.Sortiername)
} else {
record.Set(dbmodels.SERIES_NAME_FIELD, reihe.Titel)
}
record.Set(dbmodels.REFERENCES_FIELD, NormalizeString(reihe.Nachweis))
record.Set(dbmodels.ANNOTATION_FIELD, NormalizeString(reihe.Anmerkungen))
record.Set(dbmodels.SERIES_FREQUENCY_FIELD, "jährlich")
record.Set(dbmodels.MUSENALMID_FIELD, reihe.ID)
n := record.GetString(dbmodels.SERIES_NAME_FIELD)
if n == "" {
record.Set(dbmodels.EDITSTATE_FIELD, dbmodels.EDITORSTATE_VALUES[1])
} else {
record.Set(dbmodels.EDITSTATE_FIELD, dbmodels.EDITORSTATE_VALUES[len(dbmodels.EDITORSTATE_VALUES)-1])
}
records = append(records, record)
}
return batchSave(app, records)
}

100
xmlmodels/accessdb.go Normal file
View File

@@ -0,0 +1,100 @@
package xmlmodels
import (
"encoding/xml"
"fmt"
"io"
"os"
"github.com/Theodor-Springmann-Stiftung/musenalm/helpers/datatypes"
)
type AccessDB struct {
Orte *Orte
Akteure *Akteure
Reihen *Reihentitel
Bände *Bände
Inhalte *Inhalte
Relationen_Bände_Akteure *Relationen_Bände_Akteure
Relationen_Inhalte_Akteure *Relationen_Inhalte_Akteure
Relationen_Bände_Reihen *Relationen_Bände_Reihen
BIBLIO *map[int]BIBLIOEintrag
}
func ReadAccessDB(path string) (*AccessDB, error) {
var Akteure Akteure
var Reihentitel Reihentitel
var Bände Bände
var Inhalte Inhalte
var Orte Orte
var Relationen_Bände_Akteure Relationen_Bände_Akteure
var Relationen_Bände_Reihen Relationen_Bände_Reihen
var Relationen_Inhalte_Akteure Relationen_Inhalte_Akteure
var BIBLIO BIBLIOEinträge
if err := unmarshalFile(path+"Akteure.xml", &Akteure); err != nil {
return nil, err
}
if err := unmarshalFile(path+"Orte.xml", &Orte); err != nil {
return nil, err
}
if err := unmarshalFile(path+"Reihen.xml", &Reihentitel); err != nil {
return nil, err
}
if err := unmarshalFile(path+"Baende.xml", &Bände); err != nil {
return nil, err
}
if err := unmarshalFile(path+"Inhalte.xml", &Inhalte); err != nil {
return nil, err
}
if err := unmarshalFile(path+"_RELATION_BaendeAkteure.xml", &Relationen_Bände_Akteure); err != nil {
return nil, err
}
if err := unmarshalFile(path+"_RELATION_BaendeReihen.xml", &Relationen_Bände_Reihen); err != nil {
return nil, err
}
if err := unmarshalFile(path+"_RELATION_InhalteAkteure.xml", &Relationen_Inhalte_Akteure); err != nil {
return nil, err
}
if err := unmarshalFile(path+"GM-BIBLIO.xml", &BIBLIO); err != nil {
return nil, err
}
var BIBLIOM = datatypes.MakeMap(BIBLIO.Einträge, func(e BIBLIOEintrag) int { return e.Nummer })
lib := AccessDB{
Orte: &Orte,
Akteure: &Akteure,
Reihen: &Reihentitel,
Bände: &Bände,
Inhalte: &Inhalte,
Relationen_Bände_Akteure: &Relationen_Bände_Akteure,
Relationen_Bände_Reihen: &Relationen_Bände_Reihen,
Relationen_Inhalte_Akteure: &Relationen_Inhalte_Akteure,
BIBLIO: &BIBLIOM,
}
return &lib, nil
}
func unmarshalFile[T any](filename string, data *T) error {
xmlFile, err := os.Open(filename)
if err != nil {
fmt.Println(err)
return err
}
fmt.Println("Successfully opened " + filename)
defer xmlFile.Close()
byteValue, _ := io.ReadAll(xmlFile)
xml.Unmarshal(byteValue, data)
return nil
}

20
xmlmodels/akteure.go Normal file
View File

@@ -0,0 +1,20 @@
package xmlmodels
import "encoding/xml"
type Akteure struct {
XMLName xml.Name `xml:"dataroot"`
Akteure []Akteur `xml:"Akteure"`
}
type Akteur struct {
ID string `xml:"ID"`
Name string `xml:"NAME"`
Körperschaft bool `xml:"ORGANISATION"`
Beruf string `xml:"BERUF"`
Nachweis string `xml:"NACHWEIS"`
Pseudonyme string `xml:"PSEUDONYM"`
Lebensdaten string `xml:"LEBENSDATEN"`
Anmerkungen string `xml:"ANMERKUNGEN"`
GND string `xml:"GND"`
}

34
xmlmodels/baende.go Normal file
View File

@@ -0,0 +1,34 @@
package xmlmodels
import "encoding/xml"
type Bände struct {
XMLName xml.Name `xml:"dataroot"`
Bände []Band `xml:"Baende"`
}
type Band struct {
ID string `xml:"ID"`
BiblioID int `xml:"BIBLIO-ID"`
Titelangabe string `xml:"TITEL"`
Ortsangabe string `xml:"ORT-ALT"`
Orte []Ortverweis `xml:"ORTE"`
Verantwortlichkeitsangabe string `xml:"HERAUSGEBER"`
Jahr int `xml:"JAHR"`
Gesichtet bool `xml:"AUTOPSIE"`
Erfasst bool `xml:"ERFASST"`
Nachweis string `xml:"NACHWEIS"`
Struktur string `xml:"STRUKTUR"`
Norm string `xml:"NORM"`
Status Status `xml:"STATUS"`
Anmerkungen string `xml:"ANMERKUNGEN"`
ReihentitelALT string `xml:"REIHENTITEL-ALT"`
}
type Ortverweis struct {
Value string `xml:"Value"`
}
type Status struct {
Value []string `xml:"Value"`
}

32
xmlmodels/biblio.go Normal file
View File

@@ -0,0 +1,32 @@
package xmlmodels
import "encoding/xml"
type BIBLIOEinträge struct {
XMLName xml.Name `xml:"dataroot"`
Einträge []BIBLIOEintrag `xml:"GM-BIBLIO"`
}
type BIBLIOEintrag struct {
Nummer int `xml:"NUMMER"`
Eingetragen bool `xml:"EINGETRAGEN_x003F_"`
Gesucht bool `xml:"GESUCHT_x003F_"`
Autor string `xml:"AUTOR"`
Herausgeber string `xml:"HERAUSGEBER"`
Titel string `xml:"TITEL"`
Untertitel string `xml:"UNTERTITEL"`
ErschienenIn string `xml:"ERSCHIENEN_x0020_IN"`
Ort string `xml:"ORT"`
Jahr int `xml:"JAHR"`
Nachweis string `xml:"NACHWEIS"`
Kurztitel string `xml:"KURZTITEL"`
Zugehörig string `xml:"ZUGEHöRIG"`
VorhandenAls string `xml:"VORHANDEN_x0020_ALS"`
Inhalt string `xml:"INHALT"`
Zustand string `xml:"ZUSTAND"`
NotizÄusseres string `xml:"NOTIZ_x0020_ÄUSSERES"`
NotizInhalt string `xml:"NOTIZ_x0020_INHALT"`
Anmerkungen string `xml:"ALLGEMEINE_x0020_BEMERKUNG"`
Standort string `xml:"STANDORT"`
Unklar bool `xml:"UNKLAR"`
}

25
xmlmodels/inhalte.go Normal file
View File

@@ -0,0 +1,25 @@
package xmlmodels
import "encoding/xml"
type Inhalte struct {
XMLName xml.Name `xml:"dataroot"`
Inhalte []Inhalt `xml:"Inhalte"`
}
type Inhalt struct {
ID string `xml:"ID"`
Titelangabe string `xml:"TITEL"`
Urheberangabe string `xml:"AUTOR"`
Band string `xml:"BAND"`
Objektnummer string `xml:"OBJEKTNUMMER"`
Incipit string `xml:"INCIPIT"`
Paginierung string `xml:"PAGINIERUNG"`
Typ Typ `xml:"TYP"`
Anmerkungen string `xml:"ANMERKUNGEN"`
Seite string `xml:"SEITE"`
}
type Typ struct {
Value []string `xml:"Value"`
}

15
xmlmodels/orte.go Normal file
View File

@@ -0,0 +1,15 @@
package xmlmodels
import "encoding/xml"
type Orte struct {
XMLName xml.Name `xml:"dataroot"`
Orte []Ort `xml:"Orte"`
}
type Ort struct {
ID string `xml:"ID"`
Name string `xml:"NAME"`
Fiktiv bool `xml:"FIKTIV"`
Anmerkungen string `xml:"Anmerkungen"`
}

35
xmlmodels/reihen.go Normal file
View File

@@ -0,0 +1,35 @@
package xmlmodels
import "encoding/xml"
type Reihentitel struct {
XMLName xml.Name `xml:"dataroot"`
Reihen []Reihe `xml:"Reihen"`
}
type Reihe struct {
ID string `xml:"ID"`
Titel string `xml:"NAME"`
Sortiername string `xml:"SORTIERNAME"`
Nachweis string `xml:"NACHWEIS"`
Anmerkungen string `xml:"Anmerkungen"`
}
func SanitizeReihen(reihentitel Reihentitel, relationen Relationen_Bände_Reihen) Reihentitel {
m := make(map[string]bool)
o := Reihentitel{
Reihen: []Reihe{},
}
for _, r := range relationen.Relationen {
m[r.Reihe] = true
}
for i := 0; i < len(reihentitel.Reihen); i++ {
if _, ok := m[reihentitel.Reihen[i].ID]; ok {
o.Reihen = append(o.Reihen, reihentitel.Reihen[i])
}
}
return o
}

39
xmlmodels/relationen.go Normal file
View File

@@ -0,0 +1,39 @@
package xmlmodels
import "encoding/xml"
type Relationen_Bände_Reihen struct {
XMLName xml.Name `xml:"dataroot"`
Relationen []Relation_Band_Reihe `xml:"_x002A_RELATION_BaendeReihen"`
}
type Relation_Band_Reihe struct {
ID string `xml:"ID"`
Band string `xml:"BAND"`
Relation string `xml:"BEZIEHUNG"`
Reihe string `xml:"REIHE"`
}
type Relationen_Inhalte_Akteure struct {
XMLName xml.Name `xml:"dataroot"`
Relationen []Relation_Inhalt_akteur `xml:"_x002A_RELATION_InhalteAkteure"`
}
type Relation_Inhalt_akteur struct {
ID string `xml:"ID"`
Band string `xml:"INHALT"`
Relation string `xml:"BEZIEHUNG"`
Akteur string `xml:"AKTEUR"`
}
type Relationen_Bände_Akteure struct {
XMLName xml.Name `xml:"dataroot"`
Relationen []Relation_Band_Akteur `xml:"_x002A_RELATION_BaendeAkteure"`
}
type Relation_Band_Akteur struct {
ID string `xml:"ID"`
Band string `xml:"BAND"`
Relation string `xml:"BEZIEHUNG"`
Akteur string `xml:"AKTEUR"`
}

3
xmlmodels/xmldata.go Normal file
View File

@@ -0,0 +1,3 @@
package xmlmodels
const DATA_PATH = "data/"