CSharpCommonTableRepositoryGenerater.cs 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. namespace etoy
  2. {
  3. class CSharpCommonTableRepositoryGenerater : IGenerater
  4. {
  5. const string CLASS_TAIL = "TableRepo";
  6. const string TABLE_CLASS = "Table";
  7. const string RELATIVE_PATH = "Repositories";
  8. public void Generate(Context context)
  9. {
  10. var tables = context.Blackboard.Tables;
  11. foreach (var table in tables)
  12. {
  13. if (table.TableTag.HasFlag(TableTag.Client))
  14. GenSingle(context, table);
  15. }
  16. }
  17. void GenSingle(Context context, Table table)
  18. {
  19. string csharpTypeName = table.Name + CLASS_TAIL;
  20. var tableClassName = table.Name + TABLE_CLASS;
  21. string fileName = $"{csharpTypeName}.cs";
  22. string directory = Path.Combine(context.Option.ClientCodeOutput, RELATIVE_PATH).ToPath();
  23. if (!Directory.Exists(directory))
  24. Directory.CreateDirectory(directory);
  25. string path = Path.Combine(directory, fileName);
  26. using CodeWriter writer = new CodeWriter(path);
  27. // using
  28. writer.WriteLine("// Generate By EToy");
  29. writer.WriteLine("// Don't Edit It!!");
  30. writer.WriteLine();
  31. writer.WriteLine("using XGame.Framework.Database;");
  32. writer.WriteLine();
  33. writer.WriteLine();
  34. // namespace
  35. writer.Bracket("namespace XGame.Database");
  36. {
  37. // class
  38. writer.Bracket($"public partial class {csharpTypeName} : TableRepository<{tableClassName}, {csharpTypeName}>");
  39. {
  40. }
  41. writer.EndBracket();
  42. }
  43. writer.EndBracket();
  44. }
  45. }
  46. }