PageRenderTime 53ms CodeModel.GetById 29ms RepoModel.GetById 0ms app.codeStats 0ms

/Source/facebook.Linq/Linq/Provider.cs

https://bitbucket.org/assaframan/facebooklinq
C# | 72 lines | 54 code | 11 blank | 7 comment | 4 complexity | 542e79c31548c959b4d1971b4cf6fc67 MD5 | raw file
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Linq.Expressions;
  6. using System.Data.Linq;
  7. using System.Collections;
  8. using facebook.Linq;
  9. using facebook;
  10. namespace facebook.Linq
  11. {
  12. class FqlProvider : IFqlProvider
  13. {
  14. public FqlProvider(API api)
  15. {
  16. Api = api;
  17. }
  18. API Api;
  19. #region IMyProvider Members
  20. public System.Data.Linq.IExecuteResult Execute(System.Linq.Expressions.Expression query, Type tableRowType)
  21. {
  22. var builder = new FqlQueryBuilder(query);
  23. var fql = builder.BuildQuery();
  24. var resultType = query.Type;//
  25. if (resultType.IsGenericType)
  26. resultType = resultType.GetGenericArguments()[0];
  27. if (fql.StartsWith("from "))
  28. fql = "select * " + fql;
  29. //QueryBuilder2
  30. //var builder = new FqlQueryBuilder(query);
  31. //var fql = builder.BuildQuery();
  32. //var select = builder.Select;
  33. //var resultType = query.Type.GetGenericArguments()[0];
  34. fql = FqlDataContext.FixQuery(fql);
  35. var response = ExecuteFqlQuery(fql);
  36. return new FqlExecuteResult(response, resultType, tableRowType, builder.QueryOptions);
  37. }
  38. public string GetQueryText(System.Linq.Expressions.Expression query)
  39. {
  40. var builder = new FqlQueryBuilder(query);
  41. var fql = builder.BuildQuery();
  42. return fql;
  43. }
  44. public SqlNode GetSqlTree(Expression query)
  45. {
  46. //var builder = new FqlQueryBuilder2(query);
  47. //return builder.GetSqlExpressionTree();
  48. throw new Exception();
  49. }
  50. #endregion
  51. #region IFqlProvider Members
  52. public System.IO.TextWriter Log{get;set;}
  53. public string ExecuteFqlQuery(string query)
  54. {
  55. if (Log != null)
  56. Log.WriteLine("Executing Fql: " + query);
  57. return Api.fql.query(query);
  58. }
  59. #endregion
  60. }
  61. }