소스 검색

Modul SchildErweitert eingeführt, um Namespace sauber zu halten

hmt 9 년 전
부모
커밋
b119d4d51f
3개의 변경된 파일55개의 추가작업 그리고 23개의 파일을 삭제
  1. 8 0
      README.md
  2. 46 22
      lib/schild.rb
  3. 1 1
      specs/spec_helper.rb

+ 8 - 0
README.md

@@ -62,6 +62,14 @@ require 'schild'
 include Schild
 ```
 
+Um jedoch alle Hilfsmethoden nutzen zu können, die das `schild`-Gem zur
+Verfügung stellt, noch besser folgenden Befehl verwenden, der seit
+Version 0.4.0 zur Verfügung steht:
+
+```ruby
+include SchildErweitert
+```
+
 Jetzt können praktisch alle Tabellen abgerufen und Daten ausgelesen werden. Dabei ist das DB-Objekt die Datenbank:
 
 ```ruby

+ 46 - 22
lib/schild.rb

@@ -67,10 +67,48 @@ module Schild
 
   # Stellt die Schüler-Tabelle samt Assoziationen bereit.
   class Schueler < Sequel::Model(:schueler)
-    include SchildTypeSaver
-
     many_to_one :fachklasse, :class => :Fachklasse, :key => :Fachklasse_ID
     one_to_many :abschnitte, :class => :Abschnitt
+  end
+
+  # Dient als Assoziation für Schüler und deren Klassenbezeichnung etc.
+  class Fachklasse < Sequel::Model(:eigeneschule_fachklassen)
+    one_to_many :schueler
+  end
+
+  # Assoziation für Lehrer, hauptsächlich für Klassenlehrer
+  class Klassenlehrer < Sequel::Model(:k_lehrer)
+    one_to_one :abschnitt, :primary_key=>:Kuerzel, :key=>:KlassenLehrer
+  end
+
+  # Ist die Assoziation, die Halbjahre, sog. Abschnitte zurückgibt.
+  class Abschnitt < Sequel::Model(:schuelerlernabschnittsdaten)
+    many_to_one :schueler, :class => :Schueler, :key => :Schueler_ID
+    one_to_many :noten, :class => :Noten
+    many_to_one :klassenlehrer, :class => :Klassenlehrer, :primary_key=>:Kuerzel, :key=>:KlassenLehrer
+  end
+
+  # Assoziation für Noten
+  class Noten < Sequel::Model(:schuelerleistungsdaten)
+    many_to_one :abschnitt, :class => :Abschnitt, :key => :Abschnitt_ID
+    many_to_one :fach, :class => :Faecher, :key => :Fach_ID
+  end
+
+  # Assoziation für Fächer
+  class Faecher < Sequel::Model(:eigeneschule_faecher)
+    one_to_one :noten
+  end
+
+  # Schul-Tabelle
+  class Schule < Sequel::Model(:eigeneschule)
+  end
+end
+
+module SchildErweitert
+  include Schild
+  # Stellt die Schüler-Tabelle samt Assoziationen bereit.
+  class Schueler < Schild::Schueler
+    include SchildTypeSaver
 
     # gibt das z.Zt. aktuelle Halbjahr zurück.
     def akt_halbjahr
@@ -129,27 +167,19 @@ module Schild
   end
 
   # Dient als Assoziation für Schüler und deren Klassenbezeichnung etc.
-  class Fachklasse < Sequel::Model(:eigeneschule_fachklassen)
+  class Fachklasse < Schild::Fachklasse
     include SchildTypeSaver
-
-    one_to_many :schueler
   end
 
   # Assoziation für Lehrer, hauptsächlich für Klassenlehrer
-  class Klassenlehrer < Sequel::Model(:k_lehrer)
+  class Klassenlehrer < Schild::Klassenlehrer
     include SchildTypeSaver
-
-    one_to_one :abschnitt, :primary_key=>:Kuerzel, :key=>:KlassenLehrer
   end
 
   # Ist die Assoziation, die Halbjahre, sog. Abschnitte zurückgibt.
-  class Abschnitt < Sequel::Model(:schuelerlernabschnittsdaten)
+  class Abschnitt < Schild::Abschnitt
     include SchildTypeSaver
 
-    many_to_one :schueler, :class => :Schueler, :key => :Schueler_ID
-    one_to_many :noten, :class => :Noten
-    many_to_one :klassenlehrer, :class => :Klassenlehrer, :primary_key=>:Kuerzel, :key=>:KlassenLehrer
-
     dataset_module do
       # filtert den Datensatz nach Jahr
       def jahr(i)
@@ -212,12 +242,9 @@ module Schild
   end
 
   # Assoziation für Noten
-  class Noten < Sequel::Model(:schuelerleistungsdaten)
+  class Noten < Schild::Noten
     include SchildTypeSaver
 
-    many_to_one :abschnitt, :class => :Abschnitt, :key => :Abschnitt_ID
-    many_to_one :fach, :class => :Faecher, :key => :Fach_ID
-
     # Notenbezeichnung als String
     def note
       case self.noten_krz
@@ -256,14 +283,12 @@ module Schild
   end
 
   # Assoziation für Fächer
-  class Faecher < Sequel::Model(:eigeneschule_faecher)
+  class Faecher < Schild::Faecher
     include SchildTypeSaver
-
-    one_to_one :noten
   end
 
   # Schul-Tabelle mit vereinfachtem Zugriff auf Datenfelder.
-  class Schule < Sequel::Model(:eigeneschule)
+  class Schule < Schild::Schule
     include SchildTypeSaver
 
     # gibt die Schulnummer zurück
@@ -284,4 +309,3 @@ module Schild
     end
   end
 end
-

+ 1 - 1
specs/spec_helper.rb

@@ -6,4 +6,4 @@ require 'envyable'
 Envyable.load('./config/env.yml', 'local_test')
 
 require 'schild'
-include Schild
+include SchildErweitert