mirror of
https://github.com/Theodor-Springmann-Stiftung/musenalm.git
synced 2025-10-28 16:55:32 +00:00
Places, Agents, Serials, Entries
This commit is contained in:
449743
data/GM-BIBLIO.xml
Normal file
449743
data/GM-BIBLIO.xml
Normal file
File diff suppressed because it is too large
Load Diff
692
data/GM-BIBLIO.xsd
Normal file
692
data/GM-BIBLIO.xsd
Normal 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=""Diesch";"Köhring";"Lanckoronska/Rühmann";"Wilpert/Gühring""/>
|
||||||
|
<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=""H-Archiv";"Zschokke";"Kalender";"Almanach";"Rätsel";"BLB";"Zeit""/>
|
||||||
|
<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=""Nicht vorhanden";"Original";"Reprint";"Fotokopie";"Mangel";"x. Exemplar""/>
|
||||||
|
<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=""H-Orig";"H-Sam";"H-Ged";"H-Pros";"H-Bib";"H-Theol";"H-Bri";"H-Sonst";"H-Anth";"H-Sek";"H-Biog";"B-Gesch";"B-Recht";"B-Ort";"B-Kirch";"Marx";"Philosoph";"SozW";"LitW";"Sprache";"Biog";"EA";"Buch""/>
|
||||||
|
<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=""ab" Or "gm" Or "mb" Or "ms" Or "wb" Or "jr" Or "uw" Or "jb" Or "sg""/>
|
||||||
|
</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>
|
||||||
@@ -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{
|
var MEDIA_TYPE_VALUES = []string{
|
||||||
"audio",
|
"audio",
|
||||||
@@ -410,6 +410,7 @@ const (
|
|||||||
MUSENALMID_FIELD = "musenalm_id"
|
MUSENALMID_FIELD = "musenalm_id"
|
||||||
EDITSTATE_FIELD = "edit_state"
|
EDITSTATE_FIELD = "edit_state"
|
||||||
COMMENT_FIELD = "edit_comment"
|
COMMENT_FIELD = "edit_comment"
|
||||||
|
META_FIELD = "edit_fielddata"
|
||||||
|
|
||||||
AGENTS_NAME_FIELD = "name"
|
AGENTS_NAME_FIELD = "name"
|
||||||
AGENTS_CORP_FIELD = "corporate_body"
|
AGENTS_CORP_FIELD = "corporate_body"
|
||||||
@@ -423,6 +424,7 @@ const (
|
|||||||
|
|
||||||
SERIES_NAME_FIELD = "name"
|
SERIES_NAME_FIELD = "name"
|
||||||
SERIES_PSEUDONYMS_FIELD = "pseudonyms"
|
SERIES_PSEUDONYMS_FIELD = "pseudonyms"
|
||||||
|
SERIES_FREQUENCY_FIELD = "frequency"
|
||||||
|
|
||||||
RELATION_TYPE_FIELD = "type"
|
RELATION_TYPE_FIELD = "type"
|
||||||
RELATION_CONJECTURE_FIELD = "conjecture"
|
RELATION_CONJECTURE_FIELD = "conjecture"
|
||||||
8
dbmodels/deprecated.go
Normal file
8
dbmodels/deprecated.go
Normal 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
10
dbmodels/exemplar.go
Normal 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"`
|
||||||
|
}
|
||||||
5
dbmodels/fieldmetadata.go
Normal file
5
dbmodels/fieldmetadata.go
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
package dbmodels
|
||||||
|
|
||||||
|
type MetaData struct {
|
||||||
|
Conjecture bool `json:"conjecture"`
|
||||||
|
}
|
||||||
9
helpers/datatypes/map.go
Normal file
9
helpers/datatypes/map.go
Normal 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
|
||||||
|
}
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
package migrations
|
package migrations
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/Theodor-Springmann-Stiftung/musenalm/models"
|
"github.com/Theodor-Springmann-Stiftung/musenalm/dbmodels"
|
||||||
"github.com/pocketbase/pocketbase/core"
|
"github.com/pocketbase/pocketbase/core"
|
||||||
m "github.com/pocketbase/pocketbase/migrations"
|
m "github.com/pocketbase/pocketbase/migrations"
|
||||||
)
|
)
|
||||||
@@ -14,7 +14,7 @@ func init() {
|
|||||||
|
|
||||||
return app.Save(places)
|
return app.Save(places)
|
||||||
}, func(app core.App) error {
|
}, func(app core.App) error {
|
||||||
places, err := app.FindCollectionByNameOrId(models.PLACES_TABLE)
|
places, err := app.FindCollectionByNameOrId(dbmodels.PLACES_TABLE)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
@@ -24,16 +24,16 @@ func init() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func placesTable() *core.Collection {
|
func placesTable() *core.Collection {
|
||||||
collection := core.NewBaseCollection(models.PLACES_TABLE)
|
collection := core.NewBaseCollection(dbmodels.PLACES_TABLE)
|
||||||
setBasicPublicRules(collection)
|
setBasicPublicRules(collection)
|
||||||
return collection
|
return collection
|
||||||
}
|
}
|
||||||
|
|
||||||
func placesFields() core.FieldsList {
|
func placesFields() core.FieldsList {
|
||||||
fields := core.NewFieldsList(
|
fields := core.NewFieldsList(
|
||||||
&core.TextField{Name: models.PLACES_NAME_FIELD, Required: true, Presentable: true},
|
&core.TextField{Name: dbmodels.PLACES_NAME_FIELD, Required: true, Presentable: true},
|
||||||
&core.BoolField{Name: models.AGENTS_FICTIONAL_FIELD, Required: false},
|
&core.BoolField{Name: dbmodels.AGENTS_FICTIONAL_FIELD, Required: false},
|
||||||
&core.URLField{Name: models.URI_FIELD, Required: false, OnlyDomains: []string{"geonames.org"}},
|
&core.URLField{Name: dbmodels.URI_FIELD, Required: false, OnlyDomains: []string{"geonames.org"}},
|
||||||
)
|
)
|
||||||
|
|
||||||
setMusenalmIDField(&fields)
|
setMusenalmIDField(&fields)
|
||||||
@@ -45,6 +45,6 @@ func placesFields() core.FieldsList {
|
|||||||
|
|
||||||
func placesIndexes(collection *core.Collection) {
|
func placesIndexes(collection *core.Collection) {
|
||||||
addMusenalmIDIndex(collection)
|
addMusenalmIDIndex(collection)
|
||||||
addIndex(collection, models.PLACES_NAME_FIELD, false)
|
addIndex(collection, dbmodels.PLACES_NAME_FIELD, false)
|
||||||
addIndex(collection, models.URI_FIELD, true)
|
addIndex(collection, dbmodels.URI_FIELD, false)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
package migrations
|
package migrations
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/Theodor-Springmann-Stiftung/musenalm/models"
|
"github.com/Theodor-Springmann-Stiftung/musenalm/dbmodels"
|
||||||
"github.com/pocketbase/pocketbase/core"
|
"github.com/pocketbase/pocketbase/core"
|
||||||
m "github.com/pocketbase/pocketbase/migrations"
|
m "github.com/pocketbase/pocketbase/migrations"
|
||||||
)
|
)
|
||||||
@@ -14,7 +14,7 @@ func init() {
|
|||||||
|
|
||||||
return app.Save(agents)
|
return app.Save(agents)
|
||||||
}, func(app core.App) error {
|
}, func(app core.App) error {
|
||||||
agents, err := app.FindCollectionByNameOrId(models.AGENTS_TABLE)
|
agents, err := app.FindCollectionByNameOrId(dbmodels.AGENTS_TABLE)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
@@ -24,21 +24,21 @@ func init() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func agentsTable() *core.Collection {
|
func agentsTable() *core.Collection {
|
||||||
collection := core.NewBaseCollection(models.AGENTS_TABLE)
|
collection := core.NewBaseCollection(dbmodels.AGENTS_TABLE)
|
||||||
setBasicPublicRules(collection)
|
setBasicPublicRules(collection)
|
||||||
return collection
|
return collection
|
||||||
}
|
}
|
||||||
|
|
||||||
func agentsFields() core.FieldsList {
|
func agentsFields() core.FieldsList {
|
||||||
fields := core.NewFieldsList(
|
fields := core.NewFieldsList(
|
||||||
&core.TextField{Name: models.AGENTS_NAME_FIELD, Required: true, Presentable: true},
|
&core.TextField{Name: dbmodels.AGENTS_NAME_FIELD, Required: true, Presentable: true},
|
||||||
&core.BoolField{Name: models.AGENTS_CORP_FIELD, Required: false},
|
&core.BoolField{Name: dbmodels.AGENTS_CORP_FIELD, Required: false},
|
||||||
&core.BoolField{Name: models.AGENTS_FICTIONAL_FIELD, Required: false},
|
&core.BoolField{Name: dbmodels.AGENTS_FICTIONAL_FIELD, Required: false},
|
||||||
&core.URLField{Name: models.URI_FIELD, Required: false},
|
&core.URLField{Name: dbmodels.URI_FIELD, Required: false},
|
||||||
&core.TextField{Name: models.AGENTS_BIOGRAPHICAL_DATA_FIELD, Required: false, Presentable: true},
|
&core.TextField{Name: dbmodels.AGENTS_BIOGRAPHICAL_DATA_FIELD, Required: false, Presentable: true},
|
||||||
&core.TextField{Name: models.AGENTS_PROFESSION_FIELD, Required: false},
|
&core.TextField{Name: dbmodels.AGENTS_PROFESSION_FIELD, Required: false},
|
||||||
&core.TextField{Name: models.AGENTS_PSEUDONYMS_FIELD, Required: false},
|
&core.TextField{Name: dbmodels.AGENTS_PSEUDONYMS_FIELD, Required: false},
|
||||||
&core.TextField{Name: models.REFERENCES_FIELD, Required: false},
|
&core.TextField{Name: dbmodels.REFERENCES_FIELD, Required: false},
|
||||||
)
|
)
|
||||||
|
|
||||||
setMusenalmIDField(&fields)
|
setMusenalmIDField(&fields)
|
||||||
@@ -50,6 +50,6 @@ func agentsFields() core.FieldsList {
|
|||||||
|
|
||||||
func agentsIndexes(collection *core.Collection) {
|
func agentsIndexes(collection *core.Collection) {
|
||||||
addMusenalmIDIndex(collection)
|
addMusenalmIDIndex(collection)
|
||||||
addIndex(collection, models.AGENTS_NAME_FIELD, false)
|
addIndex(collection, dbmodels.AGENTS_NAME_FIELD, false)
|
||||||
addIndex(collection, models.URI_FIELD, true)
|
addIndex(collection, dbmodels.URI_FIELD, false)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
package migrations
|
package migrations
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/Theodor-Springmann-Stiftung/musenalm/models"
|
"github.com/Theodor-Springmann-Stiftung/musenalm/dbmodels"
|
||||||
"github.com/pocketbase/pocketbase/core"
|
"github.com/pocketbase/pocketbase/core"
|
||||||
m "github.com/pocketbase/pocketbase/migrations"
|
m "github.com/pocketbase/pocketbase/migrations"
|
||||||
)
|
)
|
||||||
@@ -14,7 +14,7 @@ func init() {
|
|||||||
|
|
||||||
return app.Save(series)
|
return app.Save(series)
|
||||||
}, func(app core.App) error {
|
}, func(app core.App) error {
|
||||||
series, err := app.FindCollectionByNameOrId(models.SERIES_TABLE)
|
series, err := app.FindCollectionByNameOrId(dbmodels.SERIES_TABLE)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
@@ -24,16 +24,17 @@ func init() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func seriesTable() *core.Collection {
|
func seriesTable() *core.Collection {
|
||||||
collection := core.NewBaseCollection(models.SERIES_TABLE)
|
collection := core.NewBaseCollection(dbmodels.SERIES_TABLE)
|
||||||
setBasicPublicRules(collection)
|
setBasicPublicRules(collection)
|
||||||
return collection
|
return collection
|
||||||
}
|
}
|
||||||
|
|
||||||
func seriesFields() core.FieldsList {
|
func seriesFields() core.FieldsList {
|
||||||
fields := core.NewFieldsList(
|
fields := core.NewFieldsList(
|
||||||
&core.TextField{Name: models.SERIES_NAME_FIELD, Required: true, Presentable: true},
|
&core.TextField{Name: dbmodels.SERIES_NAME_FIELD, Required: true, Presentable: true},
|
||||||
&core.TextField{Name: models.SERIES_PSEUDONYMS_FIELD, Required: false},
|
&core.TextField{Name: dbmodels.SERIES_PSEUDONYMS_FIELD, Required: false},
|
||||||
&core.TextField{Name: models.REFERENCES_FIELD, Required: false},
|
&core.TextField{Name: dbmodels.REFERENCES_FIELD, Required: false},
|
||||||
|
&core.TextField{Name: dbmodels.SERIES_FREQUENCY_FIELD, Required: false},
|
||||||
)
|
)
|
||||||
|
|
||||||
setMusenalmIDField(&fields)
|
setMusenalmIDField(&fields)
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ package migrations
|
|||||||
import (
|
import (
|
||||||
"errors"
|
"errors"
|
||||||
|
|
||||||
"github.com/Theodor-Springmann-Stiftung/musenalm/models"
|
"github.com/Theodor-Springmann-Stiftung/musenalm/dbmodels"
|
||||||
"github.com/pocketbase/pocketbase/core"
|
"github.com/pocketbase/pocketbase/core"
|
||||||
m "github.com/pocketbase/pocketbase/migrations"
|
m "github.com/pocketbase/pocketbase/migrations"
|
||||||
)
|
)
|
||||||
@@ -21,7 +21,7 @@ func init() {
|
|||||||
|
|
||||||
return app.Save(entries)
|
return app.Save(entries)
|
||||||
}, func(app core.App) error {
|
}, func(app core.App) error {
|
||||||
entries, err := app.FindCollectionByNameOrId(models.ENTRIES_TABLE)
|
entries, err := app.FindCollectionByNameOrId(dbmodels.ENTRIES_TABLE)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
@@ -31,87 +31,82 @@ func init() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func entriesTable() *core.Collection {
|
func entriesTable() *core.Collection {
|
||||||
collection := core.NewBaseCollection(models.ENTRIES_TABLE)
|
collection := core.NewBaseCollection(dbmodels.ENTRIES_TABLE)
|
||||||
setBasicPublicRules(collection)
|
setBasicPublicRules(collection)
|
||||||
return collection
|
return collection
|
||||||
}
|
}
|
||||||
|
|
||||||
func entriesFields(app core.App) *core.FieldsList {
|
func entriesFields(app core.App) *core.FieldsList {
|
||||||
places, err := app.FindCollectionByNameOrId(models.PLACES_TABLE)
|
places, err := app.FindCollectionByNameOrId(dbmodels.PLACES_TABLE)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
fields := core.NewFieldsList(
|
fields := core.NewFieldsList(
|
||||||
// Title information
|
// Title information
|
||||||
&core.TextField{Name: models.PREFERRED_TITLE_FIELD, Required: true, Presentable: true},
|
&core.TextField{Name: dbmodels.PREFERRED_TITLE_FIELD, Required: true, Presentable: true},
|
||||||
&core.TextField{Name: models.VARIANT_TITLE_FIELD, Required: false, Presentable: false},
|
&core.TextField{Name: dbmodels.VARIANT_TITLE_FIELD, Required: false, Presentable: false},
|
||||||
&core.BoolField{Name: models.PARALLEL_TITLE_FIELD, Required: false},
|
&core.TextField{Name: dbmodels.PARALLEL_TITLE_FIELD, Required: false},
|
||||||
|
|
||||||
// Transcribed information
|
// Transcribed information
|
||||||
&core.TextField{Name: models.TITLE_STMT_FIELD, Required: false, Presentable: false},
|
&core.TextField{Name: dbmodels.TITLE_STMT_FIELD, Required: false, Presentable: false},
|
||||||
&core.TextField{Name: models.SUBTITLE_STMT_FIELD, Required: false, Presentable: false},
|
&core.TextField{Name: dbmodels.SUBTITLE_STMT_FIELD, Required: false, Presentable: false},
|
||||||
&core.TextField{Name: models.INCIPIT_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: dbmodels.RESPONSIBILITY_STMT_FIELD, Required: false, Presentable: false},
|
||||||
&core.TextField{Name: models.PLACE_STMT_FIELD, Required: false, Presentable: false},
|
&core.TextField{Name: dbmodels.PLACE_STMT_FIELD, Required: false, Presentable: false},
|
||||||
&core.TextField{Name: models.PUBLICATION_STMT_FIELD, Required: false, Presentable: false},
|
&core.TextField{Name: dbmodels.PUBLICATION_STMT_FIELD, Required: false, Presentable: false},
|
||||||
|
|
||||||
// Other discerning Information
|
// Other discerning Information
|
||||||
&core.NumberField{Name: models.YEAR_FIELD, Required: false},
|
&core.NumberField{Name: dbmodels.YEAR_FIELD, Required: false},
|
||||||
&core.TextField{Name: models.EDITION_FIELD, Required: false},
|
&core.TextField{Name: dbmodels.EDITION_FIELD, Required: false},
|
||||||
|
|
||||||
// Media Information
|
// Media Information
|
||||||
&core.SelectField{
|
&core.SelectField{
|
||||||
Name: models.LANGUAGE_FIELD,
|
Name: dbmodels.LANGUAGE_FIELD,
|
||||||
Required: false,
|
Required: false,
|
||||||
Values: models.LANGUAGE_VALUES,
|
Values: dbmodels.LANGUAGE_VALUES,
|
||||||
MaxSelect: len(models.LANGUAGE_VALUES),
|
MaxSelect: len(dbmodels.LANGUAGE_VALUES),
|
||||||
},
|
},
|
||||||
&core.SelectField{
|
&core.SelectField{
|
||||||
Name: models.CONTENT_TYPE_FIELD,
|
Name: dbmodels.CONTENT_TYPE_FIELD,
|
||||||
Required: false,
|
Required: false,
|
||||||
Values: models.CONTENT_TYPE_VALUES,
|
Values: dbmodels.CONTENT_TYPE_VALUES,
|
||||||
MaxSelect: len(models.CONTENT_TYPE_VALUES),
|
MaxSelect: len(dbmodels.CONTENT_TYPE_VALUES),
|
||||||
},
|
},
|
||||||
|
|
||||||
// Physical Description
|
// Physical Description
|
||||||
&core.TextField{Name: models.EXTENT_FIELD, Required: false},
|
&core.TextField{Name: dbmodels.EXTENT_FIELD, Required: false},
|
||||||
&core.TextField{Name: models.DIMENSIONS_FIELD, Required: false},
|
&core.TextField{Name: dbmodels.DIMENSIONS_FIELD, Required: false},
|
||||||
&core.SelectField{
|
&core.SelectField{
|
||||||
Name: models.CARRIER_TYPE_FIELD,
|
Name: dbmodels.CARRIER_TYPE_FIELD,
|
||||||
Required: false,
|
Required: false,
|
||||||
Values: models.MEDIA_TYPE_VALUES,
|
Values: dbmodels.MEDIA_TYPE_VALUES,
|
||||||
MaxSelect: len(models.MEDIA_TYPE_VALUES),
|
MaxSelect: len(dbmodels.MEDIA_TYPE_VALUES),
|
||||||
},
|
},
|
||||||
&core.SelectField{
|
&core.SelectField{
|
||||||
Name: models.CARRIER_TYPE_FIELD,
|
Name: dbmodels.CARRIER_TYPE_FIELD,
|
||||||
Required: false,
|
Required: false,
|
||||||
Values: models.CARRIER_TYPE_VALUES,
|
Values: dbmodels.CARRIER_TYPE_VALUES,
|
||||||
MaxSelect: len(models.CARRIER_TYPE_VALUES),
|
MaxSelect: len(dbmodels.CARRIER_TYPE_VALUES),
|
||||||
},
|
},
|
||||||
|
|
||||||
// Norm Data
|
// Norm Data
|
||||||
&core.TextField{Name: models.REFERENCES_FIELD, Required: false},
|
&core.TextField{Name: dbmodels.REFERENCES_FIELD, Required: false},
|
||||||
&core.RelationField{
|
&core.RelationField{
|
||||||
Name: models.PLACES_TABLE,
|
Name: dbmodels.PLACES_TABLE,
|
||||||
Required: false,
|
Required: false,
|
||||||
CollectionId: places.Id,
|
CollectionId: places.Id,
|
||||||
CascadeDelete: false,
|
CascadeDelete: false,
|
||||||
MaxSelect: 5000,
|
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:
|
// 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)
|
setMusenalmIDField(&fields)
|
||||||
@@ -123,15 +118,15 @@ func entriesFields(app core.App) *core.FieldsList {
|
|||||||
|
|
||||||
func entriesIndexes(collection *core.Collection) {
|
func entriesIndexes(collection *core.Collection) {
|
||||||
addMusenalmIDIndex(collection)
|
addMusenalmIDIndex(collection)
|
||||||
addIndex(collection, models.PREFERRED_TITLE_FIELD, false)
|
addIndex(collection, dbmodels.PREFERRED_TITLE_FIELD, false)
|
||||||
addIndex(collection, models.VARIANT_TITLE_FIELD, false)
|
addIndex(collection, dbmodels.VARIANT_TITLE_FIELD, false)
|
||||||
addIndex(collection, models.PARALLEL_TITLE_FIELD, false)
|
addIndex(collection, dbmodels.PARALLEL_TITLE_FIELD, false)
|
||||||
addIndex(collection, models.TITLE_STMT_FIELD, false)
|
addIndex(collection, dbmodels.TITLE_STMT_FIELD, false)
|
||||||
addIndex(collection, models.SUBTITLE_STMT_FIELD, false)
|
addIndex(collection, dbmodels.SUBTITLE_STMT_FIELD, false)
|
||||||
addIndex(collection, models.INCIPIT_STMT_FIELD, false)
|
addIndex(collection, dbmodels.INCIPIT_STMT_FIELD, false)
|
||||||
addIndex(collection, models.RESPONSIBILITY_STMT_FIELD, false)
|
addIndex(collection, dbmodels.RESPONSIBILITY_STMT_FIELD, false)
|
||||||
addIndex(collection, models.PLACE_STMT_FIELD, false)
|
addIndex(collection, dbmodels.PLACE_STMT_FIELD, false)
|
||||||
addIndex(collection, models.PUBLICATION_STMT_FIELD, false)
|
addIndex(collection, dbmodels.PUBLICATION_STMT_FIELD, false)
|
||||||
addIndex(collection, models.YEAR_FIELD, false)
|
addIndex(collection, dbmodels.YEAR_FIELD, false)
|
||||||
addIndex(collection, models.EDITION_FIELD, false)
|
addIndex(collection, dbmodels.EDITION_FIELD, false)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,23 +1,23 @@
|
|||||||
package migrations
|
package migrations
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/Theodor-Springmann-Stiftung/musenalm/models"
|
"github.com/Theodor-Springmann-Stiftung/musenalm/dbmodels"
|
||||||
"github.com/pocketbase/pocketbase/core"
|
"github.com/pocketbase/pocketbase/core"
|
||||||
m "github.com/pocketbase/pocketbase/migrations"
|
m "github.com/pocketbase/pocketbase/migrations"
|
||||||
)
|
)
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
m.Register(func(app core.App) error {
|
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 {
|
if err != nil {
|
||||||
return err
|
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)
|
return app.Save(collection)
|
||||||
}, func(app core.App) error {
|
}, 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 {
|
if err != nil {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ package migrations
|
|||||||
import (
|
import (
|
||||||
"errors"
|
"errors"
|
||||||
|
|
||||||
"github.com/Theodor-Springmann-Stiftung/musenalm/models"
|
"github.com/Theodor-Springmann-Stiftung/musenalm/dbmodels"
|
||||||
"github.com/pocketbase/pocketbase/core"
|
"github.com/pocketbase/pocketbase/core"
|
||||||
m "github.com/pocketbase/pocketbase/migrations"
|
m "github.com/pocketbase/pocketbase/migrations"
|
||||||
)
|
)
|
||||||
@@ -21,7 +21,7 @@ func init() {
|
|||||||
|
|
||||||
return app.Save(partials)
|
return app.Save(partials)
|
||||||
}, func(app core.App) error {
|
}, func(app core.App) error {
|
||||||
partials, err := app.FindCollectionByNameOrId(models.PARTIALS_TABLE)
|
partials, err := app.FindCollectionByNameOrId(dbmodels.PARTIALS_TABLE)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
@@ -31,92 +31,92 @@ func init() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func partialsTable() *core.Collection {
|
func partialsTable() *core.Collection {
|
||||||
collection := core.NewBaseCollection(models.PARTIALS_TABLE)
|
collection := core.NewBaseCollection(dbmodels.PARTIALS_TABLE)
|
||||||
setBasicPublicRules(collection)
|
setBasicPublicRules(collection)
|
||||||
return collection
|
return collection
|
||||||
}
|
}
|
||||||
|
|
||||||
func partialsFields(app core.App) *core.FieldsList {
|
func partialsFields(app core.App) *core.FieldsList {
|
||||||
entries, err := app.FindCollectionByNameOrId(models.ENTRIES_TABLE)
|
entries, err := app.FindCollectionByNameOrId(dbmodels.ENTRIES_TABLE)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
fields := core.NewFieldsList(
|
fields := core.NewFieldsList(
|
||||||
// Title information
|
// Title information
|
||||||
&core.TextField{Name: models.PREFERRED_TITLE_FIELD, Required: true, Presentable: true},
|
&core.TextField{Name: dbmodels.PREFERRED_TITLE_FIELD, Required: true, Presentable: true},
|
||||||
&core.TextField{Name: models.VARIANT_TITLE_FIELD, Required: false, Presentable: false},
|
&core.TextField{Name: dbmodels.VARIANT_TITLE_FIELD, Required: false, Presentable: false},
|
||||||
&core.BoolField{Name: models.PARALLEL_TITLE_FIELD, Required: false},
|
&core.BoolField{Name: dbmodels.PARALLEL_TITLE_FIELD, Required: false},
|
||||||
|
|
||||||
// Transcribed information
|
// Transcribed information
|
||||||
&core.TextField{Name: models.TITLE_STMT_FIELD, Required: false, Presentable: false},
|
&core.TextField{Name: dbmodels.TITLE_STMT_FIELD, Required: false, Presentable: false},
|
||||||
&core.TextField{Name: models.SUBTITLE_STMT_FIELD, Required: false, Presentable: false},
|
&core.TextField{Name: dbmodels.SUBTITLE_STMT_FIELD, Required: false, Presentable: false},
|
||||||
&core.TextField{Name: models.INCIPIT_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: dbmodels.RESPONSIBILITY_STMT_FIELD, Required: false, Presentable: false},
|
||||||
&core.TextField{Name: models.PLACE_STMT_FIELD, Required: false, Presentable: false},
|
&core.TextField{Name: dbmodels.PLACE_STMT_FIELD, Required: false, Presentable: false},
|
||||||
&core.TextField{Name: models.PUBLICATION_STMT_FIELD, Required: false, Presentable: false},
|
&core.TextField{Name: dbmodels.PUBLICATION_STMT_FIELD, Required: false, Presentable: false},
|
||||||
|
|
||||||
// Other discerning Information
|
// Other discerning Information
|
||||||
&core.NumberField{Name: models.YEAR_FIELD, Required: false},
|
&core.NumberField{Name: dbmodels.YEAR_FIELD, Required: false},
|
||||||
&core.TextField{Name: models.EDITION_FIELD, Required: false},
|
&core.TextField{Name: dbmodels.EDITION_FIELD, Required: false},
|
||||||
|
|
||||||
// Media Information
|
// Media Information
|
||||||
&core.SelectField{
|
&core.SelectField{
|
||||||
Name: models.LANGUAGE_FIELD,
|
Name: dbmodels.LANGUAGE_FIELD,
|
||||||
Required: false,
|
Required: false,
|
||||||
Values: models.LANGUAGE_VALUES,
|
Values: dbmodels.LANGUAGE_VALUES,
|
||||||
MaxSelect: len(models.LANGUAGE_VALUES),
|
MaxSelect: len(dbmodels.LANGUAGE_VALUES),
|
||||||
},
|
},
|
||||||
&core.SelectField{
|
&core.SelectField{
|
||||||
Name: models.CONTENT_TYPE_FIELD,
|
Name: dbmodels.CONTENT_TYPE_FIELD,
|
||||||
Required: false,
|
Required: false,
|
||||||
Values: models.CONTENT_TYPE_VALUES,
|
Values: dbmodels.CONTENT_TYPE_VALUES,
|
||||||
MaxSelect: len(models.CONTENT_TYPE_VALUES),
|
MaxSelect: len(dbmodels.CONTENT_TYPE_VALUES),
|
||||||
},
|
},
|
||||||
|
|
||||||
// Physical Description
|
// Physical Description
|
||||||
&core.TextField{Name: models.EXTENT_FIELD, Required: false},
|
&core.TextField{Name: dbmodels.EXTENT_FIELD, Required: false},
|
||||||
&core.TextField{Name: models.DIMENSIONS_FIELD, Required: false},
|
&core.TextField{Name: dbmodels.DIMENSIONS_FIELD, Required: false},
|
||||||
&core.SelectField{
|
&core.SelectField{
|
||||||
Name: models.MEDIA_TYPE_FIELD,
|
Name: dbmodels.MEDIA_TYPE_FIELD,
|
||||||
Required: false,
|
Required: false,
|
||||||
Values: models.MEDIA_TYPE_VALUES,
|
Values: dbmodels.MEDIA_TYPE_VALUES,
|
||||||
MaxSelect: len(models.MEDIA_TYPE_VALUES),
|
MaxSelect: len(dbmodels.MEDIA_TYPE_VALUES),
|
||||||
},
|
},
|
||||||
&core.SelectField{
|
&core.SelectField{
|
||||||
Name: models.CARRIER_TYPE_FIELD,
|
Name: dbmodels.CARRIER_TYPE_FIELD,
|
||||||
Required: false,
|
Required: false,
|
||||||
Values: models.CARRIER_TYPE_VALUES,
|
Values: dbmodels.CARRIER_TYPE_VALUES,
|
||||||
MaxSelect: len(models.CARRIER_TYPE_VALUES),
|
MaxSelect: len(dbmodels.CARRIER_TYPE_VALUES),
|
||||||
},
|
},
|
||||||
|
|
||||||
// Musenalm specific data
|
// Musenalm specific data
|
||||||
&core.SelectField{
|
&core.SelectField{
|
||||||
Name: models.MUSENALM_INHALTE_TYPE_FIELD,
|
Name: dbmodels.MUSENALM_INHALTE_TYPE_FIELD,
|
||||||
Required: false,
|
Required: false,
|
||||||
Values: models.MUSENALM_TYPE_VALUES,
|
Values: dbmodels.MUSENALM_TYPE_VALUES,
|
||||||
MaxSelect: len(models.MUSENALM_TYPE_VALUES),
|
MaxSelect: len(dbmodels.MUSENALM_TYPE_VALUES),
|
||||||
},
|
},
|
||||||
&core.SelectField{
|
&core.SelectField{
|
||||||
Name: models.MUSENALM_PAGINATION_FIELD,
|
Name: dbmodels.MUSENALM_PAGINATION_FIELD,
|
||||||
Required: false,
|
Required: false,
|
||||||
Values: models.MUSENALM_PAGINATION_VALUES,
|
Values: dbmodels.MUSENALM_PAGINATION_VALUES,
|
||||||
MaxSelect: len(models.MUSENALM_PAGINATION_VALUES),
|
MaxSelect: len(dbmodels.MUSENALM_PAGINATION_VALUES),
|
||||||
},
|
},
|
||||||
&core.FileField{
|
&core.FileField{
|
||||||
Name: models.SCAN_FIELD,
|
Name: dbmodels.SCAN_FIELD,
|
||||||
Required: false,
|
Required: false,
|
||||||
MaxSize: 100 * 1024 * 1024,
|
MaxSize: 100 * 1024 * 1024,
|
||||||
MaxSelect: 1000,
|
MaxSelect: 1000,
|
||||||
MimeTypes: models.MUSENALM_MIME_TYPES,
|
MimeTypes: dbmodels.MUSENALM_MIME_TYPES,
|
||||||
Thumbs: []string{"0x300", "0x500", "0x1000", "300x0", "500x0", "1000x0"},
|
Thumbs: []string{"0x300", "0x500", "0x1000", "300x0", "500x0", "1000x0"},
|
||||||
}, // 100 MB a file
|
}, // 100 MB a file
|
||||||
|
|
||||||
// Band:
|
// Band:
|
||||||
&core.NumberField{Name: models.NUMBERING_FIELD, Required: false},
|
&core.NumberField{Name: dbmodels.NUMBERING_FIELD, Required: false},
|
||||||
&core.RelationField{
|
&core.RelationField{
|
||||||
Name: models.ENTRIES_TABLE,
|
Name: dbmodels.ENTRIES_TABLE,
|
||||||
Required: true,
|
Required: true,
|
||||||
CollectionId: entries.Id,
|
CollectionId: entries.Id,
|
||||||
CascadeDelete: false,
|
CascadeDelete: false,
|
||||||
@@ -134,15 +134,15 @@ func partialsFields(app core.App) *core.FieldsList {
|
|||||||
|
|
||||||
func partialsIndexes(collection *core.Collection) {
|
func partialsIndexes(collection *core.Collection) {
|
||||||
addMusenalmIDIndex(collection)
|
addMusenalmIDIndex(collection)
|
||||||
addIndex(collection, models.PREFERRED_TITLE_FIELD, false)
|
addIndex(collection, dbmodels.PREFERRED_TITLE_FIELD, false)
|
||||||
addIndex(collection, models.VARIANT_TITLE_FIELD, false)
|
addIndex(collection, dbmodels.VARIANT_TITLE_FIELD, false)
|
||||||
addIndex(collection, models.PARALLEL_TITLE_FIELD, false)
|
addIndex(collection, dbmodels.PARALLEL_TITLE_FIELD, false)
|
||||||
addIndex(collection, models.TITLE_STMT_FIELD, false)
|
addIndex(collection, dbmodels.TITLE_STMT_FIELD, false)
|
||||||
addIndex(collection, models.SUBTITLE_STMT_FIELD, false)
|
addIndex(collection, dbmodels.SUBTITLE_STMT_FIELD, false)
|
||||||
addIndex(collection, models.INCIPIT_STMT_FIELD, false)
|
addIndex(collection, dbmodels.INCIPIT_STMT_FIELD, false)
|
||||||
addIndex(collection, models.RESPONSIBILITY_STMT_FIELD, false)
|
addIndex(collection, dbmodels.RESPONSIBILITY_STMT_FIELD, false)
|
||||||
addIndex(collection, models.PLACE_STMT_FIELD, false)
|
addIndex(collection, dbmodels.PLACE_STMT_FIELD, false)
|
||||||
addIndex(collection, models.PUBLICATION_STMT_FIELD, false)
|
addIndex(collection, dbmodels.PUBLICATION_STMT_FIELD, false)
|
||||||
addIndex(collection, models.YEAR_FIELD, false)
|
addIndex(collection, dbmodels.YEAR_FIELD, false)
|
||||||
addIndex(collection, models.EDITION_FIELD, false)
|
addIndex(collection, dbmodels.EDITION_FIELD, false)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,21 +1,21 @@
|
|||||||
package migrations
|
package migrations
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/Theodor-Springmann-Stiftung/musenalm/models"
|
"github.com/Theodor-Springmann-Stiftung/musenalm/dbmodels"
|
||||||
"github.com/pocketbase/pocketbase/core"
|
"github.com/pocketbase/pocketbase/core"
|
||||||
m "github.com/pocketbase/pocketbase/migrations"
|
m "github.com/pocketbase/pocketbase/migrations"
|
||||||
)
|
)
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
m.Register(func(app core.App) error {
|
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 {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
return app.Save(collections)
|
return app.Save(collections)
|
||||||
}, func(app core.App) error {
|
}, 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 {
|
if err != nil {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,21 +1,21 @@
|
|||||||
package migrations
|
package migrations
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/Theodor-Springmann-Stiftung/musenalm/models"
|
"github.com/Theodor-Springmann-Stiftung/musenalm/dbmodels"
|
||||||
"github.com/pocketbase/pocketbase/core"
|
"github.com/pocketbase/pocketbase/core"
|
||||||
m "github.com/pocketbase/pocketbase/migrations"
|
m "github.com/pocketbase/pocketbase/migrations"
|
||||||
)
|
)
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
m.Register(func(app core.App) error {
|
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 {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
return app.Save(collections)
|
return app.Save(collections)
|
||||||
}, func(app core.App) error {
|
}, 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 {
|
if err != nil {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|||||||
48
migrations/1739007272_insert_data.go
Normal file
48
migrations/1739007272_insert_data.go
Normal 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
|
||||||
|
}
|
||||||
@@ -1,30 +1,30 @@
|
|||||||
package migrations
|
package migrations
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/Theodor-Springmann-Stiftung/musenalm/models"
|
"github.com/Theodor-Springmann-Stiftung/musenalm/dbmodels"
|
||||||
"github.com/pocketbase/pocketbase/core"
|
"github.com/pocketbase/pocketbase/core"
|
||||||
"github.com/pocketbase/pocketbase/tools/types"
|
"github.com/pocketbase/pocketbase/tools/types"
|
||||||
)
|
)
|
||||||
|
|
||||||
func setBasicPublicRules(collection *core.Collection) {
|
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) {
|
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) {
|
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) {
|
func setNotesAndAnnotationsField(fieldlist *core.FieldsList) {
|
||||||
fieldlist.Add(&core.EditorField{Name: models.ANNOTATION_FIELD, Required: false, ConvertURLs: false})
|
fieldlist.Add(&core.EditorField{Name: dbmodels.ANNOTATION_FIELD, Required: false, ConvertURLs: false})
|
||||||
fieldlist.Add(&core.EditorField{Name: models.COMMENT_FIELD, Required: false, ConvertURLs: false})
|
fieldlist.Add(&core.EditorField{Name: dbmodels.COMMENT_FIELD, Required: false, ConvertURLs: false})
|
||||||
}
|
}
|
||||||
|
|
||||||
func addMusenalmIDIndex(collection *core.Collection) {
|
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) {
|
func addIndex(collection *core.Collection, field string, unique bool) {
|
||||||
@@ -43,15 +43,15 @@ func basicRelationCollection(app core.App, sourcetablename, targettablename stri
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
collection := core.NewBaseCollection(models.RelationTableName(stable.Name, ttable.Name))
|
collection := core.NewBaseCollection(dbmodels.RelationTableName(stable.Name, ttable.Name))
|
||||||
setBasicPublicRules(collection)
|
setBasicPublicRules(collection)
|
||||||
|
|
||||||
fields := core.NewFieldsList(
|
fields := core.NewFieldsList(
|
||||||
&core.RelationField{Name: stable.Name, Required: true, CollectionId: stable.Id, MinSelect: 1, MaxSelect: 1},
|
&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.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.SelectField{Name: dbmodels.RELATION_TYPE_FIELD, Required: true, Values: relations, MaxSelect: 1},
|
||||||
&core.BoolField{Name: models.RELATION_CONJECTURE_FIELD, Required: false},
|
&core.BoolField{Name: dbmodels.RELATION_CONJECTURE_FIELD, Required: false},
|
||||||
&core.BoolField{Name: models.RELATION_UNCERTAIN_FIELD, Required: false},
|
&core.BoolField{Name: dbmodels.RELATION_UNCERTAIN_FIELD, Required: false},
|
||||||
)
|
)
|
||||||
|
|
||||||
setNotesAndAnnotationsField(&fields)
|
setNotesAndAnnotationsField(&fields)
|
||||||
@@ -59,7 +59,7 @@ func basicRelationCollection(app core.App, sourcetablename, targettablename stri
|
|||||||
collection.Fields = fields
|
collection.Fields = fields
|
||||||
addIndex(collection, stable.Name, false)
|
addIndex(collection, stable.Name, false)
|
||||||
addIndex(collection, ttable.Name, false)
|
addIndex(collection, ttable.Name, false)
|
||||||
addIndex(collection, models.RELATION_TYPE_FIELD, false)
|
addIndex(collection, dbmodels.RELATION_TYPE_FIELD, false)
|
||||||
|
|
||||||
return collection, nil
|
return collection, nil
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1 +0,0 @@
|
|||||||
package migrations
|
|
||||||
41
migrations/seed/agents.go
Normal file
41
migrations/seed/agents.go
Normal 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
28
migrations/seed/common.go
Normal 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
224
migrations/seed/entries.go
Normal 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
37
migrations/seed/places.go
Normal 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
43
migrations/seed/series.go
Normal 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
100
xmlmodels/accessdb.go
Normal 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
20
xmlmodels/akteure.go
Normal 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
34
xmlmodels/baende.go
Normal 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
32
xmlmodels/biblio.go
Normal 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
25
xmlmodels/inhalte.go
Normal 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
15
xmlmodels/orte.go
Normal 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
35
xmlmodels/reihen.go
Normal 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
39
xmlmodels/relationen.go
Normal 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
3
xmlmodels/xmldata.go
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
package xmlmodels
|
||||||
|
|
||||||
|
const DATA_PATH = "data/"
|
||||||
Reference in New Issue
Block a user