Öffnungszeiten: Index idx_feature für die Erinnerungsmerker
Task 9 löscht die Merker einer Funktion per featureId; Appwrite verlangt dafür einen Index. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
4b4cd1058f
commit
2314f7d940
2 files changed
+12
-4
No files matched your search
@@ -40,10 +40,10 @@ export const ZEITEN_COLLECTIONS = {
|
||||
|
||||
// Erinnerungsmerker der Feiertags-Mail; Dokument-ID = sha1(featureId|datum) gekuerzt (anlegen mit 409 = schon
|
||||
// erinnert). datum = Kalendertag 'YYYY-MM-DD' (Berliner Zeit); der Tagesjob loescht Merker, deren Datum > 30 Tage
|
||||
// zurueckliegt (idx_datum).
|
||||
// zurueckliegt (idx_datum); idx_feature: Loeschung der Merker einer Funktion (Kunden-Loeschen).
|
||||
zeitenErinnerungen: {
|
||||
attributes: [str('featureId', 64), str('datum', 10), dt('createdAt')],
|
||||
indexes: [index('idx_datum', 'datum')],
|
||||
indexes: [index('idx_datum', 'datum'), index('idx_feature', 'featureId')],
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
@@ -113,7 +113,11 @@ test('zeitenErinnerungen: featureId, datum, createdAt', () => {
|
||||
assert.deepEqual(byKey.featureId, { key: 'featureId', type: 'string', size: 64, required: false })
|
||||
assert.deepEqual(byKey.datum, { key: 'datum', type: 'string', size: 10, required: false })
|
||||
assert.deepEqual(byKey.createdAt, { key: 'createdAt', type: 'datetime', required: false })
|
||||
assert.deepEqual(ZEITEN_COLLECTIONS.zeitenErinnerungen.indexes, [{ key: 'idx_datum', type: 'key', attributes: ['datum'] }])
|
||||
assert.deepEqual(ZEITEN_COLLECTIONS.zeitenErinnerungen.indexes, [
|
||||
{ key: 'idx_datum', type: 'key', attributes: ['datum'] },
|
||||
// Task 9 loescht die Merker einer Funktion per featureId (Appwrite verlangt dafuer einen Index)
|
||||
{ key: 'idx_feature', type: 'key', attributes: ['featureId'] },
|
||||
])
|
||||
})
|
||||
|
||||
test('portalFeatures bekommt unlockedBy(8), aboEndeAt, einbau(12), behaltenSessionId(128), k24At', () => {
|
||||
@@ -193,6 +197,7 @@ test('main legt auf leerer Datenbank 2 Collections, alle Attribute und Indizes a
|
||||
assert.deepEqual([...client.calls.indexes].sort(), [...expectedIndexes].sort())
|
||||
assert.ok(client.calls.indexes.includes('oeffnungszeiten.idx_customer'))
|
||||
assert.ok(client.calls.indexes.includes('zeitenErinnerungen.idx_datum'))
|
||||
assert.ok(client.calls.indexes.includes('zeitenErinnerungen.idx_feature'))
|
||||
assert.equal(result.missing.length, expectedAttrs.length)
|
||||
assert.deepEqual(result.missingCollections, NAMES)
|
||||
assert.equal(result.missingIndexes.length, expectedIndexes.length)
|
||||
@@ -221,7 +226,10 @@ test('main legt nur fehlende Attribute und Indizes einer vorhandenen Collection
|
||||
await main({ client, log: quiet })
|
||||
assert.ok(!client.calls.collections.some((c) => c.id === 'zeitenErinnerungen'))
|
||||
assert.deepEqual(client.calls.attrs.filter((k) => k.startsWith('zeitenErinnerungen.')), ['zeitenErinnerungen.createdAt'])
|
||||
assert.deepEqual(client.calls.indexes.filter((k) => k.startsWith('zeitenErinnerungen.')), ['zeitenErinnerungen.idx_datum'])
|
||||
assert.deepEqual(
|
||||
client.calls.indexes.filter((k) => k.startsWith('zeitenErinnerungen.')),
|
||||
['zeitenErinnerungen.idx_datum', 'zeitenErinnerungen.idx_feature'],
|
||||
)
|
||||
assert.deepEqual(
|
||||
client.calls.attrs.filter((k) => k.startsWith(`${featuresId}.`)),
|
||||
[`${featuresId}.aboEndeAt`, `${featuresId}.behaltenSessionId`, `${featuresId}.k24At`],
|
||||
|
||||
Reference in new issue
Block a user