AppGroup

Ein AppGroup-Objekt stellt eine Gruppe von zusammengehörigen Applikationen dar und hat folgende Attribute:

idString

Der eindeutige Datenbank-Identifizierer der AppGroup.

globalsGlobals

Verweist auf das Globals-Objekt, das globale Informationen enthält.

nameString

Der Name der AppGroup.

descriptionString

Der Beschreigung der AppGroup.

imageString

Das Icon für die AppGroup.

appsDictionary(String ➝ App) oder None

Dictionary mit den Apps, die zu dieser Gruppe gehören. Die Schlüssel des Dictionarys sind die internen Datenbank-Identifizierer der App und die Werte sind App-Objekte.

main_appApp oder None

Die Haupt-App dieser Gruppe.

count_records(filter)Methode(Dictonary(App ➝ String oder Liste von Strings)) ➝ Integer

Gibt die Anzahl der Datensätze zurück, die zu LivingApps dieser App-Gruppe gehören und die die vSQL-Bedingungen in filter erfüllen.

Als filter muß ein Dictionary übergeben werden mit den LivingApps als Schlüssel. Als Wert kann sowohl eine einzelne Filter-Bedingung übergeben werden, als auch eine Liste von Filter-Bedingungen. Diese werden dann mit and verknüpft. Die Filterbedingungen gelten nur für Datensätze aus der jeweiligen LivingApp, die als Schlüssel angegeben wurde. Aus LivingApps, die nicht als Schlüssel verwendet werden, werden keine Datensätze gezählt.

Folgender Aufruf gibt beispielsweise die Anzahl der in den letzten 30 Tagen angelegten Datensätze in der App-Gruppe appgroup zurück:

<?printx appgroup.count_records(
   {
      a: "r.v_createdat >= now() - days(30)"
      for a in appgroup.apps.values()
   }
)?>

Hinweis

Um alle Datensätze zu zählen, kann folgender Code verwendet werden:

<?printx record.count_records(
   {
      a: "True"
      for a in appgroup.apps.values()
   }
)?>
delete_records(filter)Methode(Dictonary(App ➝ String oder Liste von Strings)) ➝ Integer

Löscht alle Datensätze die zu LivingApps dieser App-Gruppe gehören und die die vSQL-Bedingungen in filter erfüllen und gibt die Anzahl der gelöschten Datensätze zurück.

Als filter muß ein Dictionary übergeben werden mit den untergeordneten LivingApps als Schlüssel. Als Wert kann sowohl eine einzelne Filter-Bedingung übergeben werden, als auch eine Liste von Filter-Bedingungen. Diese werden dann mit and verknüpft. Die Filterbedingungen gelten nur für Datensätze aus der jeweiligen LivingApp, die als Schlüssel angegeben wurde. Aus LivingApps, die nicht als Schlüssel verwendet werden, werden keine Datensätze gelöscht.

Record-Objekte für gelöschte Datensätze werden als gelöscht markiert.

Folgender Aufruf löscht beispielsweise alle Datensätze in der App-Gruppe appgroup, die nicht innerhalb der letzten 30 Tagen angelegt wurden (und gibt die Anzahl aus):

<?printx appgroup.delete_records(
   {
      a: "r.v_createdat < now() - days(30)"
      for a in appgroup.apps.values()
   }
)?>

Hinweis

Um alle Datensätze zu löschen, kann folgender Code verwendet werden:

<?printx appgroup.delete_records(
   {
      a: "True"
      for a in appgroup.apps.values()
   }
)?>
fetch_records(filter, sorts=None, offset=None, limit=None)Methode(Dictionary(App ➝ String oder Liste von Strings), String oder Liste von Strings oder None, Integer oder None, Integer oder None) ➝ Dictionary(String ➝ Record)

Gibt Datensätze zurück, die zu LivingApps dieser App-Gruppe gehören und die die vSQL-Bedingungen in filter erfüllen.

Als filter muß ein Dictionary übergeben werden mit den untergeordneten LivingApps als Schlüssel. Als Wert kann sowohl eine einzelne Filter-Bedingung übergeben werden, als auch eine Liste von Filter-Bedingungen. Diese werden dann mit and verknüpft. Die Filterbedingungen gelten nur für Datensätze aus der jeweiligen LivingApp, die als Schlüssel angegeben wurde. Aus LivingApps, die nicht als Schlüssel verwendet werden, werden keine Datensätze zurückgegeben.

sorts legt die Sortierreihenfolge fest. Ist sorts None oder eine leere Liste werden die Datensätze in „natürlicher“ Reihenfolge zurückgegeben, ansonsten werden die Datensätze nach diesen Such-Ausdrücken sortiert. Ist sorts ein Liste von mehreren Strings erfolgt die Sortierung lexikografisch. Ein Sortierausdruck muß ein vSQL-Ausdruck sein, optional gefolgt von asc oder desc, optional gefolgt von nulls first oder nulls last. Diese vSQL-Ausdrücke können nur Felder verwenden, die alle Datensätze gemeinsam haben, d.h. id, createdat, createdby, updatedat oder updatedby.

Ist offset nicht None muß es eine nicht-negative Zahl sein, die festlegt wieviele Datensätze in der festgelegten Reihenfolge übersprungen werden, bevor Datensätze zurückgegeben werden (d.h. z.B. daß offset=1 den ersten Datensatz überspringt). Ist offset None (oder wird nicht übergeben) werden keine Datensätze übersprungen.

Ist limit nicht None muß es eine positive Zahl sein, die festlegt wieviele Datensätze (beginnend mit dem durch offset festgelegten Start-Datensatz) insgesamt ausgegeben werden. Ist limit None (oder wird nicht übergeben) werden alle Datensätze zurückgegeben.

Der Rückgabewert ist ein Dictionary mit den Datensatz-IDs als Schlüssel und den Record-Objekten als Werte.

Folgender Aufruf benutzt das interne Template App.la_vsql_search um in allen Datensätze der App-Gruppe appgroup nach foo zu suchen, und die Datensätzn absteigend nach ihren Erzeugungsdatum zu sortieren:

<?code records = appgroup.fetch_records(
   {
      a: a.t_la_vsql_search("r", "foo")
      for a in appgroup.apps.values()
   },
   ["r.createdat desc"],
)?>

Und folgender Aufruf gibt den neuesten geänderten Datensatz aller App in der App-Gruppe appgroup zurück:

<?code record = first(appgroup.fetch_records(
   {
      c: "r.updatedat is not None"
      for a in appgroup.apps.values()
   },
   "r.createdat desc",
   limit=1,
).values())?>
fetch_recordpage(filter, sorts=None, offset=None, limit=None)Methode(Dictionary(App ➝ String oder Liste von Strings), String oder Liste von Strings oder None, Integer oder None, Integer oder None) ➝ AppGroupRecordPage

Gibt Datensätze zurück, die zu LivingApps dieser App-Gruppe gehören und die die vSQL-Bedingungen in filter erfüllen.

Die Parameter haben dieselbe Bedeutung wie bei fetch_records(), jedoch wird das Resultat als AppGroupRecordPage-Objekt zurückgegeben und nicht direkt als Dictionary.