AppGroup
Ein AppGroup-Objekt stellt eine Gruppe von zusammengehörigen Applikationen dar und hat folgende Attribute:
idStringDer eindeutige Datenbank-Identifizierer der
AppGroup.globalsGlobalsVerweist auf das
Globals-Objekt, das globale Informationen enthält.nameStringDer Name der
AppGroup.descriptionStringDer Beschreigung der
AppGroup.imageStringDas Icon für die
AppGroup.appsDictionary(String ➝ App) oderNoneDictionary mit den Apps, die zu dieser Gruppe gehören. Die Schlüssel des Dictionarys sind die internen Datenbank-Identifizierer der
Appund die Werte sindApp-Objekte.main_appApp oderNoneDie Haupt-App dieser Gruppe.
count_records(filter)Methode(Dictonary(App ➝ String oder Liste von Strings)) ➝ IntegerGibt die Anzahl der Datensätze zurück, die zu LivingApps dieser App-Gruppe gehören und die die vSQL-Bedingungen in
filtererfüllen.Als
filtermuß 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 mitandverknü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
appgroupzurü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)) ➝ IntegerLöscht alle Datensätze die zu LivingApps dieser App-Gruppe gehören und die die vSQL-Bedingungen in
filtererfüllen und gibt die Anzahl der gelöschten Datensätze zurück.Als
filtermuß 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 mitandverknü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 oderNone, Integer oderNone, Integer oderNone) ➝ Dictionary(String ➝ Record)Gibt Datensätze zurück, die zu LivingApps dieser App-Gruppe gehören und die die vSQL-Bedingungen in
filtererfüllen.Als
filtermuß 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 mitandverknü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.sortslegt die Sortierreihenfolge fest. IstsortsNoneoder eine leere Liste werden die Datensätze in „natürlicher“ Reihenfolge zurückgegeben, ansonsten werden die Datensätze nach diesen Such-Ausdrücken sortiert. Istsortsein Liste von mehreren Strings erfolgt die Sortierung lexikografisch. Ein Sortierausdruck muß ein vSQL-Ausdruck sein, optional gefolgt vonascoderdesc, optional gefolgt vonnulls firstodernulls last. Diese vSQL-Ausdrücke können nur Felder verwenden, die alle Datensätze gemeinsam haben, d.h.id,createdat,createdby,updatedatoderupdatedby.Ist
offsetnichtNonemuß 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=1den ersten Datensatz überspringt). IstoffsetNone(oder wird nicht übergeben) werden keine Datensätze übersprungen.Ist
limitnichtNonemuß es eine positive Zahl sein, die festlegt wieviele Datensätze (beginnend mit dem durchoffsetfestgelegten Start-Datensatz) insgesamt ausgegeben werden. IstlimitNone(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_searchum in allen Datensätze der App-Gruppeappgroupnachfoozu 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
appgroupzurü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 oderNone, Integer oderNone, Integer oderNone) ➝ AppGroupRecordPageGibt Datensätze zurück, die zu LivingApps dieser App-Gruppe gehören und die die vSQL-Bedingungen in
filtererfüllen.Die Parameter haben dieselbe Bedeutung wie bei fetch_records(), jedoch wird das Resultat als AppGroupRecordPage-Objekt zurückgegeben und nicht direkt als Dictionary.